easy_serializer 0.1.3 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 358888cc7f61e9b3510147bbe505d1418225b41e
4
- data.tar.gz: 2de0f0cda813e67bd51a10166da9b05a5d854f8b
3
+ metadata.gz: e23789313fd87585246d0510e59fa3c512d41587
4
+ data.tar.gz: c7bdfb7eb7f55d31f1e6a57e0009e713d88f5eb0
5
5
  SHA512:
6
- metadata.gz: 09d793a662fb451a75f0a503361e62f1d38677f46e3297b432d31348f11d810c1c87dd88efbc00ff35177cde624189303273f3a730ec86c3c2d840f3f519b66c
7
- data.tar.gz: 5855120cdba4d4eb42e77c7da6f0e25ab80225f62c9ada0cb19298cd09078c16c3126b66c7cf2766cce7bcd54cc905f2d4d05e6b1e6007d978fc9d83beaad568
6
+ metadata.gz: 19671f04e8fa2537334650ea8cc386932b38ac8e754c2d8b8fdfce9b6508b2f208f542ca6d7c81c47ceb59fc8d590b1bb6cb3034f713f44625fd72ad13951d75
7
+ data.tar.gz: 3a2aa87a28f38e80b90e1a5d91a90dcae99491af22513bd015cebcf72f8df3eb3cc17660f465f287f5cdcd31d54e18d9709d6ffb2905512e919797997fa36f4e
data/.coveralls.yml ADDED
@@ -0,0 +1,2 @@
1
+ service_name: travis-ci
2
+ repo_token: v9fcGs1CUZiWzFqYYpYYPAVTbxDbM6cm5
data/.travis.yml CHANGED
@@ -1,4 +1,34 @@
1
+ sudo: false
2
+ cache: bundler
1
3
  language: ruby
2
4
  rvm:
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - 2.1
3
8
  - 2.1.6
4
- before_install: gem install bundler -v 1.10.4
9
+ - 2.2
10
+ - 2.3.0
11
+ - ruby-head
12
+ - jruby-19mode
13
+ - jruby-9.0.1.0
14
+ - rbx-3
15
+ env:
16
+ # this doesn't do anything for MRI or RBX, but it doesn't hurt them either
17
+ # for JRuby, it enables us to get more accurate coverage data
18
+ - JRUBY_OPTS="--debug"
19
+ matrix:
20
+ allow_failures:
21
+ - rvm: 1.9.3
22
+ - rvm: ruby-head
23
+ - rvm: rbx-3
24
+ - rvm: jruby-19mode
25
+ - rvm: jruby-9.0.1.0
26
+ fast_finish: true
27
+ before_install: gem update --remote bundler
28
+ install:
29
+ - bundle install --retry=3
30
+ script:
31
+ - bundle exec rspec
32
+ addons:
33
+ code_climate:
34
+ repo_token: 723c5d2fd0e1726d6efeea17ecd5aa22d0945a942ba3b21fdebc03f733359706
data/Gemfile CHANGED
@@ -3,4 +3,6 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in easy_serializer.gemspec
4
4
  gemspec
5
5
  gem 'pry'
6
- gem 'simplecov', :require => false, :group => :test
6
+ gem 'contextuable', '~> 0.4'
7
+ gem 'coveralls', require: false
8
+ gem "codeclimate-test-reporter", group: :test, require: false
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # EasySerializer
2
2
 
