dslable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -7
- data/lib/dslable/version.rb +3 -3
- data/lib/dslable_args.rb +44 -44
- data/lib/dslable_core.rb +81 -81
- data/lib/dslable_dsl.rb +50 -50
- data/lib/dslable_field.rb +36 -36
- data/lib/generators/gem_template.rb +24 -24
- data/lib/generators/product_codes/cli.rb +11 -11
- data/lib/generators/product_codes/core.rb +16 -12
- data/lib/generators/product_codes/dsl.rb +14 -14
- data/lib/generators/product_codes/dsl_model.rb +10 -10
- data/lib/generators/rspec/spec_template.rb +21 -21
- data/lib/generators/rspec/specs.rb +27 -27
- data/lib/generators/settings/gemfile.rb +8 -8
- data/lib/generators/workflow.rb +76 -76
- data/spec/dslable_args_spec.rb +35 -29
- data/spec/dslable_core_spec.rb +25 -25
- data/spec/dslable_dsl_spec.rb +32 -32
- data/spec/dslable_field_spec.rb +15 -15
- data/spec/generators/gem_template_spec.rb +7 -7
- data/spec/generators/product_codes/cli_spec.rb +13 -13
- data/spec/generators/product_codes/core_spec.rb +24 -17
- data/spec/generators/product_codes/dsl_model_spec.rb +12 -12
- data/spec/generators/product_codes/dsl_spec.rb +15 -14
- data/spec/generators/rspec/spec_template_spec.rb +8 -8
- data/spec/generators/rspec/specs_spec.rb +8 -8
- data/spec/generators/settings/gemfile_spec.rb +11 -11
- data/spec/generators/workflow_spec.rb +11 -11
- data/spec/spec_helper.rb +2 -2
- metadata +16 -16
data/README.md
CHANGED
@@ -57,12 +57,12 @@ set ...
|
|
57
57
|
| desc |set your field description|
|
58
58
|
|
59
59
|
### Args DSL
|
60
|
-
| dsl | mean
|
61
|
-
|:----------- |:------------
|
62
|
-
| desc |set your args description
|
63
|
-
| klass |set your args data type. you can choose [String, Array, Hash] |
|
64
|
-
| required |if you want to set required, use this.
|
65
|
-
| default_value|if you want to set default value, use this.
|
60
|
+
| dsl | mean |
|
61
|
+
|:----------- |:------------ |
|
62
|
+
| desc |set your args description |
|
63
|
+
| klass |set your args data type. you can choose [String, Array, Hash, :Boolean] |
|
64
|
+
| required |if you want to set required, use this. |
|
65
|
+
| default_value|if you want to set default value, use this. |
|
66
66
|
|
67
67
|
## Installation
|
68
68
|
|
@@ -113,7 +113,7 @@ field :field_name1 do |f|
|
|
113
113
|
f.args :args_name do |a|
|
114
114
|
# set your args description
|
115
115
|
a.desc "args description"
|
116
|
-
# you can use String, Array and
|
116
|
+
# you can use String, Array, Hash and :Boolean
|
117
117
|
a.klass String
|
118
118
|
# if you want not required, comment out following line
|
119
119
|
a.required
|
data/lib/dslable/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
module Dslable
|
2
|
-
VERSION =
|
3
|
-
end
|
1
|
+
module Dslable
|
2
|
+
VERSION = '0.0.3'
|
3
|
+
end
|
data/lib/dslable_args.rb
CHANGED
@@ -1,44 +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
|
-
|
23
|
-
|
24
|
-
|
25
|
-
@_args_name = _args_name
|
26
|
-
end
|
27
|
-
|
28
|
-
def klass(_klass)
|
29
|
-
|
30
|
-
|
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
|
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
|
+
fail InvalidArgsError.new('args_name not allow nil') if _args_name.nil?
|
23
|
+
fail InvalidArgsError.new('args_name not allow empty') if _args_name.empty?
|
24
|
+
fail 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
|
+
fail InvalidArgsError.new('klass not allow nil') if _klass.nil?
|
30
|
+
fail InvalidArgsError.new('klass only allow String, Array, Hash and :Boolean(true or false)') unless [String, Hash, Array, :Boolean].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
CHANGED
@@ -1,81 +1,81 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
|
15
|
-
module Dslable
|
16
|
-
class Core
|
17
|
-
DSLDEFINE_FILE =
|
18
|
-
|
19
|
-
DSLDEFINE_TEMPLATE
|
20
|
-
# encoding: utf-8
|
21
|
-
|
22
|
-
# set your gem name. this is use in rb-filename and class-name
|
23
|
-
gem_name "TODO: set your gem_name"
|
24
|
-
|
25
|
-
# set your bin name
|
26
|
-
bin_name "TODO: set your bin_name"
|
27
|
-
|
28
|
-
# set your dsl filed
|
29
|
-
field :field_name1 do |f|
|
30
|
-
# set your field description
|
31
|
-
f.desc "field1 description"
|
32
|
-
f.args :args_name do |a|
|
33
|
-
# set your args description
|
34
|
-
a.desc "args description"
|
35
|
-
# you can use String, Array and
|
36
|
-
a.klass String
|
37
|
-
# if you want not required, comment out following line
|
38
|
-
a.required
|
39
|
-
# if you comment out following line, default => nil
|
40
|
-
a.default_value "args_value2"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
# field :field_name2 do |f|
|
45
|
-
# f.desc "field2 description"
|
46
|
-
# f.args :args_name do |a|
|
47
|
-
# a.desc "args description"
|
48
|
-
# a.klass String
|
49
|
-
# a.required
|
50
|
-
# a.default_value "args_value2"
|
51
|
-
# end
|
52
|
-
# end
|
53
|
-
EOS
|
54
|
-
|
55
|
-
def init
|
56
|
-
File.open(DSLDEFINE_FILE,
|
57
|
-
end
|
58
|
-
|
59
|
-
def generate
|
60
|
-
src = read_dsl_define
|
61
|
-
# DSLからパラメータの取得
|
62
|
-
dsl = Dslable::Dsl.new
|
63
|
-
dsl.instance_eval src
|
64
|
-
Dslable::Generators::GemTemplate.new(dsl).generate
|
65
|
-
Dslable::Generators::Settings::Gemfile.new(dsl).generate
|
66
|
-
Dslable::Generators::Workflow.new(dsl).generate
|
67
|
-
Dslable::Generators::ProductCodes::Core.new(dsl).generate
|
68
|
-
Dslable::Generators::ProductCodes::Dsl.new(dsl).generate
|
69
|
-
Dslable::Generators::ProductCodes::DslModel.new(dsl).generate
|
70
|
-
Dslable::Generators::ProductCodes::CLI.new(dsl).generate
|
71
|
-
Dslable::Generators::RSpec::SpecTemplate.new(dsl).generate
|
72
|
-
Dslable::Generators::RSpec::Specs.new(dsl).generate
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
def read_dsl_define
|
77
|
-
File.open(DSLDEFINE_FILE) {|f|f.read}
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
1
|
+
require 'dslable/version'
|
2
|
+
require 'dslable_field'
|
3
|
+
require 'dslable_args'
|
4
|
+
require 'dslable_dsl'
|
5
|
+
require 'generators/gem_template'
|
6
|
+
require 'generators/workflow'
|
7
|
+
require 'generators/product_codes/cli'
|
8
|
+
require 'generators/product_codes/core'
|
9
|
+
require 'generators/product_codes/dsl'
|
10
|
+
require 'generators/product_codes/dsl_model'
|
11
|
+
require 'generators/rspec/spec_template'
|
12
|
+
require 'generators/rspec/specs'
|
13
|
+
require 'generators/settings/gemfile'
|
14
|
+
|
15
|
+
module Dslable
|
16
|
+
class Core
|
17
|
+
DSLDEFINE_FILE = 'Dsldefine'
|
18
|
+
|
19
|
+
DSLDEFINE_TEMPLATE = <<-EOS
|
20
|
+
# encoding: utf-8
|
21
|
+
|
22
|
+
# set your gem name. this is use in rb-filename and class-name
|
23
|
+
gem_name "TODO: set your gem_name"
|
24
|
+
|
25
|
+
# set your bin name
|
26
|
+
bin_name "TODO: set your bin_name"
|
27
|
+
|
28
|
+
# set your dsl filed
|
29
|
+
field :field_name1 do |f|
|
30
|
+
# set your field description
|
31
|
+
f.desc "field1 description"
|
32
|
+
f.args :args_name do |a|
|
33
|
+
# set your args description
|
34
|
+
a.desc "args description"
|
35
|
+
# you can use String, Array, Hash and :Boolean
|
36
|
+
a.klass String
|
37
|
+
# if you want not required, comment out following line
|
38
|
+
a.required
|
39
|
+
# if you comment out following line, default => nil
|
40
|
+
a.default_value "args_value2"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# field :field_name2 do |f|
|
45
|
+
# f.desc "field2 description"
|
46
|
+
# f.args :args_name do |a|
|
47
|
+
# a.desc "args description"
|
48
|
+
# a.klass String
|
49
|
+
# a.required
|
50
|
+
# a.default_value "args_value2"
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
EOS
|
54
|
+
|
55
|
+
def init
|
56
|
+
File.open(DSLDEFINE_FILE, 'w') { |f|f.puts DSLDEFINE_TEMPLATE }
|
57
|
+
end
|
58
|
+
|
59
|
+
def generate
|
60
|
+
src = read_dsl_define
|
61
|
+
# DSLからパラメータの取得
|
62
|
+
dsl = Dslable::Dsl.new
|
63
|
+
dsl.instance_eval src
|
64
|
+
Dslable::Generators::GemTemplate.new(dsl).generate
|
65
|
+
Dslable::Generators::Settings::Gemfile.new(dsl).generate
|
66
|
+
Dslable::Generators::Workflow.new(dsl).generate
|
67
|
+
Dslable::Generators::ProductCodes::Core.new(dsl).generate
|
68
|
+
Dslable::Generators::ProductCodes::Dsl.new(dsl).generate
|
69
|
+
Dslable::Generators::ProductCodes::DslModel.new(dsl).generate
|
70
|
+
Dslable::Generators::ProductCodes::CLI.new(dsl).generate
|
71
|
+
Dslable::Generators::RSpec::SpecTemplate.new(dsl).generate
|
72
|
+
Dslable::Generators::RSpec::Specs.new(dsl).generate
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
def read_dsl_define
|
77
|
+
File.open(DSLDEFINE_FILE) { |f|f.read }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
data/lib/dslable_dsl.rb
CHANGED
@@ -1,50 +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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
@_gem_name = _gem_name
|
20
|
-
end
|
21
|
-
|
22
|
-
def gem_desc(_gem_desc)
|
23
|
-
|
24
|
-
|
25
|
-
@_gem_desc = _gem_desc
|
26
|
-
end
|
27
|
-
|
28
|
-
def bin_name(_bin_name)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
@_bin_name = _bin_name
|
33
|
-
end
|
34
|
-
|
35
|
-
def field(_field_name)
|
36
|
-
|
37
|
-
|
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
|
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
|
+
fail InvalidDslError.new('gem_name not allow nil') if _gem_name.nil?
|
17
|
+
fail InvalidDslError.new('gem_name not allow empty') if _gem_name.empty?
|
18
|
+
fail 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
|
+
fail InvalidDslError.new('gem_desc not allow nil') if _gem_desc.nil?
|
24
|
+
fail 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
|
+
fail InvalidDslError.new('bin_name not allow nil') if _bin_name.nil?
|
30
|
+
fail InvalidDslError.new('bin_name not allow empty') if _bin_name.empty?
|
31
|
+
fail 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
|
+
fail InvalidDslError.new('field name not allow nil') if _field_name.nil?
|
37
|
+
fail 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
|
data/lib/dslable_field.rb
CHANGED
@@ -1,36 +1,36 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require
|
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
|
-
|
26
|
-
|
27
|
-
|
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
|
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
|
+
fail InvalidFieldError.new('args_name not allow nil') if args_name.nil?
|
26
|
+
fail InvalidFieldError.new('args_name not allow empty') if args_name.empty?
|
27
|
+
fail 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
|