actionizer 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbc6064d47f58c9d86ac8c9affc380faf93177e8
4
- data.tar.gz: c5ebe99c56d627b9fbde668dfebb9429323d0fcc
3
+ metadata.gz: e42fbee7c17ec92f6707be99f052aa53a636608c
4
+ data.tar.gz: 0eb62083452a04663b8698174ed63e0a10d134fb
5
5
  SHA512:
6
- metadata.gz: 933e1fa6228e751600e00ac4553038fb8067e29a77f20e12f820668a5ca34e27e374a6896ff1eebe5596629a4b997d347a0cd8da095bf7507d8ceee108e28c42
7
- data.tar.gz: 63b679a33a98811c45984b4e5ef74e0a35f798e63571047108825364a82fe587526a5d6c9ec18e9278d903c9b81b26b35e60b6e9bd55c8eb4f759cf06a1194d0
6
+ metadata.gz: 6acb97664962b2713a995e2d41601539b064a9629683951e0fce5e9bdad1e233946dafdb6d307019a912b5afa4c8cbc3b6a294f15f988ad986558d5c53b97d72
7
+ data.tar.gz: e61bf0c0d94e76885ff20bba84ae1d56d8ee3715f22a3d1442c5940ac27d6621afc69bda621adb9d3ae9f9c9d19c7d4758c117f8929c343bed04e370f8999499
data/.rubocop.yml CHANGED
@@ -2,7 +2,11 @@ Lint/InheritException:
2
2
  Enabled: false
3
3
 
4
4
  Metrics/AbcSize:
5
- Max: 25
5
+ Max: 32
6
+ Metrics/CyclomaticComplexity:
7
+ Max: 10
8
+ Metrics/PerceivedComplexity:
9
+ Max: 10
6
10
  Metrics/LineLength:
7
11
  Max: 120
8
12
  Metrics/MethodLength:
data/.travis.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
3
+ - 2.1.0
4
4
  - 2.3.1
5
- before_install: gem install bundler -v 1.11.2
5
+ before_install: gem install bundler -v 1.13.6
6
6
  script: rubocop -D && bundle exec rspec
7
7
  addons:
8
8
  code_climate:
data/actionizer.gemspec CHANGED
@@ -26,13 +26,13 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ['lib']
28
28
 
29
- spec.required_ruby_version = '~> 2.0'
29
+ spec.required_ruby_version = '~> 2.1'
30
30
 
31
- spec.add_development_dependency 'bundler', '~> 1.11'
32
- spec.add_development_dependency 'rake', '~> 10.0'
33
- spec.add_development_dependency 'rspec', '~> 3.0'
34
- spec.add_development_dependency 'pry-byebug', '~> 3.3'
35
- spec.add_development_dependency 'rubocop', '~> 0.37'
36
- spec.add_development_dependency 'simplecov', '~> 0.11'
31
+ spec.add_development_dependency 'bundler', '~> 1.13'
32
+ spec.add_development_dependency 'rake', '~> 11.3'
33
+ spec.add_development_dependency 'rspec', '~> 3.5'
34
+ spec.add_development_dependency 'pry-byebug', '~> 3.4'
35
+ spec.add_development_dependency 'rubocop', '~> 0.45'
36
+ spec.add_development_dependency 'simplecov', '~> 0.12'
37
37
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.5'
38
38
  end
@@ -15,6 +15,11 @@ module Actionizer
15
15
  end
16
16
 
17
17
  declared_params_by_method.fetch(method_name, {}).each_pair do |param, attrs|
18
+ return "Param #{param} can't be nil" if !attrs.fetch(:null) && params[param].nil?
19
+
20
+ type = attrs.fetch(:type)
21
+ return "Param #{param} must descend from #{type}" if type && !(params[param].class <= type)
22
+
18
23
  next if !attrs.fetch(:required)
19
24
 
20
25
  return "Param #{param} is required for #{method_name}" if !params.include?(param)
@@ -32,8 +37,18 @@ module Actionizer
32
37
  @method = nil
33
38
  end
34
39
 
35
- def add(args)
36
- @declared_params_by_method[method][args.fetch(:param)] = { required: args.fetch(:required) }
40
+ def add(param:, required:, opts:)
41
+ if ![nil, true, false].include?(opts[:null])
42
+ raise ArgumentError, 'Please specify either true or false for a null option'
43
+ end
44
+
45
+ if opts[:type] && opts[:type].class != Class
46
+ raise ArgumentError, "Please specify a class for type: (#{opts[:type]} is not a class)"
47
+ end
48
+
49
+ @declared_params_by_method[method][param] = { required: required,
50
+ null: false == opts[:null] ? false : true,
51
+ type: opts.fetch(:type, nil) }
37
52
  end
38
53
 
39
54
  def no_params_declared?(method)
@@ -1,3 +1,3 @@
1
1
  module Actionizer
2
- VERSION = '0.9.0'
2
+ VERSION = '0.10.0'
3
3
  end
data/lib/actionizer.rb CHANGED
@@ -45,16 +45,22 @@ module Actionizer
45
45
  raise 'You must define at least one optional or required param' if defined_inputs.no_params_declared?(method)
46
46
  end
47
47
 
48
- def optional(param)
49
- raise 'You must call optional from inside an inputs_for block' if defined_inputs.outside_inputs_for_block?
48
+ def optional(param, opts = {})
49
+ define_input_param(false, param, opts)
50
+ end
50
51
 
51
- defined_inputs.add(param: param, required: false)
52
+ def required(param, opts = {})
53
+ define_input_param(true, param, opts)
52
54
  end
53
55
 
54
- def required(param)
55
- raise 'You must call required from inside an inputs_for block' if defined_inputs.outside_inputs_for_block?
56
+ private
57
+
58
+ def define_input_param(required, param, opts)
59
+ if defined_inputs.outside_inputs_for_block?
60
+ raise "You must call #{required ? 'required' : 'optional'} from inside an inputs_for block"
61
+ end
56
62
 
57
- defined_inputs.add(param: param, required: true)
63
+ defined_inputs.add(param: param, required: required, opts: opts)
58
64
  end
59
65
  end
60
66
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Nichols
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-20 00:00:00.000000000 Z
11
+ date: 2016-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,84 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '1.13'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '1.13'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '11.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '11.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '3.5'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '3.5'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry-byebug
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.3'
61
+ version: '3.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.3'
68
+ version: '3.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.37'
75
+ version: '0.45'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.37'
82
+ version: '0.45'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.11'
89
+ version: '0.12'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.11'
96
+ version: '0.12'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: codeclimate-test-reporter
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
147
  requirements:
148
148
  - - "~>"
149
149
  - !ruby/object:Gem::Version
150
- version: '2.0'
150
+ version: '2.1'
151
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="