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]
-
642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 |
# File 'lib/divine/code_generators/java.rb', line 642 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
681 682 683 684 685 686 687 688 689 690 691 692 693 |
# File 'lib/divine/code_generators/java.rb', line 681 def get_java_imports [ "java.io.ByteArrayInputStream", "java.io.ByteArrayOutputStream", "java.io.IOException", "java.util.ArrayList", "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’
671 672 673 674 675 676 677 |
# File 'lib/divine/code_generators/java.rb', line 671 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 |