representable 2.3.0 → 2.4.0.rc1

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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +47 -0
  3. data/Gemfile +5 -0
  4. data/README.md +33 -0
  5. data/lib/representable.rb +60 -73
  6. data/lib/representable/binding.rb +37 -194
  7. data/lib/representable/cached.rb +10 -46
  8. data/lib/representable/coercion.rb +8 -8
  9. data/lib/representable/config.rb +15 -75
  10. data/lib/representable/debug.rb +41 -59
  11. data/lib/representable/declarative.rb +34 -53
  12. data/lib/representable/decorator.rb +11 -40
  13. data/lib/representable/definition.rb +14 -15
  14. data/lib/representable/deprecations.rb +90 -0
  15. data/lib/representable/deserializer.rb +87 -82
  16. data/lib/representable/for_collection.rb +5 -3
  17. data/lib/representable/hash.rb +5 -3
  18. data/lib/representable/hash/binding.rb +6 -15
  19. data/lib/representable/hash/collection.rb +10 -6
  20. data/lib/representable/hash_methods.rb +5 -5
  21. data/lib/representable/insert.rb +31 -0
  22. data/lib/representable/json.rb +7 -3
  23. data/lib/representable/json/hash.rb +1 -1
  24. data/lib/representable/object/binding.rb +5 -5
  25. data/lib/representable/parse_strategies.rb +37 -3
  26. data/lib/representable/pipeline.rb +37 -5
  27. data/lib/representable/pipeline_factories.rb +88 -0
  28. data/lib/representable/serializer.rb +38 -44
  29. data/lib/representable/version.rb +1 -1
  30. data/lib/representable/xml.rb +4 -0
  31. data/lib/representable/xml/binding.rb +25 -31
  32. data/lib/representable/xml/collection.rb +5 -3
  33. data/lib/representable/xml/hash.rb +7 -2
  34. data/lib/representable/yaml.rb +6 -3
  35. data/lib/representable/yaml/binding.rb +4 -4
  36. data/representable.gemspec +3 -3
  37. data/test/---deserialize-pipeline_test.rb +37 -0
  38. data/test/binding_test.rb +7 -7
  39. data/test/cached_test.rb +31 -19
  40. data/test/coercion_test.rb +2 -2
  41. data/test/config/inherit_test.rb +13 -12
  42. data/test/config_test.rb +12 -67
  43. data/test/decorator_test.rb +4 -5
  44. data/test/default_test.rb +34 -0
  45. data/test/defaults_options_test.rb +93 -0
  46. data/test/definition_test.rb +19 -39
  47. data/test/exec_context_test.rb +1 -1
  48. data/test/filter_test.rb +18 -20
  49. data/test/getter_setter_test.rb +1 -8
  50. data/test/hash_bindings_test.rb +13 -13
  51. data/test/heritage_test.rb +62 -0
  52. data/test/if_test.rb +1 -0
  53. data/test/inherit_test.rb +5 -3
  54. data/test/instance_test.rb +3 -4
  55. data/test/json_test.rb +3 -59
  56. data/test/lonely_test.rb +47 -3
  57. data/test/nested_test.rb +8 -2
  58. data/test/pipeline_test.rb +259 -0
  59. data/test/populator_test.rb +76 -0
  60. data/test/realistic_benchmark.rb +39 -7
  61. data/test/render_nil_test.rb +21 -0
  62. data/test/represent_test.rb +2 -2
  63. data/test/representable_test.rb +33 -103
  64. data/test/schema_test.rb +5 -15
  65. data/test/serialize_deserialize_test.rb +2 -2
  66. data/test/skip_test.rb +1 -1
  67. data/test/test_helper.rb +6 -0
  68. data/test/uncategorized_test.rb +67 -0
  69. data/test/xml_bindings_test.rb +6 -6
  70. data/test/xml_test.rb +6 -6
  71. metadata +33 -13
  72. data/lib/representable/apply.rb +0 -13
  73. data/lib/representable/inheritable.rb +0 -71
  74. data/lib/representable/mapper.rb +0 -83
  75. data/lib/representable/populator.rb +0 -56
  76. data/test/inheritable_test.rb +0 -97
