Class: GoonModelGen::Builder::ConverterBuilder
- Inherits:
-
AbstractBuilder
- Object
- AbstractBuilder
- GoonModelGen::Builder::ConverterBuilder
- Defined in:
- lib/goon_model_gen/builder/converter_builder.rb
Instance Attribute Summary collapse
-
#loader ⇒ Object
readonly
Returns the value of attribute loader.
-
#packages ⇒ Object
readonly
Returns the value of attribute packages.
Attributes inherited from AbstractBuilder
#base_package_path, #config, #package_suffix
Instance Method Summary collapse
- #build(conv_file_paths) ⇒ Object
- #build_package(pkgs, conv_file) ⇒ Array<Proc>
-
#initialize(config, loader, packages) ⇒ ConverterBuilder
constructor
A new instance of ConverterBuilder.
- #resolve_type_names(pkgs) ⇒ Object
Methods inherited from AbstractBuilder
#build_sentences, #build_sentences_with, #method_to_template_for, #method_to_template_map, #templates_for
Constructor Details
#initialize(config, loader, packages) ⇒ ConverterBuilder
Returns a new instance of ConverterBuilder.
21 22 23 24 25 26 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 21 def initialize(config, loader, packages) super(config, config.converter_package_path) @package_suffix = "_conv" @loader = loader @packages = packages end |
Instance Attribute Details
#loader ⇒ Object (readonly)
Returns the value of attribute loader.
15 16 17 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 15 def loader @loader end |
#packages ⇒ Object (readonly)
Returns the value of attribute packages.
16 17 18 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 16 def packages @packages end |
Instance Method Details
#build(conv_file_paths) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 29 def build(conv_file_paths) Golang::Packages.new.tap do |pkgs| build_sentences = [] conv_file_paths.each do |conv_file_path| conf_file = loader.process(conv_file_path) procs = build_package(pkgs, conf_file) build_sentences.concat(procs) end resolve_type_names(pkgs) build_sentences.each(&:call) end end |
#build_package(pkgs, conv_file) ⇒ Array<Proc>
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 45 def build_package(pkgs, conv_file) procs = [] pkgs.new_package(conv_file.converter_package_path).tap do |pkg| { 'converter/payload' => conv_file.payload_convs, 'converter/result' => conv_file.result_convs, }.each do |template_dir, convs| convs.each do |conv| conv_type = pkg.new_combination_type(conv.name).tap do |t| m = conv.model g = conv.gen_type t.add(:model, m.name, m.package_path, m.package_base_path) t.add(:gen_type, g.name, g.package_path, g.package_base_path) t.memo['base_conv_func'] = (m.ordinary_name == g.ordinary_name) ? "#{m.ordinary_name}ToResult" : "#{m.ordinary_name}To#{g.ordinary_name}" t.memo['slice_conv_func'] = (m.ordinary_name == g.ordinary_name) ? "#{m.ordinary_name}SliceToResultSlice" : "#{m.ordinary_name}SliceTo#{g.ordinary_name}Slice" t.memo['mappings'] = conv.mappings unless conv.model.slice_with_ptr.nil? t.memo['model_slice_with_ptr'] = conv.model.slice_with_ptr end end procs << Proc.new{ build_sentences_with(template_dir, conv_type, nil) } end end end return procs end |
#resolve_type_names(pkgs) ⇒ Object
73 74 75 |
# File 'lib/goon_model_gen/builder/converter_builder.rb', line 73 def resolve_type_names(pkgs) pkgs.resolve_type_names(Golang::DatastorePackageFactory.new(config.package_alias_map).packages.dup.add(packages)) end |