formeze 3.1.0 → 4.0.0

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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +8 -0
  3. data/README.md +15 -11
  4. data/formeze.gemspec +3 -3
  5. data/lib/formeze.rb +26 -16
  6. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b67d9270f16eb5af01a76ed46059e8c61b14c67753f7ad05303a687a2741d2f6
4
- data.tar.gz: b1ea76abe102e3a554f66af48253de9497b8786742f01c7f124dd8187ccde593
3
+ metadata.gz: 966031b2657f2210d398a97d3c8dd6a1cc4e424e39972db1c3bad968cfe3bc8e
4
+ data.tar.gz: 140936f1897241dc7ee598fd8e63296d3d7918879dd263d825e68299897e1a1f
5
5
  SHA512:
6
- metadata.gz: edc08ae4719627987bff853db4e82f021e1fb340aff32cf0cd1583d4943a6efb598addcf13223b8fcbb2d5d1c00728dd634f0be55b49daf40e2b63a6cc5f6214
7
- data.tar.gz: 442b1da170d85a21b3c5c14b675802605275f6c0cd327cb007ba0f3009dcf6b010f7bc941051747f31aab9c0d7262f1e8ea307e287297e584b85eedbb6a94e28
6
+ metadata.gz: '092df6a16316cd7fb65f997e3e25e65622a1e8e112a5da8db6c56ca4146dc4485502fcc1ed7b9cb6a34e452878e3a6151a7c3c7c47e759ef7fe6349d35f5c1e4'
7
+ data.tar.gz: 0b4641a90d0d9e7e0cface189b699f12ebd60e94de2350a7dcbee537be6e22bd8b721587199ce3e24202ea5ccb8c1083438abd9bfa5d55538556825e08cbe0bc
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 4.0.0
2
+
3
+ * Removed support for older rubies. **Required ruby version is now 2.4.0**
4
+
5
+ * Changed the code to use keyword arguments for options
6
+
7
+ * Renamed the `when` validation option to `if`
8
+
1
9
  # 3.1.0
2
10
 
