paradocs 1.0.22 → 1.0.23

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
  SHA1:
3
- metadata.gz: 9e89cffb387938580ebcb23782856781be60903c
4
- data.tar.gz: 8bb05339c65e90d579f86ec103e055d3b3965d29
3
+ metadata.gz: 46df9e6a68b9d5574d7923e38646fbaeedc20a61
4
+ data.tar.gz: 96ac7dda4da79eb1aa56c13adf003f1f9b6c0585
5
5
  SHA512:
6
- metadata.gz: 4f1f47dce1ccdf9bd688fdc754b5759ad74051b8c976d70344ddde239badab52ce764c077b48aa0b29155ab0f81caa8645d818d5482367e3b1217bcc3230e039
7
- data.tar.gz: fb12f58e2d16b2f3471576aa76020cec0dcc0f5b994b06a66f402f8411b17e14922aa8026b6600d157a6590c3a0fadf3cd2d0687c9cf3f847104c83dcdf9b70c
6
+ metadata.gz: b24241e65b44f94a431e47780f8e9932ff3b0f2da288d57ae483d7663f9c9a9286467799d3b35fd8ee8730cc9a57faf475c9cc25aa51d38690ac37af61e2c2e5
7
+ data.tar.gz: be37a51df5961b6e1d73f3c9c126a2a112d8cc6482451459ec0efd11af4a8a3a715f47e8427a01f3d5137e9e5164ca205fe575d9c8d5a49a2ea805bdcde89996
data/README.md CHANGED
@@ -6,9 +6,13 @@ Declaratively define data schemas in your Ruby objects, and use them to whitelis
6
6
 
7
7
  Useful for building self-documeting APIs, search or form objects. Or possibly as an alternative to Rails' _strong parameters_ (it has no dependencies on Rails and can be used stand-alone).
8
8
  ## Installation
9
+ ```sh
10
+ $ gem install paradocs
11
+ ```
9
12
 
13
+ Or with Bundler in your Gemfile.
10
14
  ```rb
11
- gem 'paradocs', git: 'https://github.com/mtkachenk0/paradocs'
15
+ gem 'paradocs'
12
16
  ```
13
17
 
14
18
  ## Getting Started
@@ -18,8 +18,8 @@ module Paradocs
18
18
  base.extend ClassMethods
19
19
  end
20
20
 
21
- def initialize(attrs = {})
22
- @_results = self.class.schema.resolve(attrs)
21
+ def initialize(attrs = {}, environment = {})
22
+ @_results = self.class.schema.resolve(attrs, environment)
23
23
  @_graph = self.class.build(@_results.output)
24
24
  end
25
25
 
@@ -48,8 +48,8 @@ module Paradocs
48
48
  attr_reader :_graph, :_results
49
49
 
50
50
  module ClassMethods
51
- def new!(attrs = {})
52
- st = new(attrs)
51
+ def new!(attrs = {}, environment = {})
52
+ st = new(attrs, environment)
53
53
  raise InvalidStructError.new(st) unless st.valid?
54
54
  st
55
55
  end
@@ -1,3 +1,3 @@
1
1
  module Paradocs
2
- VERSION = "1.0.22"
2
+ VERSION = "1.0.23"
3
3
  end
@@ -6,8 +6,8 @@ require 'paradocs/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "paradocs"
8
8
  spec.version = Paradocs::VERSION
9
- spec.authors = ["Ismael Celis", "Maxim Tkachenko"]
10
- spec.email = ["ismaelct@gmail.com", "tkachenko.maxim.w@gmail.com"]
9
+ spec.authors = ["Maxim Tkachenko", "Ismael Celis"]
10
+ spec.email = ["tkachenko.maxim.w@gmail.com", "ismaelct@gmail.com"]
11
11
  spec.description = %q{Flexible DSL for declaring allowed parameters focused on DRY validation that gives you opportunity to generate API documentation on-the-fly.}
12
12
  spec.summary = %q{A huge add-on for original gem mostly focused on retrieving the more metadata from declared schemas as possible.}
13
13
  spec.homepage = "https://github.com/mtkachenk0/paradocs"
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 2.1"
22
- spec.add_development_dependency "rake", "~> 0"
22
+ spec.add_development_dependency "rake", ">= 12.3.3"
23
23
  spec.add_development_dependency "rspec", '3.4.0'
24
24
  spec.add_development_dependency "pry", "~> 0"
25
25
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
  require 'paradocs/struct'
3
3
 
4
4
  describe Paradocs::Struct do
5
- it "works" do
5
+ it 'works' do
6
6
  friend_class = Class.new do
7
7
  include Paradocs::Struct
8
8
 
@@ -53,7 +53,7 @@ describe Paradocs::Struct do
53
53
  expect(invalid_instance.friends[1].errors['$.name']).not_to be_nil
