validator_fn 0.3.8 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ea7512cdc3b010b687c5cf9d2fec7d79f6724c56547e31ced2903762e81e9b3
4
- data.tar.gz: 5e45c2d9df2ff27104da89d0a97f19788a3de304b4575a3a317fa567620a6692
3
+ metadata.gz: 1ae4f194cce16e854dccde3dc29e7d382084289945402ded960414d94dc7630f
4
+ data.tar.gz: 7a19354da9723c01d81d79540a358dad546a2611b7893399ea38b09025d83f0e
5
5
  SHA512:
6
- metadata.gz: e683c7186d468ac169210bab0a8033601b7873051381ee14f24dc1760d30f9dd8731723b303b8090464081afea842f8db309c8f5fc2d0666a54500efb31fd22d
7
- data.tar.gz: f172ff2aa6e4b1f243ae50000da20f8a6cd86c385f872cbe0c2cea6f222e2c1b025ead98c1af6191637467646e1c11c42628bb9205546dc5a5ac8042b3f3b6ee
6
+ metadata.gz: 452a5fa550d3c5c9948099e1c9e2e840dd800bed22a0b8b777a81c824cdc04d0ea11f496d601fb61b750542585e96741f55292c5bbdf078e499f73b15a961c5b
7
+ data.tar.gz: c2d9d6f854407f958024efe80095490ff7d1c890ee4421f02fc5e26ee44a766c26c3e496bc996fecbe1ec4140f97e3e9a9465df6ef14faf69035ba3a1ab569dd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- validator_fn (0.2.8)
4
+ validator_fn (0.4.0)
5
5
  fn_reader
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -62,7 +62,7 @@ user = hash_of.({name: is_a.(String), age: to_int})
62
62
  user.({name: "", age: "234"})
63
63
  ```
64
64
 
65
- Since we are using curried lambdas, you can compose validators as you which.
65
+ Since we are using curried lambdas, you can compose validators as you wish.
66
66
 
67
67
  ```ruby
68
68
  postal_code = -> a {
@@ -109,6 +109,9 @@ code = ValidatorFn.generate_validator.(struct)
109
109
  # You can reformat it using a code formatter
110
110
  require "rufo"
111
111
  puts Rufo.format(code)
112
+ ```
113
+ The output
114
+ ```
112
115
  hash_of.({ "login" => is_a.(String),
113
116
  "id" => is_a.(Integer),
114
117
  "node_id" => is_a.(String),
@@ -23,7 +23,7 @@ module ValidatorFn
23
23
 
24
24
  class MissingKey < Error
25
25
  def initialize(key)
26
- super("Missing field #{key}")
26
+ super("Missing field #{key.inspect}")
27
27
  end
28
28
  end
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatorFn
2
- VERSION = "0.3.8"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/validator_fn.rb CHANGED
@@ -37,13 +37,18 @@ module ValidatorFn
37
37
  @@maybe = either.(is_nil)
38
38
  @@is_a = ->klass, a { invalid.("Expected type #{klass}, got #{a.inspect}") unless a.is_a?(klass); a }.curry
39
39
  @@is_a_bool = ->a { invalid.("Expected bool, got #{a.inspect}") unless a == true || a == false; a }.curry
40
+ # it validates each fields according with a specific algorithm, note that it
41
+ # will filter out fields that are not defined
40
42
  @@hash_of = ->fields, hash {
41
43
  hash ||= {}
42
44
  fields.reduce({}) do |memo, (key, fn)|
43
- memo[key] = fn.(hash[key])
45
+ value = hash.fetch(key) { raise MissingKey.new(key) }
46
+ memo[key] = fn.(value)
44
47
  memo
45
48
  rescue Error => e
46
49
  invalid.("Invalid value for #{key.inspect} key:")
50
+ rescue MissingKey => e
51
+ invalid.(e.message)
47
52
  end
48
53
  }.curry
49
54
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validator_fn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.8
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Chabot
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-30 00:00:00.000000000 Z
11
+ date: 2023-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fn_reader
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  requirements: []
70
- rubygems_version: 3.1.2
70
+ rubygems_version: 3.4.12
71
71
  signing_key:
72
72
  specification_version: 4
73
73
  summary: Series of lambdas for validating Ruby structures