@@ -6,7 +6,7 @@ class RepresentTest < MiniTest::Spec
6
6
 
7
7
  for_formats(
8
8
  :hash => [Representable::Hash, out=[{"name" => "Days Go By"}, {"name"=>"Can't Take Them All"}], out],
9
- :json => [Representable::JSON, out="[{\"name\":\"Days Go By\"},{\"name\":\"Can't Take Them All\"}]", out],
9
+ # :json => [Representable::JSON, out="[{\"name\":\"Days Go By\"},{\"name\":\"Can't Take Them All\"}]", out],
10
10
  # :xml => [Representable::XML, out="<a><song></song><song></song></a>", out]
11
11
  ) do |format, mod, output, input|
12
12
 
@@ -40,7 +40,7 @@ class RepresentTest < MiniTest::Spec
40
40
  }
41
41
 
42
42
  it { render(representer.represent(songs)).must_equal_document output }
43
- it { parse(representer.represent([]), input).must_equal songs }
43
+ it("ficken") { parse(representer.represent([]), input).must_equal songs }
44
44
  end
45
45
  end
46
46
 
@@ -281,39 +281,48 @@ class RepresentableTest < MiniTest::Spec
281
281
  end
282
282
 
283
283
  describe "passing options" do
284
- class Track
285
- attr_accessor :nr
286
- end
287
-
288
284
  module TrackRepresenter
289
285
  include Representable::Hash
290
- property :nr
291
286
 
292
- def to_hash(options)
293
- @nr = options[:nr]
294
- super
295
- end
296
- def from_hash(data, options)
297
- super.tap do
298
- @nr = options[:nr]
299
- end
300
- end
301
287
  end
302
288
 
303
289
  representer! do
304
- property :track, :extend => TrackRepresenter, :class => Track
305
- end
290
+ property :track, class: OpenStruct do
291
+ property :nr
292
+
293
+ property :length, class: OpenStruct do
294
+ def to_hash(options)
295
+ {seconds: options[:nr]}
296
+ end
297
+
298
+ def from_hash(hash, options)
299
+ super.tap do
300
+ self.seconds = options[:nr]
301
+ end
302
+ end
303
+ end
306
304
 
307
- describe "#to_hash" do
308
- it "propagates to nested objects" do
309
- Song.new("Ocean Song", Track.new).extend(representer).to_hash(:nr => 9).must_equal({"track"=>{"nr"=>9}})
305
+ def to_hash(options)
306
+ super.merge({"nr" => options[:nr]})
307
+ end
308
+
309
+ def from_hash(data, options)
310
+ super.tap do
311
+ self.nr = options[:nr]
312
+ end
313
+ end
310
314
  end
311
315
  end
312
316
 
313
- describe "#from_hash" do
314
- it "propagates to nested objects" do
315
- Song.new.extend(representer).from_hash({"track"=>{"nr" => "replace me"}}, :nr => 9).track.nr.must_equal 9
316
- end
317
+ it "#to_hash propagates to nested objects" do
318
+ OpenStruct.new(track: OpenStruct.new(nr: 1, length: OpenStruct.new(seconds: nil))).extend(representer).extend(Representable::Debug).
319
+ to_hash(nr: 9).must_equal({"track"=>{"nr"=>9, "length"=>{seconds: 9}}})
320
+ end
321
+
322
+ it "#from_hash propagates to nested objects" do
323
+ song = OpenStruct.new.extend(representer).from_hash({"track"=>{"nr" => "replace me", "length"=>{"seconds"=>"replacing"}}}, :nr => 9)
324
+ song.track.nr.must_equal 9
325
+ song.track.length.seconds.must_equal 9
317
326
  end
318
327
  end
319
328
  end
