strum 0.0.52 → 0.0.53

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: 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