3
- [ ![Codeship Status for arturictus/easy_serializer](https://codeship.com/projects/5a101d20-6dda-0133-b7b2-666194911eaf/status?branch=master)](https://codeship.com/projects/115737)
4
- [![Code Climate](https://codeclimate.com/github/arturictus/easy_serializer/badges/gpa.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
3
+ [![Build Status](https://travis-ci.org/arturictus/easy_serializer.svg?branch=master)](https://travis-ci.org/arturictus/easy_serializer)
4
+ [![Gem Version](https://badge.fury.io/rb/easy_serializer.svg)](https://badge.fury.io/rb/easy_serializer)
5
5
  [![Test Coverage](https://codeclimate.com/github/arturictus/easy_serializer/badges/coverage.svg)](https://codeclimate.com/github/arturictus/easy_serializer/coverage)
6
+ [![Code Climate](https://codeclimate.com/github/arturictus/easy_serializer/badges/gpa.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
7
+ [![Issue Count](https://codeclimate.com/github/arturictus/easy_serializer/badges/issue_count.svg)](https://codeclimate.com/github/arturictus/easy_serializer)
6
8
 
7
9
  Semantic serializer for making easy serializing objects.
8
10
  EasySerializer is inspired in [ActiveModel Serializer > 0.10] (https://github.com/rails-api/active_model_serializers/tree/v0.10.0.rc3) it's a
@@ -3,6 +3,7 @@ require 'active_support/all'
3
3
 
4
4
  module EasySerializer
5
5
  include ActiveSupport::Configurable
6
+ extend ActiveSupport::Autoload
6
7
 
7
8
  def self.setup
8
9
  yield self
@@ -10,9 +11,14 @@ module EasySerializer
10
11
 
11
12
  config_accessor(:perform_caching) { false }
12
13
  config_accessor(:cache)
13
- end
14
14
 
15
- require 'easy_serializer/helpers'
16
- require 'easy_serializer/cacher'
17
- require 'easy_serializer/attribute'
18
- require 'easy_serializer/base'
15
+ autoload :Helpers
16
+ autoload :Cacher
17
+ autoload :RootCacher
18
+ autoload :Attribute
19
+ autoload :AttributeSerializer
20
+ autoload :Base
21
+ autoload :CacheOutput
22
+ autoload :Field
23
+ autoload :Collection
24
+ end
@@ -1,60 +1,15 @@
1
1
  module EasySerializer
2
- Attribute = Struct.new(:serializer, :setup) do
2
+ class Attribute < Field
3
3
  include Helpers
4
- def self.call(serializer, setup)
5
- new(serializer, setup).value
6
- end
7
-
8
- def object
9
- serializer.object
10
- end
11
- def value
12
- value_or_default
13
- end
14
-
15
- def value_or_default
16
- value = attr_serializer
17
- if value.nil? && setup[:default]
18
- return option_to_value(setup[:default], object, serializer)
19
- end
20
- value
21
- end
22
4
 
23
- def attr_serializer
24
- value = cache_or_attribute
25
- return value.output if value.is_a?(CacheOutput)
26
- return value unless serializer_class = setup[:serializer]
27
- if setup[:collection]
28
- Array.wrap(value).map { |o| serialize!(serializer_class, o) }
29
- else
30
- serialize!(serializer_class, value)
31
- end
32
- end
33
- def send_name(obj)
34
- obj.send(setup[:name])
5
+ def default?
6
+ options[:default]
35
7
  end
36
8
 
37
- def cache_or_attribute
38
- execute = setup[:block] || method(:send_name)
39
- if EasySerializer.perform_caching && setup[:cache]
40
- Cacher.call(serializer, setup, nil, &execute)
41
- else
42
- serializer.instance_exec object, &execute
43
- end
9
+ def get_default(object, serializer)
10
+ return unless default?
11
+ option_to_value(options[:default], object, serializer)
44
12
  end
45
13
 
46
- def send_to_serializer(serializer_class, value)
47
- return unless value
48
- option_to_value(serializer_class, value, serializer).call(value)
49
- end
50
-
51
- def serialize!(serializer_class, value)
52
- return unless value
53
- if EasySerializer.perform_caching && setup[:cache]
54
- Cacher.call(serializer, setup, value)
55
- else
56
- send_to_serializer(serializer_class, value)
57
- end
58
- end
59
14
  end
60
15
  end
@@ -0,0 +1,51 @@
1
+ module EasySerializer
2
+ AttributeSerializer = Struct.new(:serializer, :metadata) do
3
+ include Helpers
4
+ def self.call(serializer, metadata)
5
+ new(serializer, metadata).value
6
+ end
7
+
8
+ def object
9
+ serializer.object
10
+ end
11
+
12
+ def value
13
+ value_or_default
14
+ end
15
+
16
+ def value_or_default
17
+ value = attr_serializer
18
+ # Check if value is nil
19
+ # eval option default ( in case is block)
20
+ if value.nil?
21
+ return metadata.get_default(object, serializer)
22
+ end
23
+ value
24
+ end
25
+
26
+ def attr_serializer
27
+ value = cache_or_attribute
28
+
29
+ return value.output if value.is_a?(CacheOutput)
30
+ return value unless metadata.nested_serializer?
31
+ if metadata.is_a? Collection
32
+ Array.wrap(value).map { |o| nested_serialization!(o) }
33
+ else
34
+ nested_serialization!(value)
35
+ end
36
+ end
37
+
38
+ def cache_or_attribute
39
+ if EasySerializer.perform_caching && metadata.catch?
40
+ Cacher.new(serializer, metadata).execute
41
+ else
42
+ serializer.instance_exec object, &metadata.get_value
43
+ end
44
+ end
45
+
46
+ def nested_serialization!(value)
47
+ return unless value
48
+ metadata.serialize!(value, serializer)
49
+ end
50
+ end
51
+ end
@@ -19,7 +19,7 @@ module EasySerializer
19
19
 
20
20
  def attribute(name, opts = {}, &block)
21
21
  @__serializable_attributes ||= []
22
- @__serializable_attributes << { name: name, block: block }.merge(opts)
22
+ @__serializable_attributes << Attribute.new(name, opts, block)
23
23
  end
24
24
 
25
25
  def cache(bool, opts = {}, &block)
@@ -35,8 +35,8 @@ module EasySerializer
35
35
  end
36
36
 
37
37
  def collection(name, opts = {}, &block)
38
- opts = opts.merge(collection: true)
39
- attribute(name, opts, &block)
38
+ @__serializable_attributes ||= []
39
+ @__serializable_attributes << Collection.new(name, opts, block)
40
40
  end
41
41
  end
42
42
 
@@ -52,15 +52,19 @@ module EasySerializer
52
52
  option_to_value(serializer, value).call(value)
53
53
  end
54
54
 
55
+ def __cache
56
+ self.class.instance_variable_get(:@__cache)
57
+ end
58
+
55
59
  private
56
60
 
57
61
  def _serialize
58
- __serializable_attributes.each_with_object({}) do |setup, hash|
59
- if setup[:key] === false
60
- hash.merge!(value_or_default(setup))
62
+ __serializable_attributes.each_with_object({}) do |metadata, hash|
63
+ if metadata.options[:key] === false
64
+ hash.merge!(value_or_default(metadata))
61
65
  else
62
- key = (setup[:key] ? setup[:key] : setup[:name])
63
- hash[key] = value_or_default(setup)
66
+ key = (metadata.options[:key] ? metadata.options[:key] : metadata.name)
67
+ hash[key] = value_or_default(metadata)
64
68
  end
65
69
  end
66
70
  end
@@ -69,62 +73,16 @@ module EasySerializer
69
73
  return false unless EasySerializer.perform_caching
70
74
  cache = __cache
71
75
  return false unless cache
72
- Cacher.root_call(self, cache, object) { _serialize }.output
73
- end
74
-
75
- def __cache
76
- self.class.instance_variable_get(:@__cache)
76
+ RootCacher.call(self){ _serialize }
77
77
  end
78
78
 
79
79
  def __serializable_attributes
80
80
  self.class.instance_variable_get(:@__serializable_attributes) || []
81
81
  end
82
82
 
83
- def value_or_default(setup)
84
- Attribute.call(self, setup)
83
+ def value_or_default(metadata)
84
+ AttributeSerializer.call(self, metadata)
85
85
  end
86
86
 
87
- # def value_or_default(setup)
88
- # value = attr_serializer(setup)
89
- # if value.nil? && setup[:default]
90
- # return option_to_value(setup[:default], object)
91
- # end
92
- # value
93
- # end
94
- #
95
- # def attr_serializer(setup)
96
- # value = cache_or_attribute(setup)
97
- # return value if value.respond_to?(:fetch) || value.respond_to?(:each)
98
- # return value unless serializer = setup[:serializer]
99
- # if setup[:collection]
100
- # Array.wrap(value).map { |o| cache_or_serialize(serializer, o, setup) }
101
- # else
102
- # cache_or_serialize(serializer, value, setup)
103
- # end
104
- # end
105
- #
106
- # def cache_or_attribute(setup)
107
- # execute = setup[:block] || proc { |o| o.send(setup[:name]) }
108
- # if EasySerializer.perform_caching && setup[:cache]
109
- # Cacher.call(self, setup, nil, &execute)
110
- # else
111
- # if object.respond_to?(:each)
112
- # object.map { |o| instance_exec o, &execute }
113
- # else
114
- # instance_exec object, &execute
115
- # end
116
- # end
117
- # end
118
- #
119
- # def cache_or_serialize(serializer, value, opts)
120
- # return unless value
121
- # if EasySerializer.perform_caching && opts[:cache]
122
- # Cacher.call(self, opts, value)
123
- # else
124
- # send_to_serializer(serializer, value)
125
- # end
126
- # end
127
-
128
-
129
87
  end
130
88
  end
@@ -0,0 +1,3 @@
1
+ module EasySerializer
2
+ CacheOutput = Struct.new(:output)
3
+ end
@@ -1,80 +1,31 @@
1
1
  module EasySerializer
2
- CacheOutput = Struct.new(:output)
3
- Cacher = Struct.new(:serializer) do
4
- include Helpers
5
-
6
- def self.call(serializer, options, value, &block)
7
- Cacher.new(serializer)
8
- .set(options: options, block: block, value: value)
9
- .execute
10
- end
11
-
12
- def self.root_call(serializer, options, value, &block)
13
- options[:cache_key] = options[:key]
14
- options[:root_call] = true
15
- call(serializer, options, value, &block)
16
- end
17
-
18
- attr_accessor :object, :options, :block
19
- attr_writer :value
20
-
21
- delegate :object, to: :serializer
22
-
23
- def set(options)
24
- options.each { |k, v| send("#{k}=", v) }
25
- self
2
+ class Cacher
3
+ attr_reader :serializer, :metadata
4
+ def initialize(serializer, metadata)
5
+ @serializer = serializer
6
+ @metadata = metadata
26
7
  end
27
8
 
28
- def value
29
- return unless object && block
30
- @value ||= serializer.instance_exec object, &block
31
- end
32
-
33
- def key(_value = nil)
34
- _value ||= value
35
- @key ||= if options[:cache_key]
36
- option_to_value(options[:cache_key], _value, serializer)
37
- elsif options[:serializer] || options[:root_call]
38
- [_value, 'EasySerialized'].flatten
39
- else
40
- [_value, options[:name], 'EasySerialized'].flatten
41
- end
42
- end
43
-
44
- def options_for_cache
45
- if options[:root_call]
46
- options.except(:block, :cache_key, :root_call, :serializer, :key)
47
- else
48
- options[:cache_options]
49
- end || {}
50
- end
51
-
52
- def _block_to_execute(_value = nil)
53
- _value ||= value
54
- if options[:serializer]
55
- proc { serializer.send_to_serializer(options[:serializer], _value) }
56
- else
57
- proc { serializer.instance_exec object, &block }
58
- end
59
- end
60
-
61
- def fetch(_key = nil, _value = nil)
62
- _key ||= key
63
- _value ||= value
64
- EasySerializer.cache.fetch(_key, options_for_cache, &_block_to_execute(_value))
9
+ def execute
10
+ CacheOutput.new(_execute)
65
11
  end
66
12
 
67
- def wrap(elem)
68
- CacheOutput.new(elem)
69
- end
13
+ private
70
14
 
71
- def execute
72
- elem = if options[:collection]
73
- Array.wrap(value).map{ |o| fetch(key(o), o) }
74
- else
75
- fetch
76
- end
77
- wrap(elem)
15
+ def _execute
16
+ strategy = if metadata.is_a?(EasySerializer::Collection)
17
+ Collection
18
+ elsif metadata.serializer?
19
+ Serializer
20
+ else
21
+ Method
22
+ end
23
+ strategy.call(serializer, metadata)
78
24
  end
79
25
  end
80
26
  end
27
+
28
+ require 'easy_serializer/cacher/template'
29
+ require 'easy_serializer/cacher/collection'
30
+ require 'easy_serializer/cacher/method'
31
+ require 'easy_serializer/cacher/serializer'
@@ -0,0 +1,40 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Collection < Template
4
+
5
+ def execute
6
+ collection.map do |elem|
7
+ fetch(key(elem), elem)
8
+ end
9
+ end
10
+
11
+ def collection
12
+ @collection ||= serializer.instance_exec serializer.object, &metadata.get_value
13
+ end
14
+
15
+ def key(elem)
16
+ if metadata_key
17
+ [elem, metadata_key, nested_serializer.name]
18
+ else
19
+ [elem, nested_serializer.name]
20
+ end.flatten
21
+ end
22
+
23
+ def options
24
+ metadata.cache_options || {}
25
+ end
26
+
27
+ def block_to_get_value(elem)
28
+ proc { nested_serializer.call(elem) }
29
+ end
30
+
31
+ def nested_serializer
32
+ metadata.serializer(serializer.object, serializer)
33
+ end
34
+
35
+ def fetch(key, elem)
36
+ EasySerializer.cache.fetch(key, options, &block_to_get_value(elem))
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,31 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Method < Template
4
+
5
+ def execute
6
+ fetch
7
+ end
8
+
9
+ def key
10
+ cache_key = if metadata.cache_key
11
+ option_to_value(metadata.cache_key, serializer.object, serializer)
12
+ else
13
+ metadata.name
14
+ end
15
+ [serializer.object, cache_key, serializer.class.name].flatten
16
+ end
17
+
18
+ def options
19
+ metadata.cache_options || {}
20
+ end
21
+
22
+ def block_to_get_value
23
+ proc { serializer.instance_exec serializer.object, &metadata.get_value }
24
+ end
25
+
26
+ def fetch
27
+ EasySerializer.cache.fetch(key, options, &block_to_get_value)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,38 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Serializer < Template
4
+
5
+ def execute
6
+ fetch
7
+ end
8
+
9
+ def key
10
+ if metadata_key
11
+ [value, metadata_key, nested_serializer.name]
12
+ else
13
+ [value, nested_serializer.name]
14
+ end.flatten
15
+ end
16
+
17
+ def options
18
+ metadata.cache_options || {}
19
+ end
20
+
21
+ def block_to_get_value
22
+ proc { metadata.serialize!(value, serializer) }
23
+ end
24
+
25
+ def value
26
+ serializer.instance_exec serializer.object, &metadata.get_value
27
+ end
28
+
29
+ def nested_serializer
30
+ metadata.serializer(serializer.object, serializer)
31
+ end
32
+
33
+ def fetch
34
+ EasySerializer.cache.fetch(key, options, &block_to_get_value)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,26 @@
1
+ module EasySerializer
2
+ class Cacher
3
+ class Template
4
+ include Helpers
5
+ attr_reader :serializer, :metadata
6
+
7
+ def initialize(serializer, metadata)
8
+ @serializer = serializer
9
+ @metadata = metadata
10
+ end
11
+
12
+ def self.call(*args)
13
+ new(*args).execute
14
+ end
15
+
16
+ private
17
+
18
+ def metadata_key
19
+ return @metadata_key if defined?(@metadata_key)
20
+ @metadata_key = if metadata.cache_key
21
+ option_to_value(metadata.cache_key, serializer.object, serializer)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ module EasySerializer
2
+ class Collection < Field
3
+ attr_reader :_options, :name, :block
4
+ def initialize(name, options, block)
5
+ @name = name
6
+ @_options = options
7
+ @block = block
8
+ end
9
+
10
+ def options
11
+ received_opts.merge(collection: true)
12
+ end
13
+
14
+ def received_opts
15
+ _options || {}
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,51 @@
1
+ module EasySerializer
2
+ Field = Struct.new(:name, :options, :block) do
3
+ include Helpers
4
+
5
+ def get_value
6
+ if block
7
+ block
8
+ else
9
+ method(:send_method)
10
+ end
11
+ end
12
+
13
+ def send_method(obj)
14
+ obj.send(name)
15
+ end
16
+
17
+ def catch?
18
+ options[:cache]
19
+ end
20
+
21
+ def serializer?
22
+ !!options[:serializer]
23
+ end
24
+ alias_method :nested_serializer?, :serializer?
25
+
26
+ def cache_options
27
+ options[:cache_options]
28
+ end
29
+
30
+ def cache_key
31
+ options[:cache_key]
32
+ end
33
+
34
+ def nested_serializer
35
+ @serializer
36
+ end
37
+
38
+ def serializer(object, serializer_instance)
39
+ return unless serializer?
40
+ option_to_value(options[:serializer], object, serializer_instance)
41
+ end
42
+ alias_method :nested_serializer=, :serializer
43
+
44
+ # Important!!! DO NOT memoize this method
45
+ def serialize!(object, serializer_instance)
46
+ serializer = serializer(object, serializer_instance)
47
+ return unless serializer
48
+ serializer.call(object)
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ module EasySerializer
2
+ class RootCacher
3
+ include Helpers
4
+
5
+ def self.call(serializer, &block)
6
+ new(serializer, &block).execute
7
+ end
8
+
9
+ attr_reader :serializer, :block
10
+ def initialize(serializer, &block)
11
+ @serializer = serializer
12
+ @block = block
13
+ end
14
+
15
+ def execute
16
+ fetch
17
+ end
18
+
19
+ def object
20
+ serializer.object
21
+ end
22
+
23
+ def options
24
+ serializer.__cache.except(:block, :cache_key, :root_call, :serializer, :key)
25
+ end
26
+
27
+ def key
28
+ custom = serializer.__cache[:key]
29
+ if custom
30
+ option_to_value(custom, object, serializer)
31
+ else
32
+ [object, 'EasySerialized'].flatten
33
+ end
34
+ end
35
+
36
+ def fetch
37
+ EasySerializer.cache.fetch(key, options, &block)
38
+ end
39
+
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module EasySerializer
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Pañach
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-03-13 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,6 +76,7 @@ executables: []
76
76
  extensions: []
77
77
  extra_rdoc_files: []
78
78
  files:
79
+ - ".coveralls.yml"
79
80
  - ".gitignore"
80
81
  - ".rspec"
81
82
  - ".travis.yml"
@@ -89,9 +90,18 @@ files:
89
90
  - easy_serializer.gemspec
90
91
  - lib/easy_serializer.rb
91
92
  - lib/easy_serializer/attribute.rb
93
+ - lib/easy_serializer/attribute_serializer.rb
92
94
  - lib/easy_serializer/base.rb
95
+ - lib/easy_serializer/cache_output.rb
93
96
  - lib/easy_serializer/cacher.rb
97
+ - lib/easy_serializer/cacher/collection.rb
98
+ - lib/easy_serializer/cacher/method.rb
99
+ - lib/easy_serializer/cacher/serializer.rb
100
+ - lib/easy_serializer/cacher/template.rb
101
+ - lib/easy_serializer/collection.rb
102
+ - lib/easy_serializer/field.rb
94
103
  - lib/easy_serializer/helpers.rb
104
+ - lib/easy_serializer/root_cacher.rb
95
105
  - lib/easy_serializer/version.rb
96
106
  homepage: https://github.com/arturictus/easy_serializer
97
107
  licenses:
@@ -113,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
123
  version: '0'
114
124
  requirements: []
115
125
  rubyforge_project:
116
- rubygems_version: 2.2.3
126
+ rubygems_version: 2.4.5
117
127
  signing_key:
118
128
  specification_version: 4
119
129
  summary: Semantic serializer for making easy serializing objects.