@@ -358,34 +367,6 @@ class RepresentableTest < MiniTest::Spec
358
367
  assert_equal({"name"=>"No One's Choice","groupies"=>false}, @band.to_hash)
359
368
  end
360
369
 
361
- describe "when :render_nil is true" do
362
- it "includes nil attribute" do
363
- mod = Module.new do
364
- include Representable::JSON
365
- property :name
366
- property :groupies, :render_nil => true
367
- end
368
-
369
- @band.extend(mod) # FIXME: use clean object.
370
- @band.groupies = nil
371
- hash = @band.to_hash
372
- assert_equal({"name"=>"No One's Choice", "groupies" => nil}, hash)
373
- end
374
-
375
- it "includes nil attribute without extending" do
376
- mod = Module.new do
377
- include Representable::JSON
378
- property :name
379
- property :groupies, :render_nil => true, :extend => BandRepresentation
380
- end
381
-
382
- @band.extend(mod) # FIXME: use clean object.
383
- @band.groupies = nil
384
- hash = @band.to_hash
385
- assert_equal({"name"=>"No One's Choice", "groupies" => nil}, hash)
386
- end
387
- end
388
-
389
370
  it "does not propagate private options to nested objects" do
390
371
  cover_rpr = Module.new do
391
372
  include Representable::Hash
@@ -519,7 +500,7 @@ class RepresentableTest < MiniTest::Spec
519
500
  representer! do
520
501
  class MyBinding < Representable::Binding
521
502
  def write(doc, *args)
522
- doc[:title] = @represented.title
503
+ doc[:title] = represented.title
523
504
  end
524
505
  end
525
506
  property :title, :binding => lambda { |*args| MyBinding.new(*args) }
@@ -563,55 +544,4 @@ class RepresentableTest < MiniTest::Spec
563
544
  end
564
545
  end
565
546
  end
566
-
567
-
568
- describe "#use_decorator" do
569
- representer! do
570
- property :title, :use_decorator => true do
571
- property :lower
572
- end
573
- end
574
-
575
- it "uses a Decorator for inline representer" do
576
- outer = Struct.new(:title, :lower, :band, :bla).new(inner = Struct.new(:lower).new("paper wings"))
577
-
578
- outer.extend(representer).to_hash.must_equal({"title"=>{"lower"=>"paper wings"}})
579
- outer.must_be_kind_of Representable::Hash
580
- inner.wont_be_kind_of Representable::Hash
581
- end
582
- end
583
-
584
-
585
- # using your own Definition class
586
- class StaticDefinition < Representable::Definition
587
- def initialize(name, options)
588
- options[:as] = :Name
589
- super
590
- end
591
- end
592
-
593
-
594
- module StaticRepresenter
595
- def self.build_config
596
- Representable::Config.new(StaticDefinition)
597
- end
598
- include Representable::Hash
599
-
600
- property :title
601
- end
602
-
603
- # we currently need an intermediate decorator to inherit ::build_config properly.
604
- class BaseDecorator < Representable::Decorator
605
- include Representable::Hash
606
- def self.build_config
607
- Representable::Config.new(StaticDefinition)
608
- end
609
- end
610
-
611
- class StaticDecorator < BaseDecorator
612
- property :title
613
- end
614
-
615
- it { OpenStruct.new(:title => "Tarutiri").extend(StaticRepresenter).to_hash.must_equal({"Name"=>"Tarutiri"}) }
616
- it { StaticDecorator.new(OpenStruct.new(:title => "Tarutiri")).to_hash.must_equal({"Name"=>"Tarutiri"}) }
617
547
  end
@@ -109,7 +109,6 @@ class SchemaTest < MiniTest::Spec
109
109
 
110
110
 
111
111
  class InheritFromDecorator < InheritDecorator
112
-
113
112
  property :label, inherit: true do
114
113
  collection :employees do
115
114
  property :name
@@ -117,6 +116,9 @@ class SchemaTest < MiniTest::Spec
117
116
  end
118
117
  end
119
118
 
