class Dslable::Generators::ProductCodes::Core

Constants

CORE_TEMPLATE

Attributes

dsl[RW]

Public Class Methods

new(_dsl) click to toggle source
== initialize core
=== Params
  • _dsl: input from dsl

# File lib/generators/product_codes/core.rb, line 55
def initialize(_dsl)
  fail InvalidDslError.new('dls not allow nil') if _dsl.nil?
  @dsl = _dsl
end

Public Instance Methods

generate() click to toggle source
# File lib/generators/product_codes/core.rb, line 60
def generate
  gem_name_camel = @dsl.camelized_gem_name
  gem_name_upper = @dsl._gem_name.upcase
  dsl_file_name = "#{@dsl._gem_name.camelize.downcase.camelize}file"
  fields = get_fields

  core_src = adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, @dsl._gem_name)
  generate_core_src core_src
end

Private Instance Methods

adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, gem_name) click to toggle source
# File lib/generators/product_codes/core.rb, line 134
def adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, gem_name)
  erb = ERB.new(CORE_TEMPLATE)
  erb.result(binding)
end
generate_core_src(core_src) click to toggle source
# File lib/generators/product_codes/core.rb, line 139
def generate_core_src(core_src)
  File.open("./lib/#{@dsl._gem_name}_core.rb", 'w') { |f|f.puts core_src }
end
get_default(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 106
def get_default(field)
  klass = field._args._klass
  default_value = field._args._default_value
  if default_value.nil?
    method("nil_default_#{klass.to_s.downcase}").call
  else
    default_value = default_value.to_s.delete!('{').delete!('}') if field._args._klass == Hash
    klass == String ? "\"#{default_value}\"" : default_value
  end
end
get_field_call(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 102
def get_field_call(field)
  "#{field._field_name} #{get_default(field)}"
end
get_field_default(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 98
def get_field_default(field)
  "# #{field._args._args_name}'s default value => #{get_default(field)}"
end
get_field_desc(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 86
def get_field_desc(field)
  "# #{field._desc}"
end
get_field_klass(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 94
def get_field_klass(field)
  "# #{field._args._args_name} allow only #{field._args._klass}"
end
get_field_required(field) click to toggle source
# File lib/generators/product_codes/core.rb, line 90
def get_field_required(field)
  "# #{field._args._args_name} is required"
end
get_fields() click to toggle source
# File lib/generators/product_codes/core.rb, line 71
def get_fields
  field_dsls_all = []
  @dsl.fields.each do |field|
    field_dsls = []
    field_dsls << get_field_desc(field)
    field_dsls << get_field_required(field) if field._args._required
    field_dsls << get_field_klass(field)
    field_dsls << get_field_default(field) unless field._args._default_value.nil?
    field_dsls << get_field_call(field)
    field_dsls << ['']
    field_dsls_all << field_dsls.join("\n")
  end
  field_dsls_all.join("\n")
end
nil_default_array() click to toggle source
# File lib/generators/product_codes/core.rb, line 121
def nil_default_array
  ['your value']
end
nil_default_boolean() click to toggle source
# File lib/generators/product_codes/core.rb, line 130
def nil_default_boolean
  false
end
nil_default_hash() click to toggle source
# File lib/generators/product_codes/core.rb, line 125
def nil_default_hash
  ret = { 'your key' => 'your value' }.to_s.delete!('{').delete!('}')
  ret
end
nil_default_string() click to toggle source
# File lib/generators/product_codes/core.rb, line 117
def nil_default_string
  "\"your value\""
end