alba 0.10.0 → 0.10.2

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: e8427c3365aa48ba76f97799757e5e32ae2f746d3b63c67d58e7c7ddadd17bae
4
- data.tar.gz: c995206962d4a041032b76113a2f053e48f50f787af12c491437ff98c55d4d2e
3
+ metadata.gz: c5b12eead5b50b0e426952a2318fa85d852326a078fa5e285dc7a402ee19688d
4
+ data.tar.gz: 89dc5fb1295528255ba028e2dfd8e30a2c136ff8a2ac9b9fb65b869a259f9435
5
5
  SHA512:
6
- metadata.gz: b513dea8cfa68bf09e76114c3d6e14bd77a381f94ad9342c8692034069240c114b9eac95bf071662905de14efe269ac606a7cb2b50ec4107fa393391ed5ddf9d
7
- data.tar.gz: e44bc0f25be1342ea9424c3919c62cd40b1917eac62f6bf612cd7979ead6db5521200eae4d7ef9a795ee373145c4fb5c846886bc1869916fd744596ac57aecbc
6
+ metadata.gz: c7d13ca3b2c592e97501cfb79de3aba84eb9ffeb107099bccde9a55a81b6bd36c93e9acda83d237b1e36de8dc34b3bb5aabbad68c7dd09cb998a5482d11f86f3
7
+ data.tar.gz: 8e9ab49f10f5f09669ffc27135d9fe5fe57da8b5d9e57cd7d250d661d7f5cc0f9453992c78d8db3fbd8c08ed22b4b058266faf63977f95668481151a42434d97
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ gemspec
6
6
  gem 'activesupport', require: false # For backend
7
7
  gem 'coveralls', require: false # For test coverage
8
8
  gem 'minitest', '~> 5.0' # For test
9
- gem 'oj', '~> 3.10', platforms: :ruby # For backend
9
+ gem 'oj', '~> 3.10', platform: :ruby, require: false # For backend
10
10
  gem 'rake', '~> 13.0' # For test and automation
11
11
  gem 'rubocop', '>= 0.79.0', require: false # For lint
