class Dslable::Generators::ProductCodes::DslModel
Constants
- DSL_MODEL_TEMPLATE
Attributes
dsl[RW]
Public Class Methods
new(_dsl)
click to toggle source
== initialize dsl model === Params
-
_dsl: input from dsl
# File lib/generators/product_codes/dsl_model.rb, line 30 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_model.rb, line 35 def generate dsl_model_src = adapt_template(@dsl.camelized_gem_name, get_fields) generate_dsl_model_src dsl_model_src end
Private Instance Methods
adapt_template(gem_name_camel, fields)
click to toggle source
# File lib/generators/product_codes/dsl_model.rb, line 54 def adapt_template(gem_name_camel, fields) gem_name = @dsl._gem_name erb = ERB.new(DSL_MODEL_TEMPLATE) erb.result(binding) end
generate_dsl_model_src(dsl_model_src)
click to toggle source
# File lib/generators/product_codes/dsl_model.rb, line 60 def generate_dsl_model_src(dsl_model_src) File.open("./lib/#{@dsl._gem_name}_dsl_model.rb", 'w') { |f|f.puts dsl_model_src } end
get_fields()
click to toggle source
# File lib/generators/product_codes/dsl_model.rb, line 41 def get_fields fields = [] @dsl.fields.each do |field| field_codes = [] field_codes << " # #{field._desc}" field_codes << " attr_accessor :#{field._field_name}" field_codes << " validates :#{field._field_name}, presence: true" if field._args._required field_codes << '' fields << field_codes.join("\n") end fields.join("\n") end