119
+ require "pp"
120
+ pp InheritFromDecorator.representable_attrs.get(:label)[:extend].(nil).representable_attrs
121
+
120
122
  it do
121
123
  InheritFromDecorator.new(band).to_hash.must_equal({"genre"=>"Punkrock", "label"=>{"name"=>"Fat Wreck", "city"=>"San Francisco", "employees"=>[{"name"=>"Mike"}], "location"=>{"city"=>"Sanfran"}}})
122
124
  end
@@ -125,6 +127,8 @@ end
125
127
 
126
128
  class ApplyTest < MiniTest::Spec
127
129
  class AlbumDecorator < Representable::Decorator
130
+ include Representable::Hash
131
+
128
132
  property :title
129
133
 
130
134
  property :hit do
@@ -141,18 +145,4 @@ class ApplyTest < MiniTest::Spec
141
145
  end
142
146
  end
143
147
  end
144
-
145
- # #apply
146
- it do
147
- properties = []
148
-
149
- AlbumDecorator.apply do |dfn|
150
- properties << dfn.name
151
- dfn.merge! :cool => true
152
- end.must_equal AlbumDecorator
153
-
154
- properties.must_equal ["title", "hit", "title", "songs", "title", "band", "label", "name"]
155
- # writeable
156
- AlbumDecorator.representable_attrs.get(:band).representer_module.representable_attrs.get(:label).representer_module.representable_attrs.get(:name)[:cool].must_equal true
157
- end
158
148
  end
@@ -7,7 +7,7 @@ class SerializeDeserializeTest < BaseTest
7
7
  representer! do
8
8
  property :song,
9
9
  :instance => lambda { |fragment, *| fragment.to_s.upcase },
10
- :prepare => lambda { |fragment, *| fragment }, # TODO: allow false.
10
+ :prepare => lambda { |fragment, *| fragment },
11
11
  :deserialize => lambda { |object, fragment, args|
12
12
  "#{object} #{fragment} #{args.inspect}"
13
13
  }
@@ -20,7 +20,7 @@ class SerializeDeserializeTest < BaseTest
20
20
  representer! do
21
21
  property :song,
22
22
  :representable => true,
23
- :prepare => lambda { |fragment, *| fragment }, # TODO: allow false.
23
+ :prepare => lambda { |fragment, *| fragment },
24
24
  :serialize => lambda { |object, args|
25
25
  "#{object} #{args.inspect}"
26
26
  }
@@ -9,7 +9,7 @@ class SkipParseTest < MiniTest::Spec
9
9
  end
10
10
 
11
11
  collection :airplays,
12
- skip_parse: lambda { |fragment, opts| puts fragment.inspect; opts[:skip?] and fragment["station"].nil? }, class: OpenStruct do
12
+ skip_parse: lambda { |fragment, opts| opts[:skip?] and fragment["station"].nil? }, class: OpenStruct do
13
13
  property :station
14
14
  end
15
15
  end
@@ -1,10 +1,16 @@
1
1
  require 'representable'
2
+
3
+ require "json"
4
+ require "psych"
5
+
2
6
  require 'representable/json'
3
7
  require 'representable/xml'
4
8
  require 'representable/yaml'
5
9
  require 'minitest/autorun'
6
10
  require 'test_xml/mini_test'
7
11
 
12
+ require "representable/debug"
13
+
8
14
  class Album
9
15
  attr_accessor :songs, :best_song
10
16
  def initialize(songs=nil, best_song=nil)
