dslable 0.0.2 → 0.0.3
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/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
|