class Dslable::Generators::ProductCodes::Dsl
Constants
- DSL_TEMPLATE
Attributes
dsl[RW]
Public Class Methods
new(_dsl)
click to toggle source
== initialize dsl === Params
-
_dsl: input from dsl
# File lib/generators/product_codes/dsl.rb, line 45 def initialize(_dsl) fail InvalidDslError.new('dsl not allow nil') if _dsl.nil? @dsl = _dsl end
Public Instance Methods
generate()
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 50 def generate dsl_src = adapt_template(@dsl.camelized_gem_name, get_string_fields, get_other_fields, get_set_defaults) generate_dsl_src dsl_src end
Private Instance Methods
adapt_template(gem_name_camel, string_fields, array_hash_fields, set_defaults)
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 83 def adapt_template(gem_name_camel, string_fields, array_hash_fields, set_defaults) gem_name = @dsl._gem_name erb = ERB.new(DSL_TEMPLATE) erb.result(binding) end
generate_dsl_src(dsl_src)
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 89 def generate_dsl_src(dsl_src) File.open("./lib/#{@dsl._gem_name}_dsl.rb", 'w') { |f|f.puts dsl_src } end
get_other_fields()
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 64 def get_other_fields fields = [] @dsl.fields.each do |field| fields << ":#{field._field_name}" unless field._args._klass == String end fields.join(', ') end
get_set_defaults()
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 72 def get_set_defaults set_defaults = [] gem_name = @dsl._gem_name @dsl.fields.each_with_index do |field, index| next if field._args._default_value.nil? default_value = field._args._klass == String ? "'#{field._args._default_value}'" : field._args._default_value set_defaults << " @#{gem_name}.#{field._field_name} = #{default_value}" end set_defaults.join("\n") end
get_string_fields()
click to toggle source
# File lib/generators/product_codes/dsl.rb, line 56 def get_string_fields fields = [] @dsl.fields.each do |field| fields << ":#{field._field_name}" if field._args._klass == String end fields.join(', ') end