@@ -0,0 +1,67 @@
1
+ require "test_helper"
2
+
3
+ class StopWhenIncomingObjectFragmentIsNilTest < MiniTest::Spec
4
+ Album = Struct.new(:id, :songs)
5
+ Song = Struct.new(:title)
6
+
7
+ representer!(decorator: true) do
8
+ property :id
9
+ collection :songs, class: Song, parse_pipeline: ->(input, options) { # TODO: test if :doc is set for parsing. test if options are ok and contain :user_options!
10
+ Representable::Pipeline[*parse_functions.insert(3, Representable::StopOnNil)]
11
+ } do
12
+ property :title
13
+ end
14
+ end
15
+
16
+ it do
17
+ album = Album.new
18
+ representer.new(album).from_hash({"id"=>1, "songs"=>[{"title"=>"Walkie Talkie"}]}).songs.must_equal [Song.new("Walkie Talkie")]
19
+ end
20
+
21
+ it do
22
+ album = Album.new(2, ["original"])
23
+ representer.new(album).from_hash({"id"=>1, "songs"=>nil}).songs.must_equal ["original"]
24
+ end
25
+
26
+ end
27
+
28
+ class RenderPipelineOptionTest < MiniTest::Spec
29
+ Album = Struct.new(:id, :songs)
30
+ NilToNA = ->(input, options) { input.nil? ? "n/a" : input }
31
+
32
+ representer!(decorator: true) do
33
+ property :id, render_pipeline: ->(input, options) do
34
+ Representable::Pipeline[*render_functions.insert(2, options[:user_options][:function])]
35
+ end
36
+ end
37
+
38
+ it { representer.new(Album.new).to_hash(function: NilToNA).must_equal({"id"=>"n/a"}) }
39
+ it { representer.new(Album.new(1)).to_hash(function: NilToNA).must_equal({"id"=>1}) }
40
+
41
+ it "is cached" do
42
+ decorator = representer.new(Album.new)
43
+ decorator.to_hash(function: NilToNA).must_equal({"id"=>"n/a"})
44
+ decorator.to_hash(function: nil).must_equal({"id"=>"n/a"}) # non-sense function is not applied.
45
+ end
46
+
47
+ end
48
+
49
+ class ParsePipelineOptionTest < MiniTest::Spec
50
+ Album = Struct.new(:id, :songs)
51
+ NilToNA = ->(input, options) { input.nil? ? "n/a" : input }
52
+
53
+ representer!(decorator: true) do
54
+ property :id, parse_pipeline: ->(input, options) do
55
+ Representable::Pipeline[*parse_functions.insert(3, options[:user_options][:function])].extend(Representable::Pipeline::Debug)
56
+ end
57
+ end
58
+
59
+ it { representer.new(Album.new).from_hash({"id"=>nil}, function: NilToNA).id.must_equal "n/a" }
60
+ it { representer.new(Album.new(1)).to_hash(function: NilToNA).must_equal({"id"=>1}) }
61
+
62
+ it "is cached" do
63
+ decorator = representer.new(Album.new)
64
+ decorator.from_hash({"id"=>nil}, function: NilToNA).id.must_equal "n/a"
65
+ decorator.from_hash({"id"=>nil}, function: "nonsense").id.must_equal "n/a" # non-sense function is not applied.
66
+ end
67
+ end
@@ -29,16 +29,16 @@ class XMLBindingTest < MiniTest::Spec
29
29
  describe "AttributeBinding" do
30
30
  describe "with plain text items" do
31
31
  before do
32
- @property = Representable::XML::Binding::Attribute.new(Representable::Definition.new(:name, :attribute => true), nil)
32
+ @property = Representable::XML::Binding::Attribute.new(Representable::Definition.new(:name, :attribute => true))
33
33
  end
34
34
 
35
35
  it "extracts with #read" do
36
- assert_equal "The Gargoyle", @property.read(Nokogiri::XML("<song name=\"The Gargoyle\" />").root)
36
+ assert_equal "The Gargoyle", @property.read(Nokogiri::XML("<song name=\"The Gargoyle\" />").root, "name")
37
37
  end
38
38
 
39
39
  it "inserts with #write" do
40
40
  parent = Nokogiri::XML::Node.new("song", @doc)
41
- @property.write(parent, "The Gargoyle")
41
+ @property.write(parent, "The Gargoyle", "name")
42
42
  assert_xml_equal("<song name=\"The Gargoyle\" />", parent.to_s)
43
43
  end
44
44
  end
