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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +4 -0
- data/alba.gemspec +1 -1
- data/lib/alba.rb +4 -3
- data/lib/alba/association.rb +2 -2
- data/lib/alba/resource.rb +8 -3
- data/lib/alba/serializer.rb +7 -5
- data/lib/alba/version.rb +1 -1
- metadata +3 -5
- data/lib/alba/resources/default_resource.rb +0 -13
- data/lib/alba/serializers/default_serializer.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5b12eead5b50b0e426952a2318fa85d852326a078fa5e285dc7a402ee19688d
|
4
|
+
data.tar.gz: 89dc5fb1295528255ba028e2dfd8e30a2c136ff8a2ac9b9fb65b869a259f9435
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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',
|
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
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
data/alba.gemspec
CHANGED
@@ -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.
|
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'
|
data/lib/alba.rb
CHANGED
@@ -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
|
-
|
65
|
+
@resource_class ||= begin
|
66
|
+
klass = Class.new
|
67
|
+
klass.include(Alba::Resource)
|
68
|
+
end
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
data/lib/alba/association.rb
CHANGED
data/lib/alba/resource.rb
CHANGED
@@ -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 ||
|
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 =
|
80
|
+
klass = empty_serializer
|
76
81
|
klass.class_eval(&with)
|
77
82
|
klass
|
78
83
|
end
|
data/lib/alba/serializer.rb
CHANGED
@@ -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}",
|
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
|
data/lib/alba/version.rb
CHANGED
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.
|
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-
|
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.
|
57
|
+
version: 2.5.7
|
60
58
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
59
|
requirements:
|
62
60
|
- - ">="
|
@@ -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
|