3
11
  * Added `'commit'` to the list of Rails form keys to ignore (#4)
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ![Gem Version](https://badge.fury.io/rb/formeze.svg)
4
4
  ![Build Status](https://github.com/readysteady/formeze/workflows/Test/badge.svg)
5
5
 
6
- A lightweight Ruby library for processing form data.
6
+ Ruby gem for validating form data.
7
7
 
8
8
 
9
9
  ## Motivation
@@ -18,14 +18,18 @@ Formeze adopts the approach of being "strict by default", forcing the applicatio
18
18
  code to be explicit in what it accepts as input.
19
19
 
20
20
 
21
- ## Installation
21
+ ## Install
22
22
 
23
- ```
24
- $ gem install formeze
25
- ```
23
+ Using Bundler:
24
+
25
+ $ bundle add formeze
26
+
27
+ Using RubyGems:
28
+
29
+ $ gem install formeze
26
30
 
27
31
 
28
- ## Example usage
32
+ ## Usage
29
33
 
30
34
  Here is a minimal example, which defines a form with a single field:
31
35
 
@@ -254,16 +258,16 @@ class ExampleForm < Formeze::Form
254
258
  end
255
259
  ```
256
260
 
257
- Specify the `when` option with a proc to peform the validation conditionally.
261
+ Specify the `if` option with a proc to peform the validation conditionally.
258
262
  Similar to the `defined_if` and `defined_unless` field options, the proc is
259
263
  evaluated in the scope of the form instance. For example:
260
264
 
261
265
  ```ruby
262
266
  class ExampleForm < Formeze::Form
263
- field :business_name, :defined_if => :business_account?
264
- field :vat_number, :defined_if => :business_account?
267
+ field :business_name, defined_if: :business_account?
268
+ field :vat_number, defined_if: :business_account?
265
269
 
266
- validates :vat_number, :when => :business_account? do
270
+ validates :vat_number, if: :business_account? do
267
271
  # ...
268
272
  end
269
273
 
@@ -290,7 +294,7 @@ class ExampleForm < Formeze::Form
290
294
 
291
295
  validates :email, &EmailAddress.method(:valid?)
292
296
 
293
- validates :password_confirmation, :error => :does_not_match do
297
+ validates :password_confirmation, error: :does_not_match do
294
298
  password_confirmation == password
295
299
  end
296
300
  end
@@ -1,15 +1,15 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'formeze'
3
- s.version = '3.1.0'
3
+ s.version = '4.0.0'
4
4
  s.license = 'LGPL-3.0'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ['Tim Craft']
7
7
  s.email = ['mail@timcraft.com']
8
8
  s.homepage = 'https://github.com/readysteady/formeze'
9
- s.description = 'A lightweight Ruby library for processing form data'
9
+ s.description = 'Ruby gem for validating form data'
10
10
  s.summary = 'See description'
11
11
  s.files = Dir.glob('lib/**/*.rb') + %w(CHANGES.md LICENSE.txt README.md formeze.gemspec)
12
- s.required_ruby_version = '>= 1.9.3'
12
+ s.required_ruby_version = '>= 2.4.0'
13
13
  s.require_path = 'lib'
14
14
  s.metadata = {
15
15
  'homepage' => 'https://github.com/readysteady/formeze',
@@ -21,7 +21,7 @@ module Formeze
21
21
 
22
22
  attr_reader :name
23
23
 
24
- def initialize(name, options = {})
24
+ def initialize(name, **options)
25
25
  @name, @options = name, options
26
26
  end
27
27
 
@@ -80,7 +80,7 @@ module Formeze
80
80
  end
81
81
 
82
82
  def error(key, default)
83
- Formeze.translate(key, :scope => [:formeze, :errors], :default => default)
83
+ Formeze.translate(key, scope: ERRORS_SCOPE, default: default)
84
84
  end
85
85
 
86
86
  def key
@@ -92,7 +92,7 @@ module Formeze
92
92
  end
93
93
 
94
94
  def label
95
- @options.fetch(:label) { Formeze.translate(name, :scope => [:formeze, :labels], :default => Formeze.label(name)) }
95
+ @options.fetch(:label) { Formeze.translate(name, scope: LABELS_SCOPE, default: Formeze.label(name)) }
96
96
  end
97
97
 
98
98
  def required?
@@ -167,20 +167,22 @@ module Formeze
167
167
  class Validation
168
168
  include Presence
169
169
 
170
- def initialize(field, options, &block)
171
- @field, @options, @block = field, options, block
172
- end
170
+ def initialize(field, **kwargs, &block)
171
+ @field = field
172
+
173
+ @error = kwargs[:error] || :invalid
173
174
 
174
- def error_key
175
- @options.fetch(:error) { :invalid }
175
+ @precondition = kwargs[:if]
176
+
177
+ @block = block
176
178
  end
177
179
 
178
180
  def error_message
179
- Formeze.translate(error_key, :scope => [:formeze, :errors], :default => 'is invalid')
181
+ Formeze.translate(@error, scope: ERRORS_SCOPE, default: 'is invalid')
180
182
  end
181
183
 
182
184
  def validates?(form)
183
- @options.key?(:when) ? form.instance_eval(&@options[:when]) : true
185
+ @precondition ? form.instance_eval(&@precondition) : true
184
186
  end
185
187
 
186
188
  def field_value?(form)
@@ -209,8 +211,8 @@ module Formeze
209
211
  @fields ||= {}
210
212
  end
211
213
 
212
- def field(*args)
213
- field = Field.new(*args)
214
+ def field(name, **options)
215
+ field = Field.new(name, **options)
214
216
 
215
217
  fields[field.name] = field
216
218
 
@@ -221,8 +223,8 @@ module Formeze
221
223
  @validations ||= []
222
224
  end
223
225
 
224
- def validates(field_name, options = {}, &block)
225
- validations << Validation.new(fields[field_name], options, &block)
226
+ def validates(field_name, **options, &block)
227
+ validations << Validation.new(fields[field_name], **options, &block)
226
228
  end
227
229
  end
228
230
 
@@ -376,8 +378,16 @@ module Formeze
376
378
  end
377
379
  end
378
380
 
379
- def self.translate(key, options)
380
- defined?(I18n) ? I18n.translate(key, options) : options.fetch(:default)
381
+ ERRORS_SCOPE = [:formeze, :errors].freeze
382
+
383
+ private_constant :ERRORS_SCOPE
384
+
385
+ LABELS_SCOPE = [:formeze, :labels].freeze
386
+
387
+ private_constant :LABELS_SCOPE
388
+
389
+ def self.translate(key, **options)
390
+ defined?(I18n) ? I18n.translate(key, **options) : options.fetch(:default)
381
391
  end
382
392
 
383
393
  def self.setup(form)
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formeze
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Craft
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-09 00:00:00.000000000 Z
11
+ date: 2020-07-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A lightweight Ruby library for processing form data
13
+ description: Ruby gem for validating form data
14
14
  email:
15
15
  - mail@timcraft.com
16
16
  executables: []
@@ -30,7 +30,7 @@ metadata:
30
30
  source_code_uri: https://github.com/readysteady/formeze
31
31
  bug_tracker_uri: https://github.com/readysteady/formeze/issues
32
32
  changelog_uri: https://github.com/readysteady/formeze/blob/master/CHANGES.md
33
- post_install_message:
33
+ post_install_message:
34
34
  rdoc_options: []
35
35
  require_paths:
36
36
  - lib
@@ -38,7 +38,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 1.9.3
41
+ version: 2.4.0
42
42
  required_rubygems_version: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - ">="
@@ -46,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
46
  version: '0'
47
47
  requirements: []
48
48
  rubygems_version: 3.1.2
49
- signing_key:
49
+ signing_key:
50
50
  specification_version: 4
51
51
  summary: See description
52
52
  test_files: []