@@ -46,16 +46,16 @@ class XMLBindingTest < MiniTest::Spec
46
46
 
47
47
  describe "ContentBinding" do
48
48
  before do
49
- @property = Representable::XML::Binding::Content.new(Representable::Definition.new(:name, :content => true), nil)
49
+ @property = Representable::XML::Binding::Content.new(Representable::Definition.new(:name, :content => true))
50
50
  end
51
51
 
52
52
  it "extracts with #read" do
53
- assert_equal "The Gargoyle", @property.read(Nokogiri::XML("<song>The Gargoyle</song>").root)
53
+ assert_equal "The Gargoyle", @property.read(Nokogiri::XML("<song>The Gargoyle</song>").root, "song")
54
54
  end
55
55
 
56
56
  it "inserts with #write" do
57
57
  parent = Nokogiri::XML::Node.new("song", @doc)
58
- @property.write(parent, "The Gargoyle")
58
+ @property.write(parent, "The Gargoyle", "song")
59
59
  assert_xml_equal("<song>The Gargoyle</song>", parent.to_s)
60
60
  end
61
61
  end
@@ -104,20 +104,20 @@ class XmlTest < MiniTest::Spec
104
104
 
105
105
  describe "XML::Binding#build_for" do
106
106
  it "returns AttributeBinding" do
107
- assert_kind_of XML::Binding::Attribute, XML::Binding.build_for(Def.new(:band, :as => "band", :attribute => true), nil)
107
+ assert_kind_of XML::Binding::Attribute, XML::Binding.build_for(Def.new(:band, :as => "band", :attribute => true))
108
108
  end
109
109
 
110
110
  it "returns Binding" do
111
- assert_kind_of XML::Binding, XML::Binding.build_for(Def.new(:band, :class => Hash), nil)
112
- assert_kind_of XML::Binding, XML::Binding.build_for(Def.new(:band, :as => :content), nil)
111
+ assert_kind_of XML::Binding, XML::Binding.build_for(Def.new(:band, :class => Hash))
112
+ assert_kind_of XML::Binding, XML::Binding.build_for(Def.new(:band, :as => :content))
113
113
  end
114
114
 
115
115
  it "returns CollectionBinding" do
116
- assert_kind_of XML::Binding::Collection, XML::Binding.build_for(Def.new(:band, :collection => :true), nil)
116
+ assert_kind_of XML::Binding::Collection, XML::Binding.build_for(Def.new(:band, :collection => :true))
117
117
  end
118
118
 
119
119
  it "returns HashBinding" do
120
- assert_kind_of XML::Binding::Hash, XML::Binding.build_for(Def.new(:band, :hash => :true), nil)
120
+ assert_kind_of XML::Binding::Hash, XML::Binding.build_for(Def.new(:band, :hash => :true))
121
121
  end
122
122
  end
123
123
 
@@ -387,7 +387,7 @@ class CollectionTest < MiniTest::Spec
387
387
  self.representation_wrap = :song
388
388
  end
389
389
 
390
- let (:decorator) { rpr = representer; Class.new(Representable::Decorator) { include rpr } }
390
+ let (:decorator) { rpr = representer; Class.new(Representable::Decorator) { include Representable::XML; include rpr } }
391
391
 
392
392
  describe "XML::Collection" do
393
393
  describe "with contained objects" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: representable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-05 00:00:00.000000000 Z
11
+ date: 2015-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: uber
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.0.7
19
+ version: 0.0.15
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: 0.0.7
26
+ version: 0.0.15
27
+ - !ruby/object:Gem::Dependency
28
+ name: declarative
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.4
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +72,14 @@ dependencies:
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: 5.4.1
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: 5.4.1
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: mongoid
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -140,7 +154,6 @@ files:
140
154
  - TODO
141
155
  - lib/representable.rb
142
156
  - lib/representable/TODO.getting_serious
143
- - lib/representable/apply.rb
144
157
  - lib/representable/autoload.rb
145
158
  - lib/representable/binding.rb
