Class: Divine::JavascriptGenerator

Inherits:
JavascriptHelperMethods show all
Defined in:
lib/divine/code_generators/javascript.rb

Overview

Responsible for generating Divine and structs functions

Instance Method Summary collapse

Methods inherited from JavascriptHelperMethods

#get_header_comment, #javascript_base_class_template_str, #javascript_class_template, #javascript_deserialize_internal, #javascript_get_empty_declaration, #javascript_serialize_internal

Methods inherited from BabelHelperMethods

#camelize, #format_src, #get_fresh_variable_name, #get_header_comment_text, #sanity_check

Instance Method Details

#generate_code(structs, opts) ⇒ Object

Generate JS Functions

  • Args :

    • structs -> Dictionary of structs

    • opts -> Dictionary that contains generation params [file, debug, parent_class, target_dir]



764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
# File 'lib/divine/code_generators/javascript.rb', line 764

def generate_code(structs, opts)
  $debug_javascript = true if opts[:debug]
  base_template = Erubis::Eruby.new(javascript_base_class_template_str)
  keys = structs.keys.sort
  src = keys.map do |k|
    ss = structs[k]
    # Check different aspects the the structs
    vss = sanity_check(ss)
    javascript_class_template(StructHandler.new(vss))
  end

  # User defined super class?
  toplevel = opts[:parent_class] || nil
  toplevel = " < #{toplevel}" if toplevel 
  return [{file: opts[:file], src: "#{javascript_get_begin_module(opts)}#{base_template.result({ toplevel_class: toplevel })}\n\n#{src.join("\n\n")}#{javascript_get_end_module(opts)}"}]
end

#javascript_get_begin_module(opts) ⇒ Object

Build Header Comments



784
785
786
# File 'lib/divine/code_generators/javascript.rb', line 784

def javascript_get_begin_module(opts)
   "#{get_header_comment}\n\n"
end

#javascript_get_end_module(opts) ⇒ Object

Do nothing



789
790
791
# File 'lib/divine/code_generators/javascript.rb', line 789

def javascript_get_end_module(opts)
  nil
end