alba 0.11.0 → 1.0.0

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.
data/lib/alba/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Alba
2
- VERSION = '0.11.0'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
data/sider.yml CHANGED
@@ -7,6 +7,7 @@ linter:
7
7
  - "rubocop-minitest"
8
8
  - "rubocop-performance"
9
9
  - "rubocop-sensible"
10
+ - "rubocop-rake"
10
11
  safe: false
11
12
 
12
13
  # # https://help.sider.review/tools/ruby/reek
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.11.0
4
+ version: 1.0.0
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-26 00:00:00.000000000 Z
11
+ date: 2021-04-07 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
@@ -19,24 +19,26 @@ executables: []
19
19
  extensions: []
20
20
  extra_rdoc_files: []
21
21
  files:
22
+ - ".github/workflows/main.yml"
22
23
  - ".gitignore"
23
24
  - ".rubocop.yml"
24
- - ".travis.yml"
25
+ - ".yardopts"
26
+ - CHANGELOG.md
25
27
  - CODE_OF_CONDUCT.md
26
28
  - Gemfile
27
- - Gemfile.lock
28
29
  - LICENSE.txt
29
30
  - README.md
30
31
  - Rakefile
31
32
  - alba.gemspec
33
+ - benchmark/local.rb
32
34
  - bin/console
33
35
  - bin/setup
34
36
  - lib/alba.rb
35
37
  - lib/alba/association.rb
38
+ - lib/alba/key_transformer.rb
36
39
  - lib/alba/many.rb
37
40
  - lib/alba/one.rb
38
41
  - lib/alba/resource.rb
39
- - lib/alba/serializer.rb
40
42
  - lib/alba/version.rb
41
43
  - sider.yml
42
44
  homepage: https://github.com/okuramasafumi/alba
@@ -61,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
63
  - !ruby/object:Gem::Version
62
64
  version: '0'
63
65
  requirements: []
64
- rubygems_version: 3.1.4
66
+ rubygems_version: 3.2.14
65
67
  signing_key:
66
68
  specification_version: 4
67
69
  summary: Alba is the fastest JSON serializer for Ruby.
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.5.8
6
- - 2.6.6
7
- - 2.7.1
8
- - truffleruby
9
- before_install: gem install bundler -v 2.1.4
data/Gemfile.lock DELETED
@@ -1,89 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- alba (0.11.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- activesupport (6.0.3.2)
10
- concurrent-ruby (~> 1.0, >= 1.0.2)
11
- i18n (>= 0.7, < 2)
12
- minitest (~> 5.1)
13
- tzinfo (~> 1.1)
14
- zeitwerk (~> 2.2, >= 2.2.2)
15
- ast (2.4.1)
16
- bigdecimal (2.0.0)
17
- concurrent-ruby (1.1.6)
18
- coveralls (0.8.23)
19
- json (>= 1.8, < 3)
20
- simplecov (~> 0.16.1)
21
- term-ansicolor (~> 1.3)
22
- thor (>= 0.19.4, < 2.0)
23
- tins (~> 1.6)
24
- docile (1.3.2)
25
- i18n (1.8.5)
26
- concurrent-ruby (~> 1.0)
27
- json (2.3.1)
28
- minitest (5.14.1)
29
- oj (3.10.12)
30
- bigdecimal (>= 1.0, < 3)
31
- parallel (1.19.2)
32
- parser (2.7.1.4)
33
- ast (~> 2.4.1)
34
- rainbow (3.0.0)
35
- rake (13.0.1)
36
- regexp_parser (1.7.1)
37
- rexml (3.2.4)
38
- rubocop (0.89.1)
39
- parallel (~> 1.10)
40
- parser (>= 2.7.1.1)
41
- rainbow (>= 2.2.2, < 4.0)
42
- regexp_parser (>= 1.7)
43
- rexml
44
- rubocop-ast (>= 0.3.0, < 1.0)
45
- ruby-progressbar (~> 1.7)
46
- unicode-display_width (>= 1.4.0, < 2.0)
47
- rubocop-ast (0.3.0)
48
- parser (>= 2.7.1.4)
49
- rubocop-minitest (0.10.1)
50
- rubocop (>= 0.87)
51
- rubocop-performance (1.7.1)
52
- rubocop (>= 0.82.0)
53
- rubocop-sensible (0.3.0)
54
- rubocop (>= 0.60.0)
55
- ruby-progressbar (1.10.1)
56
- simplecov (0.16.1)
57
- docile (~> 1.1)
58
- json (>= 1.8, < 3)
59
- simplecov-html (~> 0.10.0)
60
- simplecov-html (0.10.2)
61
- sync (0.5.0)
62
- term-ansicolor (1.7.1)
63
- tins (~> 1.0)
64
- thor (1.0.1)
65
- thread_safe (0.3.6)
66
- tins (1.25.0)
67
- sync
68
- tzinfo (1.2.7)
69
- thread_safe (~> 0.1)
70
- unicode-display_width (1.7.0)
71
- zeitwerk (2.4.0)
72
-
73
- PLATFORMS
74
- ruby
75
-
76
- DEPENDENCIES
77
- activesupport
78
- alba!
79
- coveralls
80
- minitest (~> 5.0)
81
- oj (~> 3.10)
82
- rake (~> 13.0)
83
- rubocop (>= 0.79.0)
84
- rubocop-minitest (~> 0.10.1)
85
- rubocop-performance (~> 1.7.1)
86
- rubocop-sensible (~> 0.3.0)
87
-
88
- BUNDLED WITH
89
- 2.1.4
@@ -1,59 +0,0 @@
1
- module Alba
2
- # This module represents how a resource should be serialized.
3
- module Serializer
4
- def self.included(base)
5
- super
6
- base.class_eval do
7
- @_opts = {} unless instance_variable_defined?('@_opts')
8
- @_metadata = {} unless instance_variable_defined?('@_metadata')
9
- end
10
- base.include InstanceMethods
11
- base.extend ClassMethods
12
- end
13
-
14
- # Instance methods
15
- module InstanceMethods
16
- def initialize(resource)
17
- @resource = resource
18
- @hash = resource.serializable_hash
19
- @hash = {key.to_sym => @hash} if key
20
- # @hash is either Hash or Array
21
- @hash.is_a?(Hash) ? @hash.merge!(metadata.to_h) : @hash << metadata
22
- end
23
-
24
- def serialize
25
- Alba.encoder.call(@hash)
26
- end
27
-
28
- private
29
-
30
- def key
31
- opts = self.class._opts
32
- opts[:key] == true ? @resource.key : opts[:key]
33
- end
34
-
35
- def metadata
36
- metadata = self.class._metadata
37
- metadata.transform_values { |block| block.call(@resource.object) }
38
- end
39
- end
40
-
41
- # Class methods
42
- module ClassMethods
43
- attr_reader :_opts, :_metadata
44
-
45
- def inherited(subclass)
46
- super
47
- %w[_opts _metadata].each { |name| subclass.instance_variable_set("@#{name}", public_send(name).clone) }
48
- end
49
-
50
- def set(key: false)
51
- @_opts[:key] = key
52
- end
53
-
54
- def metadata(name, &block)
55
- @_metadata[name] = block
56
- end
57
- end
58
- end
59
- end