146
159
  - lib/representable/cached.rb
@@ -150,6 +163,7 @@ files:
150
163
  - lib/representable/declarative.rb
151
164
  - lib/representable/decorator.rb
152
165
  - lib/representable/definition.rb
166
+ - lib/representable/deprecations.rb
153
167
  - lib/representable/deserializer.rb
154
168
  - lib/representable/for_collection.rb
155
169
  - lib/representable/hash.rb
@@ -157,16 +171,15 @@ files:
157
171
  - lib/representable/hash/binding.rb
158
172
  - lib/representable/hash/collection.rb
159
173
  - lib/representable/hash_methods.rb
160
- - lib/representable/inheritable.rb
174
+ - lib/representable/insert.rb
161
175
  - lib/representable/json.rb
162
176
  - lib/representable/json/collection.rb
163
177
  - lib/representable/json/hash.rb
164
- - lib/representable/mapper.rb
165
178
  - lib/representable/object.rb
166
179
  - lib/representable/object/binding.rb
167
180
  - lib/representable/parse_strategies.rb
168
181
  - lib/representable/pipeline.rb
169
- - lib/representable/populator.rb
182
+ - lib/representable/pipeline_factories.rb
170
183
  - lib/representable/represent.rb
171
184
  - lib/representable/serializer.rb
172
185
  - lib/representable/version.rb
@@ -177,6 +190,7 @@ files:
177
190
  - lib/representable/yaml.rb
178
191
  - lib/representable/yaml/binding.rb
179
192
  - representable.gemspec
193
+ - test/---deserialize-pipeline_test.rb
180
194
  - test/as_test.rb
181
195
  - test/benchmarking.rb
182
196
  - test/binding_test.rb
@@ -187,6 +201,8 @@ files:
187
201
  - test/config_test.rb
188
202
  - test/decorator_scope_test.rb
189
203
  - test/decorator_test.rb
204
+ - test/default_test.rb
205
+ - test/defaults_options_test.rb
190
206
  - test/definition_test.rb
191
207
  - test/example.rb
192
208
  - test/examples/object.rb
@@ -198,9 +214,9 @@ files:
198
214
  - test/getter_setter_test.rb
199
215
  - test/hash_bindings_test.rb
200
216
  - test/hash_test.rb
217
+ - test/heritage_test.rb
201
218
  - test/if_test.rb
202
219
  - test/inherit_test.rb
203
- - test/inheritable_test.rb
204
220
  - test/inline_test.rb
205
221
  - test/instance_test.rb
206
222
  - test/is_representable_test.rb
@@ -211,10 +227,13 @@ files:
211
227
  - test/object_test.rb
212
228
  - test/parse_strategy_test.rb
213
229
  - test/pass_options_test.rb
230
+ - test/pipeline_test.rb
231
+ - test/populator_test.rb
214
232
  - test/prepare_test.rb
215
233
  - test/private_options_test.rb
216
234
  - test/reader_writer_test.rb
217
235
  - test/realistic_benchmark.rb
236
+ - test/render_nil_test.rb
218
237
  - test/represent_test.rb
219
238
  - test/representable_test.rb
220
239
  - test/schema_test.rb
@@ -223,6 +242,7 @@ files:
223
242
  - test/stringify_hash_test.rb
224
243
  - test/test_helper.rb
225
244
  - test/test_helper_test.rb
245
+ - test/uncategorized_test.rb
226
246
  - test/wrap_test.rb
227
247
  - test/xml_bindings_test.rb
228
248
  - test/xml_test.rb
@@ -242,9 +262,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
242
262
  version: '0'
243
263
  required_rubygems_version: !ruby/object:Gem::Requirement
244
264
  requirements:
245
- - - ">="
265
+ - - ">"
246
266
  - !ruby/object:Gem::Version
247
- version: '0'
267
+ version: 1.3.1
248
268
  requirements: []
249
269
  rubyforge_project:
250
270
  rubygems_version: 2.4.8