Class: Divine::JavaGenerator
- Inherits:
-
JavaHelperMethods
- Object
- BabelHelperMethods
- JavaHelperMethods
- Divine::JavaGenerator
- Defined in:
- lib/divine/code_generators/java.rb
Overview
Responsible for generating Divine and structs classes
Instance Method Summary collapse
-
#generate_code(structs, opts) ⇒ Object
Generate Java class(es) * Args : -
structs
-> Dictionary of structs -opts
-> Dictionary that contains generation params [file, debug, package, parent_class, target_dir]. -
#get_java_imports ⇒ Object
Generate list of imports needed in generated java classes.
-
#java_get_begin_module(opts) ⇒ Object
-
opts
-> Dictionary that contains package name in key ‘package’.
-
Methods inherited from JavaHelperMethods
#get_header_comment, #java_base_class_template_str, #java_class_template, #java_deserialize_internal, #java_get_empty_declaration, #java_get_type_declaration, #java_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 Java class(es)
-
Args :
-
structs
-> Dictionary of structs -
opts
-> Dictionary that contains generation params [file, debug, package, parent_class, target_dir]
-
635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 |
# File 'lib/divine/code_generators/java.rb', line 635 def generate_code(structs, opts) $debug_java = true if opts[:debug] base_template = Erubis::Eruby.new(java_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) java_class_template(StructHandler.new(vss)) end # User defined super class? toplevel = opts[:parent_class] || nil toplevel = " extends #{toplevel}" if toplevel if opts[:package] res = [{file: "Divine.java", src: "#{java_get_begin_module(opts)}public #{base_template.result({ toplevel_class: toplevel })}"}] for cls in src res << {file: cls.match(/class (.*) extends/)[1]+".java", src: "#{java_get_begin_module(opts)}public #{cls}"} end return res else return [{file: opts[:file], src: "#{java_get_begin_module(opts)}#{base_template.result({ toplevel_class: toplevel })}\n\n#{src.join("\n\n")}"}] end end |
#get_java_imports ⇒ Object
Generate list of imports needed in generated java classes
674 675 676 677 678 679 680 681 682 683 684 685 686 687 |
# File 'lib/divine/code_generators/java.rb', line 674 def get_java_imports [ "java.io.ByteArrayInputStream", "java.io.ByteArrayOutputStream", "java.io.IOException", "java.util.ArrayList", "java.util.Arrays", "java.util.HashMap", "java.util.regex.Pattern", "java.nio.charset.Charset" ].map do |i| "import #{i};" end.join("\n") end |
#java_get_begin_module(opts) ⇒ Object
-
opts
-> Dictionary that contains package name in key ‘package’
664 665 666 667 668 669 670 |
# File 'lib/divine/code_generators/java.rb', line 664 def java_get_begin_module(opts) str = "#{get_header_comment}\n\n" str << "package #{opts[:package]};" if opts[:package] str << get_java_imports str << "\n\n" return str end |