surrealist 1.1.0 → 1.1.1

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: 2b3537308a609571f4a82a0f35792244135fd0fe249b85b408d444dc46c4ecf4
4
- data.tar.gz: 8c50d83dbbe452bb55f70eadccc69ad024a6055e2ee1e60aa29f768c3281bfbc
3
+ metadata.gz: 0a5a2bfdc5cbfe0e1a5f8fbc9e8213da087e2d149ac40857bf8a7e3730c52b87
4
+ data.tar.gz: 9b28deb85b05ba4a6baf61eb0b9d52f5746fc9d819765175dd74dd45fae53f3d
5
5
  SHA512:
6
- metadata.gz: 3b5a167801a3393667d0fae41727f3512be479bfcdfb26426615a422173ff417b186ea59d067550db2f2f44af49a789450c5056bad07de500849e8b21ae46e0e
7
- data.tar.gz: 9c3923e37180abfaa4159dbc5f55b393f6ab88927803bf639ffa1825cbf5aa16e8a61199a7dc19e65f8586e26666b6208f4e995826d6a8ecaa03b9868ce01f57
6
+ metadata.gz: 6d37a7cc610900148814b0eda41e4d5d1d12ee6eeacba3bddeaa947d7793992b4983b893aa2a1b22cf8641fc2a8954384f52bc92aa5db2a45ef1aa8d3938f63d
7
+ data.tar.gz: 8d6ba4e24d856e9498f2bea63a9570d9b04439ad9efb84913c43bd575a1a19a442282f87a40a6244e4386869aab85bb836a6e5eea5abae476017a4f69aba7456
data/.rubocop.yml CHANGED
@@ -148,7 +148,10 @@ Style/SignalException:
148
148
  Style/TrailingCommaInArguments:
149
149
  EnforcedStyleForMultiline: comma
150
150
 
151
- Style/TrailingCommaInLiteral:
151
+ Style/TrailingCommaInArrayLiteral:
152
+ EnforcedStyleForMultiline: comma
153
+
154
+ Style/TrailingCommaInHashLiteral:
152
155
  EnforcedStyleForMultiline: comma
153
156
 
154
157
  Style/MethodMissing:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 1.1.1
2
+
3
+ ## Fixed
4
+ * Bug with several serializations in a row ([@past-one][]) [#90](https://github.com/nesaulov/surrealist/pull/90)
5
+
1
6
  # 1.1.0
2
7
 
3
8
  ## Added
@@ -82,5 +87,5 @@
82
87
  [@nulldef]: https://github.com/nulldef
83
88
  [@azhi]: https://github.com/azhi
84
89
  [@chrisatanasian]: https://github.com/chrisatanasian
85
-
90
+ [@past-one]: https://github.com/past-one
86
91
 
data/README.md CHANGED
@@ -115,7 +115,7 @@ class Person
115
115
  nested: {
116
116
  at: {
117
117
  any: Integer,
118
- level: Boolean,
118
+ level: Bool,
119
119
  },
120
120
  },
121
121
  }
@@ -760,8 +760,6 @@ type check will be passed. If you want to be strict about `nil`s consider using
760
760
 
761
761
  ## Roadmap
762
762
  Here is a list of features that are not implemented yet (contributions are welcome):
