strum 0.0.52 → 0.0.53

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
  SHA256:
3
- metadata.gz: 4994e24727fe0b036ecb4d737fffc9a7072222df1054286c42519206b1274dc2
4
- data.tar.gz: 82ddc9e2861ae63e2695bf4b757a7bfcd5d00b5917601afbaabebfb4c12e336b
3
+ metadata.gz: d704c577b2829f096ddabdc70462bae26c1e8aadd04add2fa829d6414da5b119
4
+ data.tar.gz: 4ca6c7303c9cbec55fea20c36e65ba37e5befb0c733bd1e3390b9168e5f49bc9
5
5
  SHA512:
6
- metadata.gz: 6e9919954781bbb5f5d1e804c9b9fbcc0c4119d2da74976c91a5f124c875096f7411e9c7863880700e9c3618b7ae1337531b63d27cf1efdd7cb6a336752876dc
7
- data.tar.gz: 482210f9df0258609ef4aed3a62fba25f13e4507d1d581edf99591f8f0125e37e87459cc0a43f5b4050238c8635e74d996d59ab37f697b145e98fd8278358932
6
+ metadata.gz: a80c12eaa5f37d651b1c8ca5efa8c735b4b74cea261ecbabb15ae4ea2ff1b24e40a052d91ea2ecb69460d87266a18c9ba9f27f803d446f18b8429dec3192549d
7
+ data.tar.gz: ea4cb4fc244f7db0aedf30a8b30ef68d81ad8df2b41e7c5b90437d7033daca373cc5dcaee83a7fa413e1c42ce0b514e1c8db9d0a1dd905cc2ba1deaa5d084d90
data/Gemfile.lock CHANGED
@@ -1,19 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- strum (0.0.52)
4
+ strum (0.0.53)
5
5
  dry-inflector (~> 0.2.0)
6
6
  dry-struct (~> 1.2)
7
+ json-schema (~> 2.8.1)
7
8
  sequel (~> 5.29)
8
9
  thor (~> 0.20)
9
10
 
10
11
  GEM
11
12
  remote: https://rubygems.org/
12
13
  specs:
14
+ addressable (2.7.0)
15
+ public_suffix (>= 2.0.2, < 5.0)
13
16
  ast (2.4.0)
14
17
  concurrent-ruby (1.1.6)
15
18
  diff-lcs (1.3)
16
- dry-configurable (0.11.2)
19
+ dry-configurable (0.11.3)
17
20
  concurrent-ruby (~> 1.0)
18
21
  dry-core (~> 0.4, >= 0.4.7)
19
22
  dry-equalizer (~> 0.2)
@@ -45,9 +48,12 @@ GEM
45
48
  irb (1.2.3)
46
49
  reline (>= 0.0.1)
47
50
  jaro_winkler (1.5.4)
51
+ json-schema (2.8.1)
52
+ addressable (>= 2.4)
48
53
  parallel (1.19.1)
49
- parser (2.7.0.2)
54
+ parser (2.7.0.3)
50
55
  ast (~> 2.4.0)
56
+ public_suffix (4.0.3)
51
57
  rainbow (3.0.0)
52
58
  rake (10.5.0)
53
59
  reline (0.1.3)
data/lib/strum/service.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require "json-schema"
2
3
 
3
4
  module Strum
4
5
  # Module
@@ -119,12 +120,37 @@ module Strum
119
120
  end
120
121
  end
121
122
 
123
+ def sliced_list(*keys)
124
+ if input.is_a?(Array)
125
+ @input = input.map do |item|
126
+ if item.is_a?(Hash)
127
+ item = item.slice(*keys)
128
+ else
129
+ add_error(:input_subitem, :must_be_hash)
130
+ end
131
+ end
132
+ else
133
+ add_error(:input, :must_be_array)
134
+ end
135
+ end
136
+
137
+ def validated(schema:, list: false)
138
+ array_errors = JSON::Validator.fully_validate(schema, @input, errors_as_objects: true, list: list)
139
+ array_errors.each{|error| add_error(*self.parse_json_schema_error(error))}
140
+ end
141
+
142
+ def parse_json_schema_error(error)
143
+ key = error[:fragment].sub(/#\//, "").sub(/0\//, "")
144
+ value = error[:message][0, error[:message].index(/ in schema/)].sub(/#\//, "").sub(/0\//, "")
145
+ [key.to_sym, value]
146
+ end
147
+
122
148
  def array!
123
149
  self.input = [*input]
124
150
  end
125
151
 
126
152
  private
127
-
153
+
128
154
  def key_to_sym(key)
129
155
  key.to_sym
130
156
  rescue StandardError
data/lib/strum/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Strum
4
- VERSION = "0.0.52"
4
+ VERSION = "0.0.53"
5
5
  end
data/strum.gemspec CHANGED
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.executables << "strum"
36
36
  spec.require_paths = ["lib"]
37
37
 
38
+ spec.add_dependency "json-schema", "~> 2.8.1"
38
39
  spec.add_dependency "dry-inflector", "~> 0.2.0"
39
40
  spec.add_dependency "dry-struct", "~> 1.2"
40
41
  spec.add_dependency "sequel", "~> 5.29"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.52
4
+ version: 0.0.53
5
5
  platform: ruby
6
6
  authors:
7
7
  - Serhiy Nazarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-22 00:00:00.000000000 Z
11
+ date: 2020-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json-schema
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.8.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.8.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: dry-inflector
15
29
  requirement: !ruby/object:Gem::Requirement