54
54
  end
55
55
 
56
- it "is inmutable by default" do
56
+ it 'is inmutable by default' do
57
57
  klass = Class.new do
58
58
  include Paradocs::Struct
59
59
 
@@ -66,7 +66,7 @@ describe Paradocs::Struct do
66
66
 
67
67
  instance = klass.new
68
68
  expect {
69
- instance.title = "foo"
69
+ instance.title = 'foo'
70
70
  }.to raise_error NoMethodError
71
71
 
72
72
  expect {
@@ -74,7 +74,7 @@ describe Paradocs::Struct do
74
74
  }.to raise_error RuntimeError
75
75
  end
76
76
 
77
- it "works with anonymous nested schemas" do
77
+ it 'works with anonymous nested schemas' do
78
78
  klass = Class.new do
79
79
  include Paradocs::Struct
80
80
 
@@ -125,7 +125,7 @@ describe Paradocs::Struct do
125
125
  expect(user.friends.first.salutation).to eq 'my age is 43'
126
126
  end
127
127
 
128
- it "wraps regular schemas in structs" do
128
+ it 'wraps regular schemas in structs' do
129
129
  friend_schema = Paradocs::Schema.new do
130
130
  field(:name)
131
131
  end
@@ -147,7 +147,7 @@ describe Paradocs::Struct do
147
147
  expect(instance.friends.first.name).to eq 'Ismael'
148
148
  end
149
149
 
150
- it "#to_h" do
150
+ it '#to_h' do
151
151
  klass = Class.new do
152
152
  include Paradocs::Struct
153
153
 
@@ -185,7 +185,7 @@ describe Paradocs::Struct do
185
185
  expect(new_instance.to_h[:title]).to eq 'foo'
186
186
  end
187
187
 
188
- it "works with inheritance" do
188
+ it 'works with inheritance' do
189
189
  klass = Class.new do
190
190
  include Paradocs::Struct
191
191
 
@@ -218,7 +218,7 @@ describe Paradocs::Struct do
218
218
  expect(instance.friends.size).to eq 2
219
219
  end
220
220
 
221
- it "implements deep struct equality" do
221
+ it 'implements deep struct equality' do
222
222
  klass = Class.new do
223
223
  include Paradocs::Struct
224
224
 
@@ -268,7 +268,7 @@ describe Paradocs::Struct do
268
268
  expect(s1 == s4).to be false
269
269
  end
270
270
 
271
- it "#merge returns a new instance" do
271
+ it '#merge returns a new instance' do
272
272
  klass = Class.new do
273
273
  include Paradocs::Struct
274
274
 
@@ -301,6 +301,20 @@ describe Paradocs::Struct do
301
301
  expect(copy.friends.first.name).to eq 'jane'
302
302
  end
303
303
 
304
+ it 'passes the environment to the schema' do
305
+ klass = Class.new do
306
+ include Paradocs::Struct
307
+
308
+ schema do
309
+ field(:age).type(:integer)
310
+ end
311
+ end
312
+
313
+ new_instance = klass.new({}, { key: :value })
314
+
315
+ expect(new_instance.send(:_results).environment).to eq({ key: :value })
316
+ end
317
+
304
318
  describe '.new!' do
305
319
  it 'raises a useful exception if invalid data' do
306
320
  klass = Class.new do
@@ -320,5 +334,19 @@ describe Paradocs::Struct do
320
334
  valid = klass.new!(title: 'foo')
321
335
  expect(valid.title).to eq 'foo'
322
336
  end
337
+
338
+ it 'passes the environment to the schema' do
339
+ klass = Class.new do
340
+ include Paradocs::Struct
341
+
342
+ schema do
343
+ field(:title).type(:string).present
344
+ end
345
+ end
346
+
347
+ new_instance = klass.new!({ title: 'test' }, { key: :value })
348
+
349
+ expect(new_instance.send(:_results).environment).to eq({ key: :value })
350
+ end
323
351
  end
324
352
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paradocs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.22
4
+ version: 1.0.23
5
5
  platform: ruby
6
6
  authors:
7
- - Ismael Celis
8
7
  - Maxim Tkachenko
8
+ - Ismael Celis
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-08-26 00:00:00.000000000 Z
12
+ date: 2020-09-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -29,16 +29,16 @@ dependencies:
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 12.3.3
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 12.3.3
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -70,8 +70,8 @@ dependencies:
70
70
  description: Flexible DSL for declaring allowed parameters focused on DRY validation
71
71
  that gives you opportunity to generate API documentation on-the-fly.
72
72
  email:
73
- - ismaelct@gmail.com
74
73
  - tkachenko.maxim.w@gmail.com
74
+ - ismaelct@gmail.com
75
75
  executables:
76
76
  - console
77
77
  extensions: []