surrealist 1.1.0 → 1.1.1

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