dry_generators_rails 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dry_generators_rails/version.rb +1 -1
- data/lib/generators/dry/validation/USAGE +11 -0
- data/lib/generators/dry/validation/templates/{validation_spec_template.rb → validation_spec_template.erb} +0 -0
- data/lib/generators/dry/validation/templates/validation_template.erb +13 -0
- data/lib/generators/dry/validation/templates/{validation_test_template.rb → validation_test_template.erb} +0 -0
- data/lib/generators/dry/validation/validation_generator.rb +22 -3
- metadata +5 -5
- data/lib/generators/dry/validation/templates/validation_template.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d85b4609b83ce411b59c8dc93e7fff04df610795980a97958aa9c687896bb055
|
4
|
+
data.tar.gz: 8d2a07defac4fe612c29706b89323d6e6050b16b46513734f6e73612bf314b44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1861d68963bd25bd1ebb031fe9d755027b7750b81a1fdc074ee91d2a37ada58386c05a0302fe351834cc6bbea6afad90181539f8ab6d3937cf459d10a656c255
|
7
|
+
data.tar.gz: ee2556816624e1fd0d254d4df0cb373b56860306dab368d8e0482887a698a653e113f54fba4da3d136198bec234841578469a5207ce589ecbc8b86a299ea04f9
|
@@ -1,8 +1,19 @@
|
|
1
1
|
Description:
|
2
2
|
Generates a dry-validation contract
|
3
3
|
|
4
|
+
Accepts an Array of params.
|
5
|
+
|
6
|
+
A single param name defaults to an optional string [email]
|
7
|
+
A name name and type will be optional [age:integer]
|
8
|
+
A type must be specified to make it required [age:integer:required]
|
9
|
+
Any number of params can be supplied [age:integer:required, alive:boolean]
|
10
|
+
|
4
11
|
Example:
|
5
12
|
rails generate validation Thing
|
13
|
+
rails generate validation Thing --params email
|
14
|
+
rails generate validation Thing --params age:integer
|
15
|
+
rails generate validation Thing --params age:integer:required
|
16
|
+
rails generate validation Thing --params age:integer:required alive:boolean
|
6
17
|
|
7
18
|
This will create:
|
8
19
|
app/dry/validations/thing.rb
|
File without changes
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Validations
|
2
|
+
class <%= file_name.camelize %> < Dry::Validation::Contract
|
3
|
+
params do
|
4
|
+
<% @fields.each do |field| %>
|
5
|
+
<% if field[:required] %>
|
6
|
+
<%= "required(:#{field[:name]}).value(:#{field[:type]})" %>
|
7
|
+
<% else %>
|
8
|
+
<%= "optional(:#{field[:name]}).value(:#{field[:type]})" %>
|
9
|
+
<% end %>
|
10
|
+
<% end %>
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
File without changes
|
@@ -4,6 +4,7 @@ module Dry
|
|
4
4
|
module Generators
|
5
5
|
class ValidationGenerator < Base
|
6
6
|
source_root File.expand_path('templates', __dir__)
|
7
|
+
class_option :params, type: :array, default: []
|
7
8
|
|
8
9
|
def check_requirements
|
9
10
|
raise 'NAME must be provided' unless file_name.present?
|
@@ -12,18 +13,36 @@ module Dry
|
|
12
13
|
def set_instance_variables
|
13
14
|
@name = file_name.underscore
|
14
15
|
@class_name = "#{@name.camelize}"
|
16
|
+
@fields = []
|
17
|
+
end
|
18
|
+
|
19
|
+
# [:name, :type, :required]
|
20
|
+
def process_params
|
21
|
+
options['params'].each do |field|
|
22
|
+
fields = field.split(':')
|
23
|
+
required = false
|
24
|
+
type = 'string'
|
25
|
+
|
26
|
+
if fields.length == 3
|
27
|
+
required = true
|
28
|
+
fields.pop
|
29
|
+
end
|
30
|
+
|
31
|
+
type = fields.pop if fields.length == 2
|
32
|
+
@fields << { name: fields.first, type: type, required: required }
|
33
|
+
end
|
15
34
|
end
|
16
35
|
|
17
36
|
def copy_validator
|
18
37
|
path = File.join(VALIDATIONS_PATH, "#{@name}.rb")
|
19
|
-
template 'validation_template.
|
38
|
+
template 'validation_template.erb', path
|
20
39
|
end
|
21
40
|
|
22
41
|
def copy_spec
|
23
42
|
if Dir.exist? File.join(Rails.root, 'spec')
|
24
43
|
spec_path = File.join(SPEC_PATH, 'validations')
|
25
44
|
path = File.join(spec_path, "#{@name}_spec.rb")
|
26
|
-
template 'validation_spec_template.
|
45
|
+
template 'validation_spec_template.erb', path
|
27
46
|
end
|
28
47
|
end
|
29
48
|
|
@@ -31,7 +50,7 @@ module Dry
|
|
31
50
|
if Dir.exist? File.join(Rails.root, 'test')
|
32
51
|
test_path = File.join(TEST_PATH, 'validations')
|
33
52
|
path = File.join(test_path, "#{@name}_test.rb")
|
34
|
-
template 'validation_test_template.
|
53
|
+
template 'validation_test_template.erb', path
|
35
54
|
end
|
36
55
|
end
|
37
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry_generators_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Turknett
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -111,9 +111,9 @@ files:
|
|
111
111
|
- lib/generators/dry/struct/templates/struct_template.rb
|
112
112
|
- lib/generators/dry/struct/templates/struct_test_template.rb
|
113
113
|
- lib/generators/dry/validation/USAGE
|
114
|
-
- lib/generators/dry/validation/templates/validation_spec_template.
|
115
|
-
- lib/generators/dry/validation/templates/validation_template.
|
116
|
-
- lib/generators/dry/validation/templates/validation_test_template.
|
114
|
+
- lib/generators/dry/validation/templates/validation_spec_template.erb
|
115
|
+
- lib/generators/dry/validation/templates/validation_template.erb
|
116
|
+
- lib/generators/dry/validation/templates/validation_test_template.erb
|
117
117
|
- lib/generators/dry/validation/validation_generator.rb
|
118
118
|
- lib/tasks/dry_generators_rails_tasks.rake
|
119
119
|
homepage: https://github.com/johnTurknett/dry_generators_rails
|