763
- * [Having a config that would keep serialization parameters](https://github.com/nesaulov/surrealist/issues/76)
764
- * [DSL for serializer contexts](https://github.com/nesaulov/surrealist/issues/67)
765
763
  * Memoization/caching
766
764
 
767
765
  ## Contributing
data/_config.yml ADDED
@@ -0,0 +1 @@
1
+ theme: jekyll-theme-cayman
@@ -79,9 +79,8 @@ module Surrealist
79
79
  #
80
80
  # @return [Hash] the schema hash
81
81
  def construct_collection(schema, instance, key, value)
82
- schema[key] = []
83
- instance.send(key).each do |inst|
84
- schema[key].push(call(Copier.deep_copy(value, carrier), inst))
82
+ schema[key] = instance.send(key).map do |inst|
83
+ call(Copier.deep_copy(value, carrier), inst)
85
84
  end
86
85
  end
87
86
  end
@@ -46,7 +46,7 @@ module Surrealist
46
46
 
47
47
  # Checks if all arguments are set to default
48
48
  def no_args_provided?
49
- @no_args ||= no_args
49
+ @no_args_provided ||= no_args_provided
50
50
  end
51
51
 
52
52
  # Returns all arguments
@@ -96,7 +96,7 @@ module Surrealist
96
96
  end
97
97
 
98
98
  # Checks if all arguments are set to default
99
- def no_args
99
+ def no_args_provided
100
100
  !camelize && !include_root && !include_namespaces && root.nil? &&
101
101
  namespaces_nesting_level == DEFAULT_NESTING_LEVEL
102
102
  end
@@ -87,9 +87,9 @@ module Surrealist
87
87
  # method on the object.
88
88
  #
89
89
  # @raise Surrealist::UndefinedMethodError
90
- def raise_invalid_key!(e)
90
+ def raise_invalid_key!(err)
91
91
  raise Surrealist::UndefinedMethodError,
92
- "#{e.message}. You have probably defined a key " \
92
+ "#{err.message}. You have probably defined a key " \
93
93
  "in the schema that doesn't have a corresponding method."
94
94
  end
95
95
 
@@ -13,8 +13,8 @@ module Surrealist
13
13
  def assign(schema, instance)
14
14
  value = raw_value(instance, schema)
15
15
 
16
- # array to track and prevent infinite self references in surrealization
17
- @stack ||= []
16
+ # set to track and prevent infinite self references in surrealization
17
+ @skip_set ||= Set.new
18
18
 
19
19
  if value.respond_to?(:build_schema)
20
20
  yield assign_nested_record(instance, value)
@@ -61,11 +61,8 @@ module Surrealist
61
61
  #
62
62
  # @return [Array] of schemas
63
63
  def assign_nested_collection(instance, value)
64
- return if @stack.include?(value.first.class)
65
- @stack.push(instance.class).push(value.first.class)
66
- result = Surrealist.surrealize_collection(value, raw: true)
67
- @stack.delete(instance.class)
68
- result
64
+ return if @skip_set.include?(value.first.class)
65
+ with_skip_set(instance.class) { Surrealist.surrealize_collection(value, raw: true) }
69
66
  end
70
67
 
71
68
  # Assists in recursively generating schema for a record while preventing infinite self-referencing
@@ -75,10 +72,20 @@ module Surrealist
75
72
  #
76
73
  # @return [Hash] schema
77
74
  def assign_nested_record(instance, value)
78
- return if @stack.include?(value.class)
79
- @stack.push(instance.class)
80
- result = value.build_schema
81
- @stack.delete(instance.class)
75
+ return if @skip_set.include?(value.class)
76
+ with_skip_set(instance.class) { value.build_schema }
77
+ end
78
+
79
+ # Run block with klass in skip set
80
+ #
81
+ # @param [Class] klass of current instance.
82
+ #
83
+ # @return [Object] block result
84
+ def with_skip_set(klass)
85
+ return yield if @skip_set.include?(klass)
86
+ @skip_set.add(klass)
87
+ result = yield
88
+ @skip_set.delete(klass)
82
89
  result
83
90
  end
84
91
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Surrealist
4
4
  # Defines the version of Surrealist
5
- VERSION = '1.1.0'.freeze
5
+ VERSION = '1.1.1'.freeze
6
6
  end
data/surrealist.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'surrealist/version'
6
6
 
@@ -24,11 +24,11 @@ Gem::Specification.new do |spec|
24
24
  spec.require_paths = ['lib']
25
25
  spec.required_ruby_version = '>= 2.2.0'
26
26
 
27
- spec.add_runtime_dependency 'oj', '3.4.0'
27
+ spec.add_runtime_dependency 'oj', '~> 3.0'
28
28
 
29
29
  spec.add_development_dependency 'bundler', '~> 1.16'
30
30
  spec.add_development_dependency 'pry', '~> 0.11'
31
31
  spec.add_development_dependency 'rake', '~> 12.3'
32
32
  spec.add_development_dependency 'rspec', '~> 3.7'
33
- spec.add_development_dependency 'rubocop', '~> 0.52'
33
+ spec.add_development_dependency 'rubocop', '~> 0.54'
34
34
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: surrealist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Esaulov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-28 00:00:00.000000000 Z
11
+ date: 2018-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.4.0
19
+ version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.4.0
26
+ version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.52'
89
+ version: '0.54'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.52'
96
+ version: '0.54'
97
97
  description: A gem that provides DSL for serialization of plain old Ruby objects to
98
98
  JSON in a declarative style by defining a `schema`. It also provides a trivial type
99
99
  checking in the runtime before serialization.
@@ -114,6 +114,7 @@ files:
114
114
  - LICENSE.txt
115
115
  - README.md
116
116
  - Rakefile
117
+ - _config.yml
117
118
  - benchmarks/surrealist_vs_ams.rb
118
119
  - bin/console
119
120
  - gemfiles/activerecord42.gemfile