12
12
  gem 'rubocop-minitest', '~> 0.10.1', require: false # For lint
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- alba (0.10.0)
4
+ alba (0.10.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -39,6 +39,10 @@ Or install it yourself as:
39
39
 
40
40
  $ gem install alba
41
41
 
42
+ ## Supported Ruby versions
43
+
44
+ Alba supports CRuby 2.5.7 and higher and latest TruffleRuby.
45
+
42
46
  ## Usage
43
47
 
44
48
  ### Configuration
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.description = "Alba is designed to be a simple, easy to use and fast alternative to existing JSON serializers. Its performance is better than almost all gems which do similar things. The internal is so simple that it's easy to hack and maintain."
11
11
  spec.homepage = 'https://github.com/okuramasafumi/alba'
12
12
  spec.license = 'MIT'
13
- spec.required_ruby_version = Gem::Requirement.new('>= 2.5.8')
13
+ spec.required_ruby_version = Gem::Requirement.new('>= 2.5.7')
14
14
 
15
15
  spec.metadata['homepage_uri'] = spec.homepage
16
16
  spec.metadata['source_code_uri'] = 'https://github.com/okuramasafumi/alba'
@@ -1,8 +1,6 @@
1
1
  require 'alba/version'
2
- require 'alba/serializers/default_serializer'
3
2
  require 'alba/serializer'
4
3
  require 'alba/resource'
5
- require 'alba/resources/default_resource'
6
4
 
7
5
  # Core module
8
6
  module Alba
@@ -64,7 +62,10 @@ module Alba
64
62
  end
65
63
 
66
64
  def resource_class
67
- ::Alba::Resources::DefaultResource.clone
65
+ @resource_class ||= begin
66
+ klass = Class.new
67
+ klass.include(Alba::Resource)
68
+ end
68
69
  end
69
70
  end
70
71
 
@@ -17,8 +17,8 @@ module Alba
17
17
  private
18
18
 
19
19
  def resource_class
20
- klass = ::Alba::Resources::DefaultResource.dup
21
- klass.reset
20
+ klass = Class.new
21
+ klass.include(Alba::Resource)
22
22
  klass.class_eval(&@block)
23
23
  klass
24
24
  end
@@ -1,7 +1,6 @@
1
1
  require 'alba/serializer'
2
2
  require 'alba/one'
3
3
  require 'alba/many'
4
- require 'alba/serializers/default_serializer'
5
4
 
6
5
  module Alba
7
6
  # This module represents what should be serialized
@@ -32,7 +31,7 @@ module Alba
32
31
  def serialize(with: nil)
33
32
  serializer = case with
34
33
  when nil
35
- @_serializer || Alba::Serializers::DefaultSerializer
34
+ @_serializer || empty_serializer
36
35
  when ->(obj) { obj.is_a?(Class) && obj <= Alba::Serializer }
37
36
  with
38
37
  when Proc
@@ -71,8 +70,14 @@ module Alba
71
70
  end
72
71
  end
73
72
 
73
+ def empty_serializer
74
+ klass = Class.new
75
+ klass.include Alba::Serializer
76
+ klass
77
+ end
78
+
74
79
  def inline_extended_serializer(with)
75
- klass = ::Alba::Serializers::DefaultSerializer.clone
80
+ klass = empty_serializer
76
81
  klass.class_eval(&with)
77
82
  klass
78
83
  end
@@ -3,6 +3,10 @@ module Alba
3
3
  module Serializer
4
4
  def self.included(base)
5
5
  super
6
+ base.class_eval do
7
+ @_opts = {} unless instance_variable_defined?('@_opts')
8
+ @_metadata = {} unless instance_variable_defined?('@_metadata')
9
+ end
6
10
  base.include InstanceMethods
7
11
  base.extend ClassMethods
8
12
  end
@@ -24,12 +28,12 @@ module Alba
24
28
  private
25
29
 
26
30
  def key
27
- opts = self.class._opts || {}
31
+ opts = self.class._opts
28
32
  opts[:key] == true ? @resource.key : opts[:key]
29
33
  end
30
34
 
31
35
  def metadata
32
- metadata = self.class._metadata || {}
36
+ metadata = self.class._metadata
33
37
  metadata.transform_values { |block| block.call(@resource.object) }
34
38
  end
35
39
  end
@@ -40,16 +44,14 @@ module Alba
40
44
 
41
45
  def inherited(subclass)
42
46
  super
43
- %w[_opts _metadata].each { |name| subclass.instance_variable_set("@#{name}", instance_variable_get("@#{name}")) }
47
+ %w[_opts _metadata].each { |name| subclass.instance_variable_set("@#{name}", public_send(name).clone) }
44
48
  end
45
49
 
46
50
  def set(key: false)
47
- @_opts ||= {}
48
51
  @_opts[:key] = key
49
52
  end
50
53
 
51
54
  def metadata(name, &block)
52
- @_metadata ||= {}
53
55
  @_metadata[name] = block
54
56
  end
55
57
  end
@@ -1,3 +1,3 @@
1
1
  module Alba
2
- VERSION = '0.10.0'.freeze
2
+ VERSION = '0.10.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alba
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OKURA Masafumi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-23 00:00:00.000000000 Z
11
+ date: 2020-08-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Alba is designed to be a simple, easy to use and fast alternative to
14
14
  existing JSON serializers. Its performance is better than almost all gems which
@@ -36,9 +36,7 @@ files:
36
36
  - lib/alba/many.rb
37
37
  - lib/alba/one.rb
38
38
  - lib/alba/resource.rb
39
- - lib/alba/resources/default_resource.rb
40
39
  - lib/alba/serializer.rb
41
- - lib/alba/serializers/default_serializer.rb
42
40
  - lib/alba/version.rb
43
41
  - sider.yml
44
42
  homepage: https://github.com/okuramasafumi/alba
@@ -56,7 +54,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
54
  requirements:
57
55
  - - ">="
58
56
  - !ruby/object:Gem::Version
59
- version: 2.5.8
57
+ version: 2.5.7
60
58
  required_rubygems_version: !ruby/object:Gem::Requirement
61
59
  requirements:
62
60
  - - ">="
@@ -1,13 +0,0 @@
1
- module Alba
2
- module Resources
3
- # Empty resource class, use this with `class_eval` for
4
- # inline associations and serializations.
5
- class DefaultResource
6
- include Alba::Resource
7
-
8
- def self.reset
9
- @_attributes = {}
10
- end
11
- end
12
- end
13
- end
@@ -1,11 +0,0 @@
1
- require 'alba/serializer'
2
-
3
- module Alba
4
- module Serializers
5
- # DefaultSerializer class is used when a user doesn't specify serializer opt.
6
- # It's basically an alias of Alba::Serializer, but since it's a module this class simply include it.
7
- class DefaultSerializer
8
- include Alba::Serializer
9
- end
10
- end
11
- end