dslable 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +856 -0
- data/Rakefile +1 -0
- data/bin/dslable +30 -0
- data/dslable.gemspec +29 -0
- data/lib/dslable/version.rb +3 -0
- data/lib/dslable_args.rb +44 -0
- data/lib/dslable_core.rb +79 -0
- data/lib/dslable_dsl.rb +50 -0
- data/lib/dslable_field.rb +36 -0
- data/lib/generators/gem_template.rb +24 -0
- data/lib/generators/generators.rb +6 -0
- data/lib/generators/product_codes/cli.rb +74 -0
- data/lib/generators/product_codes/core.rb +134 -0
- data/lib/generators/product_codes/dsl.rb +94 -0
- data/lib/generators/product_codes/dsl_model.rb +63 -0
- data/lib/generators/rspec/spec_template.rb +21 -0
- data/lib/generators/rspec/specs.rb +27 -0
- data/lib/generators/settings/gemfile.rb +33 -0
- data/spec/dslable_args_spec.rb +262 -0
- data/spec/dslable_core_spec.rb +175 -0
- data/spec/dslable_dsl_spec.rb +235 -0
- data/spec/dslable_field_spec.rb +116 -0
- data/spec/generators/gem_template_spec.rb +52 -0
- data/spec/generators/product_codes/cli_spec.rb +111 -0
- data/spec/generators/product_codes/core_spec.rb +139 -0
- data/spec/generators/product_codes/dsl_model_spec.rb +109 -0
- data/spec/generators/product_codes/dsl_spec.rb +110 -0
- data/spec/generators/rspec/spec_template_spec.rb +54 -0
- data/spec/generators/rspec/specs_spec.rb +56 -0
- data/spec/generators/settings/gemfile_spec.rb +78 -0
- data/spec/spec_helper.rb +8 -0
- metadata +173 -0
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/dslable
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
require 'dslable/version'
|
4
|
+
require 'dslable_core'
|
5
|
+
require "thor"
|
6
|
+
|
7
|
+
module Dslable
|
8
|
+
#= Dslable CLI
|
9
|
+
class CLI < Thor
|
10
|
+
class_option :help, :type => :boolean, :aliases => 'h', :desc => 'help message.'
|
11
|
+
class_option :version, :type => :boolean, :aliases => 'v', :desc => 'version'
|
12
|
+
|
13
|
+
desc "generate", "generate gem template"
|
14
|
+
def generate(*args)
|
15
|
+
Dslable::Core.new.generate
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "init", "generate Dsldefine template"
|
19
|
+
def init(*args)
|
20
|
+
Dslable::Core.new.init
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "version", "version"
|
24
|
+
def version
|
25
|
+
p Dslable::VERSION
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
Dslable::CLI.start(ARGV)
|
data/dslable.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dslable/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "dslable"
|
8
|
+
spec.version = Dslable::VERSION
|
9
|
+
spec.authors = ["tbpgr@tbpgr.jp"]
|
10
|
+
spec.email = ["tbpgr@tbpgr.jp"]
|
11
|
+
spec.description = %q{Dslable is generator for simple gem-code template.}
|
12
|
+
spec.summary = %q{Dslable is generator for simple gem-code template.}
|
13
|
+
spec.homepage = "https://github.com/tbpgr/dslable"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_runtime_dependency "thor", "~> 0.18.1"
|
22
|
+
spec.add_runtime_dependency "activesupport", "~> 4.0.1"
|
23
|
+
spec.add_runtime_dependency "rspec_piccolo", "~> 0.0.6"
|
24
|
+
spec.add_runtime_dependency "bundler", "~> 1.3"
|
25
|
+
spec.add_runtime_dependency "rspec", "~> 2.14.1"
|
26
|
+
|
27
|
+
spec.add_development_dependency "rake"
|
28
|
+
spec.add_development_dependency "simplecov", "~> 0.8.2"
|
29
|
+
end
|
data/lib/dslable_args.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Dslable
|
4
|
+
class Args
|
5
|
+
attr_accessor :_desc
|
6
|
+
attr_accessor :_args_name
|
7
|
+
attr_accessor :_klass
|
8
|
+
attr_accessor :_required
|
9
|
+
attr_accessor :_default_value
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@_desc = ""
|
13
|
+
@_required = false
|
14
|
+
end
|
15
|
+
|
16
|
+
def desc(_desc)
|
17
|
+
return if _desc.nil?
|
18
|
+
@_desc = _desc
|
19
|
+
end
|
20
|
+
|
21
|
+
def args_name(_args_name)
|
22
|
+
raise InvalidArgsError.new("args_name not allow nil") if _args_name.nil?
|
23
|
+
raise InvalidArgsError.new("args_name not allow empty") if _args_name.empty?
|
24
|
+
raise InvalidArgsError.new("args_name allow /^[a-z0-9_]+$/") unless _args_name =~ /^[a-z0-9_]+$/
|
25
|
+
@_args_name = _args_name
|
26
|
+
end
|
27
|
+
|
28
|
+
def klass(_klass)
|
29
|
+
raise InvalidArgsError.new("klass not allow nil") if _klass.nil?
|
30
|
+
raise InvalidArgsError.new("klass only allow String, Array and Hash") unless [String, Hash, Array].include? (_klass)
|
31
|
+
@_klass = _klass
|
32
|
+
end
|
33
|
+
|
34
|
+
def required
|
35
|
+
@_required = true
|
36
|
+
end
|
37
|
+
|
38
|
+
def default_value(_default_value)
|
39
|
+
@_default_value = _default_value
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class InvalidArgsError < StandardError;end
|
44
|
+
end
|
data/lib/dslable_core.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require "dslable/version"
|
2
|
+
require "dslable_field"
|
3
|
+
require "dslable_args"
|
4
|
+
require "dslable_dsl"
|
5
|
+
require "generators/gem_template"
|
6
|
+
require "generators/product_codes/cli"
|
7
|
+
require "generators/product_codes/core"
|
8
|
+
require "generators/product_codes/dsl"
|
9
|
+
require "generators/product_codes/dsl_model"
|
10
|
+
require "generators/rspec/spec_template"
|
11
|
+
require "generators/rspec/specs"
|
12
|
+
require "generators/settings/gemfile"
|
13
|
+
|
14
|
+
module Dslable
|
15
|
+
class Core
|
16
|
+
DSLDEFINE_FILE = "Dsldefine"
|
17
|
+
|
18
|
+
DSLDEFINE_TEMPLATE =<<-EOS
|
19
|
+
# encoding: utf-8
|
20
|
+
|
21
|
+
# set your gem name. this is use in rb-filename and class-name
|
22
|
+
gem_name "TODO: set your gem_name"
|
23
|
+
|
24
|
+
# set your bin name
|
25
|
+
bin_name "TODO: set your bin_name"
|
26
|
+
|
27
|
+
# set your dsl filed
|
28
|
+
field :field_name1 do |f|
|
29
|
+
# set your field description
|
30
|
+
f.desc "field1 description"
|
31
|
+
f.args :args_name do |a|
|
32
|
+
# set your args description
|
33
|
+
a.desc "args description"
|
34
|
+
# you can use String, Array and Hash
|
35
|
+
a.klass String
|
36
|
+
# if you want not required, comment out following line
|
37
|
+
a.required
|
38
|
+
# if you comment out following line, default => nil
|
39
|
+
a.default_value "args_value2"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# field :field_name2 do |f|
|
44
|
+
# f.desc "field2 description"
|
45
|
+
# f.args :args_name do |a|
|
46
|
+
# a.desc "args description"
|
47
|
+
# a.klass String
|
48
|
+
# a.required
|
49
|
+
# a.default_value "args_value2"
|
50
|
+
# end
|
51
|
+
# end
|
52
|
+
EOS
|
53
|
+
|
54
|
+
def init
|
55
|
+
File.open(DSLDEFINE_FILE, "w") {|f|f.puts DSLDEFINE_TEMPLATE}
|
56
|
+
end
|
57
|
+
|
58
|
+
def generate
|
59
|
+
src = read_dsl_define
|
60
|
+
# DSLからパラメータの取得
|
61
|
+
dsl = Dslable::Dsl.new
|
62
|
+
dsl.instance_eval src
|
63
|
+
Dslable::Generators::GemTemplate.new(dsl).generate
|
64
|
+
Dslable::Generators::Settings::Gemfile.new(dsl).generate
|
65
|
+
Dslable::Generators::ProductCodes::Core.new(dsl).generate
|
66
|
+
Dslable::Generators::ProductCodes::Dsl.new(dsl).generate
|
67
|
+
Dslable::Generators::ProductCodes::DslModel.new(dsl).generate
|
68
|
+
Dslable::Generators::ProductCodes::CLI.new(dsl).generate
|
69
|
+
Dslable::Generators::RSpec::SpecTemplate.new(dsl).generate
|
70
|
+
Dslable::Generators::RSpec::Specs.new(dsl).generate
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
def read_dsl_define
|
75
|
+
File.open(DSLDEFINE_FILE) {|f|f.read}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
data/lib/dslable_dsl.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'active_support/inflector'
|
3
|
+
|
4
|
+
module Dslable
|
5
|
+
class Dsl
|
6
|
+
attr_accessor :_gem_name
|
7
|
+
attr_accessor :_gem_desc
|
8
|
+
attr_accessor :_bin_name
|
9
|
+
attr_accessor :fields
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@fields = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def gem_name(_gem_name)
|
16
|
+
raise InvalidDslError.new("gem_name not allow nil") if _gem_name.nil?
|
17
|
+
raise InvalidDslError.new("gem_name not allow empty") if _gem_name.empty?
|
18
|
+
raise InvalidDslError.new("gem_name allow /^[a-z0-9_]+$/") unless _gem_name =~ /^[a-z0-9_]+$/
|
19
|
+
@_gem_name = _gem_name
|
20
|
+
end
|
21
|
+
|
22
|
+
def gem_desc(_gem_desc)
|
23
|
+
raise InvalidDslError.new("gem_desc not allow nil") if _gem_desc.nil?
|
24
|
+
raise InvalidDslError.new("gem_desc not allow empty") if _gem_desc.empty?
|
25
|
+
@_gem_desc = _gem_desc
|
26
|
+
end
|
27
|
+
|
28
|
+
def bin_name(_bin_name)
|
29
|
+
raise InvalidDslError.new("bin_name not allow nil") if _bin_name.nil?
|
30
|
+
raise InvalidDslError.new("bin_name not allow empty") if _bin_name.empty?
|
31
|
+
raise InvalidDslError.new("bin_name allow /^[a-z0-9_]+$/") unless _bin_name =~ /^[a-z0-9_]+$/
|
32
|
+
@_bin_name = _bin_name
|
33
|
+
end
|
34
|
+
|
35
|
+
def field(_field_name)
|
36
|
+
raise InvalidDslError.new("field name not allow nil") if _field_name.nil?
|
37
|
+
raise InvalidDslError.new("field name not allow empty") if _field_name.empty?
|
38
|
+
_field = Field.new
|
39
|
+
_field.field_name _field_name
|
40
|
+
yield _field
|
41
|
+
@fields << _field
|
42
|
+
end
|
43
|
+
|
44
|
+
def camelized_gem_name
|
45
|
+
_gem_name.camelize
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class InvalidDslError < StandardError;end
|
50
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "dslable_args"
|
3
|
+
|
4
|
+
module Dslable
|
5
|
+
class Field
|
6
|
+
attr_accessor :_field_name
|
7
|
+
attr_accessor :_desc
|
8
|
+
attr_accessor :_args
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@_desc = ""
|
12
|
+
end
|
13
|
+
|
14
|
+
def field_name(_name)
|
15
|
+
return if _name.nil?
|
16
|
+
@_field_name = _name
|
17
|
+
end
|
18
|
+
|
19
|
+
def desc(_desc)
|
20
|
+
return if _desc.nil?
|
21
|
+
@_desc = _desc
|
22
|
+
end
|
23
|
+
|
24
|
+
def args(args_name)
|
25
|
+
raise InvalidFieldError.new("args_name not allow nil") if args_name.nil?
|
26
|
+
raise InvalidFieldError.new("args_name not allow empty") if args_name.empty?
|
27
|
+
raise InvalidFieldError.new("args_name allow /^[a-z0-9_]+$/. your input is #{args_name}") unless args_name =~ /^[a-z0-9_]+$/
|
28
|
+
dslable_args = Dslable::Args.new
|
29
|
+
dslable_args._args_name = args_name
|
30
|
+
yield dslable_args
|
31
|
+
@_args = dslable_args
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class InvalidFieldError < StandardError;end
|
36
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'generators/generators'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module Dslable::Generators
|
6
|
+
# Dslable::Generators Gem Template Generator
|
7
|
+
class GemTemplate
|
8
|
+
attr_accessor :dsl
|
9
|
+
|
10
|
+
#== initialize generate gem template
|
11
|
+
#=== Params
|
12
|
+
#- _dsl: input from dsl
|
13
|
+
def initialize(_dsl)
|
14
|
+
@dsl = _dsl
|
15
|
+
end
|
16
|
+
|
17
|
+
#== generate gem template
|
18
|
+
def generate
|
19
|
+
`bundle gem #{@dsl._gem_name}`
|
20
|
+
Dir.chdir(@dsl._gem_name)
|
21
|
+
FileUtils.rm_rf("./lib/#{@dsl._gem_name}.rb")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "generators/generators"
|
3
|
+
require "erb"
|
4
|
+
require 'active_support/inflector'
|
5
|
+
require "dslable_dsl"
|
6
|
+
require "fileutils"
|
7
|
+
|
8
|
+
module Dslable::Generators::ProductCodes
|
9
|
+
class CLI
|
10
|
+
CLI_TEMPLATE =<<-EOF
|
11
|
+
#!/usr/bin/env ruby
|
12
|
+
# encoding: utf-8
|
13
|
+
|
14
|
+
require "<%=gem_name%>_core"
|
15
|
+
require "<%=gem_name%>/version"
|
16
|
+
require "thor"
|
17
|
+
|
18
|
+
module <%=gem_name_camel%>
|
19
|
+
#= <%=gem_name_camel%> CLI
|
20
|
+
class CLI < Thor
|
21
|
+
class_option :help, :type => :boolean, :aliases => '-h', :desc => 'help message.'
|
22
|
+
class_option :version, :type => :boolean, :desc => 'version'
|
23
|
+
|
24
|
+
desc "execute", "TODO: write your desc"
|
25
|
+
def execute
|
26
|
+
<%=gem_name_camel%>::Core.new.execute
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "init", "generate <%=dsl_file_name%>"
|
30
|
+
def init
|
31
|
+
<%=gem_name_camel%>::Core.new.init
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "version", "version"
|
35
|
+
def version
|
36
|
+
p <%=gem_name_camel%>::VERSION
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
<%=gem_name_camel%>::CLI.start(ARGV)
|
42
|
+
EOF
|
43
|
+
|
44
|
+
attr_accessor :dsl
|
45
|
+
|
46
|
+
#== initialize dsl model
|
47
|
+
#=== Params
|
48
|
+
#- _dsl: input from dsl
|
49
|
+
def initialize(_dsl)
|
50
|
+
raise InvalidDslError.new("dsl not allow nil") if _dsl.nil?
|
51
|
+
@dsl = _dsl
|
52
|
+
end
|
53
|
+
|
54
|
+
def generate
|
55
|
+
cli_src = adapt_template(@dsl.camelized_gem_name)
|
56
|
+
generate_cli_src cli_src
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
def adapt_template(gem_name_camel)
|
61
|
+
gem_name = @dsl._gem_name
|
62
|
+
dsl_file_name = "#{@dsl._gem_name.camelize.downcase.camelize}file"
|
63
|
+
erb = ERB.new(CLI_TEMPLATE)
|
64
|
+
erb.result(binding)
|
65
|
+
end
|
66
|
+
|
67
|
+
def generate_cli_src(cli_src)
|
68
|
+
FileUtils.mkdir_p("./bin") unless File.exists?("./bin")
|
69
|
+
File.open("./bin/#{@dsl._bin_name}", "w") {|f|f.puts cli_src}
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
class InvalidDslError < StandardError;end
|
74
|
+
end
|
@@ -0,0 +1,134 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "dslable_dsl"
|
3
|
+
require "generators/generators"
|
4
|
+
require "erb"
|
5
|
+
require 'active_support/inflector'
|
6
|
+
|
7
|
+
module Dslable::Generators::ProductCodes
|
8
|
+
class Core
|
9
|
+
attr_accessor :dsl
|
10
|
+
CORE_TEMPLATE =<<-END
|
11
|
+
# encoding: utf-8
|
12
|
+
require '<%=gem_name%>_dsl'
|
13
|
+
|
14
|
+
module <%=gem_name_camel%>
|
15
|
+
# <%=gem_name_camel%> Core
|
16
|
+
class Core
|
17
|
+
<%=gem_name_upper%>_FILE = "<%=dsl_file_name%>"
|
18
|
+
<%=gem_name_upper%>_TEMPLATE =<<-EOS
|
19
|
+
# encoding: utf-8
|
20
|
+
|
21
|
+
<%=fields%>
|
22
|
+
EOS
|
23
|
+
|
24
|
+
#== generate <%=dsl_file_name%> to current directory.
|
25
|
+
def init
|
26
|
+
File.open(<%=gem_name_upper%>_FILE, "w") {|f|f.puts <%=gem_name_upper%>_TEMPLATE}
|
27
|
+
end
|
28
|
+
|
29
|
+
#== TODO: write your gem's specific contents
|
30
|
+
def execute
|
31
|
+
src = read_dsl
|
32
|
+
dsl = <%=gem_name_camel%>::Dsl.new
|
33
|
+
dsl.instance_eval src
|
34
|
+
|
35
|
+
# TODO: implement your gem's specific logic
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def read_dsl
|
41
|
+
File.open(<%=gem_name_upper%>_FILE) {|f|f.read}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
END
|
46
|
+
|
47
|
+
#== initialize core
|
48
|
+
#=== Params
|
49
|
+
#- _dsl: input from dsl
|
50
|
+
def initialize(_dsl)
|
51
|
+
raise InvalidDslError.new("dls not allow nil") if _dsl.nil?
|
52
|
+
@dsl = _dsl
|
53
|
+
end
|
54
|
+
|
55
|
+
def generate
|
56
|
+
gem_name_camel = @dsl.camelized_gem_name
|
57
|
+
gem_name_upper = @dsl._gem_name.upcase
|
58
|
+
dsl_file_name = "#{@dsl._gem_name.camelize.downcase.camelize}file"
|
59
|
+
fields = get_fields
|
60
|
+
|
61
|
+
core_src = adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, @dsl._gem_name)
|
62
|
+
generate_core_src core_src
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
def get_fields
|
67
|
+
field_dsls_all = []
|
68
|
+
@dsl.fields.each do |field|
|
69
|
+
field_dsls = []
|
70
|
+
field_dsls << get_field_desc(field)
|
71
|
+
field_dsls << get_field_required(field) if field._args._required
|
72
|
+
field_dsls << get_field_klass(field)
|
73
|
+
field_dsls << get_field_default(field) unless field._args._default_value.nil?
|
74
|
+
field_dsls << get_field_call(field)
|
75
|
+
field_dsls << [""]
|
76
|
+
field_dsls_all << field_dsls.join("\n")
|
77
|
+
end
|
78
|
+
field_dsls_all.join("\n")
|
79
|
+
end
|
80
|
+
|
81
|
+
def get_field_desc(field)
|
82
|
+
"# #{field._desc}"
|
83
|
+
end
|
84
|
+
|
85
|
+
def get_field_required(field)
|
86
|
+
"# #{field._args._args_name} is required"
|
87
|
+
end
|
88
|
+
|
89
|
+
def get_field_klass(field)
|
90
|
+
"# #{field._args._args_name} allow only #{field._args._klass}"
|
91
|
+
end
|
92
|
+
|
93
|
+
def get_field_default(field)
|
94
|
+
"# #{field._args._args_name}'s default value => #{get_default(field)}"
|
95
|
+
end
|
96
|
+
|
97
|
+
def get_field_call(field)
|
98
|
+
"#{field._field_name} #{get_default(field)}"
|
99
|
+
end
|
100
|
+
|
101
|
+
def get_default(field)
|
102
|
+
klass = field._args._klass
|
103
|
+
default_value = field._args._default_value
|
104
|
+
if default_value.nil?
|
105
|
+
method("nil_default_#{klass.to_s.downcase}").call
|
106
|
+
else
|
107
|
+
klass == String ? "\"#{default_value}\"" : default_value
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def nil_default_string
|
112
|
+
"\"your value\""
|
113
|
+
end
|
114
|
+
|
115
|
+
def nil_default_array
|
116
|
+
["your value"]
|
117
|
+
end
|
118
|
+
|
119
|
+
def nil_default_hash
|
120
|
+
{"your key" => "your value"}
|
121
|
+
end
|
122
|
+
|
123
|
+
def adapt_template(gem_name_camel, gem_name_upper, dsl_file_name, fields, gem_name)
|
124
|
+
erb = ERB.new(CORE_TEMPLATE)
|
125
|
+
erb.result(binding)
|
126
|
+
end
|
127
|
+
|
128
|
+
def generate_core_src(core_src)
|
129
|
+
File.open("./lib/#{@dsl._gem_name}_core.rb", "w") {|f|f.puts core_src}
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
class InvalidDslError < StandardError;end
|
134
|
+
end
|