disposable 0.1.7 → 0.1.8
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 +4 -4
- data/CHANGES.md +4 -0
- data/database.sqlite3 +0 -0
- data/lib/disposable/twin.rb +4 -2
- data/lib/disposable/version.rb +1 -1
- data/test/twin/collection_test.rb +18 -18
- data/test/twin/inherit_test.rb +2 -2
- data/test/twin/schema_test.rb +24 -0
- data/test/twin/setup_test.rb +6 -6
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a9c9aa07f72bb27f1c9e16676ee32e3fd833227f
         | 
| 4 | 
            +
              data.tar.gz: 6d4fed32a68c0fede66f34eb0e7cf879feccbc41
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1d1bceba1293f838c5a3878b868f0d1efcfe073354e223c3324c8ffca958cedd3c1de7525baed229f1c404e40dfb01294b32038c5988bf39ba300f357a4ad9b2
         | 
| 7 | 
            +
              data.tar.gz: a40cd420d9bbceb1ae884ffec1343f53ba426f1d16bdbdbffc6ed9e68efef4d744619f0ce40a4e8300da24485e989338fdea581d35ecc85e18cad77fefe60a83
         | 
    
        data/CHANGES.md
    CHANGED
    
    
    
        data/database.sqlite3
    CHANGED
    
    | Binary file | 
    
        data/lib/disposable/twin.rb
    CHANGED
    
    | @@ -46,12 +46,13 @@ module Disposable | |
| 46 46 | 
             
                # TODO: move to Declarative, as in Representable and Reform.
         | 
| 47 47 | 
             
                def self.property(name, options={}, &block)
         | 
| 48 48 | 
             
                  options[:private_name] = options.delete(:from) || name
         | 
| 49 | 
            -
                  options[:pass_options] = true
         | 
| 50 49 |  | 
| 51 50 | 
             
                  if options.delete(:virtual)
         | 
| 52 51 | 
             
                    options[:writeable] = options[:readable] = false
         | 
| 53 52 | 
             
                  end
         | 
| 54 53 |  | 
| 54 | 
            +
                  options[:extend] = options[:twin] # e.g. property :album, twin: Album.
         | 
| 55 | 
            +
             | 
| 55 56 | 
             
                  representer_class.property(name, options, &block).tap do |definition|
         | 
| 56 57 | 
             
                    mod = Module.new do
         | 
| 57 58 | 
             
                      define_method(name)       { @fields[name.to_s] }
         | 
| @@ -60,13 +61,14 @@ module Disposable | |
| 60 61 | 
             
                    end
         | 
| 61 62 | 
             
                    include mod
         | 
| 62 63 |  | 
| 64 | 
            +
                    # FIXME: the problem here is that something like twin:{ Album } already gets evaluated here.
         | 
| 63 65 | 
             
                    # property -> build_inline(representable_attrs.features)
         | 
| 64 66 | 
             
                    if definition[:extend]
         | 
| 65 67 | 
             
                      nested_twin = definition[:extend].evaluate(nil)
         | 
| 66 68 | 
             
                      process_inline!(nested_twin, definition)
         | 
| 67 69 | 
             
                      # DISCUSS: could we use build_inline's api here to inject the name feature?
         | 
| 68 70 |  | 
| 69 | 
            -
                      definition.merge!(: | 
| 71 | 
            +
                      definition.merge!(twin: nested_twin)
         | 
| 70 72 | 
             
                    end
         | 
| 71 73 | 
             
                  end
         | 
| 72 74 | 
             
                end
         | 
    
        data/lib/disposable/version.rb
    CHANGED
    
    
| @@ -13,17 +13,17 @@ class TwinCollectionTest < MiniTest::Spec | |
| 13 13 |  | 
| 14 14 |  | 
| 15 15 | 
             
              module Twin
         | 
| 16 | 
            -
                class Album < Disposable::Twin
         | 
| 17 | 
            -
                  property :id # DISCUSS: needed for #save.
         | 
| 18 | 
            -
                  property :name
         | 
| 19 | 
            -
                  collection :songs, :twin => lambda { |*| Song }
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 16 | 
             
                class Song < Disposable::Twin
         | 
| 23 17 | 
             
                  property :id # DISCUSS: needed for #save.
         | 
| 24 18 | 
             
                  property :title
         | 
| 25 19 | 
             
                  property :album, :twin => Album
         | 
| 26 20 | 
             
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                class Album < Disposable::Twin
         | 
| 23 | 
            +
                  property :id # DISCUSS: needed for #save.
         | 
| 24 | 
            +
                  property :name
         | 
| 25 | 
            +
                  collection :songs, :twin => lambda { |*| Song }
         | 
| 26 | 
            +
                end
         | 
| 27 27 | 
             
              end
         | 
| 28 28 |  | 
| 29 29 | 
             
              let (:song) { Model::Song.new(1, "Broken", nil) }
         | 
| @@ -46,18 +46,6 @@ require "disposable/twin/save" | |
| 46 46 |  | 
| 47 47 | 
             
            class TwinCollectionActiveRecordTest < MiniTest::Spec
         | 
| 48 48 | 
             
              module Twin
         | 
| 49 | 
            -
                class Album < Disposable::Twin
         | 
| 50 | 
            -
                  property :id # DISCUSS: needed for #save.
         | 
| 51 | 
            -
                  property :name
         | 
| 52 | 
            -
                  collection :songs, :twin => lambda { |*| Song }
         | 
| 53 | 
            -
                  property :artist, twin: lambda { |*| Artist }
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                  include Sync
         | 
| 56 | 
            -
                  include Save
         | 
| 57 | 
            -
                  include Setup
         | 
| 58 | 
            -
                  include Collection::Semantics
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
             | 
| 61 49 | 
             
                class Song < Disposable::Twin
         | 
| 62 50 | 
             
                  property :id # DISCUSS: needed for #save.
         | 
| 63 51 | 
             
                  property :title
         | 
| @@ -70,6 +58,18 @@ class TwinCollectionActiveRecordTest < MiniTest::Spec | |
| 70 58 |  | 
| 71 59 | 
             
                class Artist < Disposable::Twin
         | 
| 72 60 | 
             
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                class Album < Disposable::Twin
         | 
| 63 | 
            +
                  property :id # DISCUSS: needed for #save.
         | 
| 64 | 
            +
                  property :name
         | 
| 65 | 
            +
                  collection :songs, :twin => lambda { |*| Song }
         | 
| 66 | 
            +
                  property :artist, twin: lambda { |*| Artist }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
                  include Sync
         | 
| 69 | 
            +
                  include Save
         | 
| 70 | 
            +
                  include Setup
         | 
| 71 | 
            +
                  include Collection::Semantics
         | 
| 72 | 
            +
                end
         | 
| 73 73 | 
             
              end
         | 
| 74 74 |  | 
| 75 75 | 
             
              let (:album) { Album.create(name: "The Rest Is Silence") }
         | 
    
        data/test/twin/inherit_test.rb
    CHANGED
    
    | @@ -40,8 +40,8 @@ class InheritTest < MiniTest::Spec | |
| 40 40 |  | 
| 41 41 | 
             
              # definitions are not shared.
         | 
| 42 42 | 
             
              it do
         | 
| 43 | 
            -
                Twin::Album.representer_class.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:fromage=>:_name, :private_name=>:name, : | 
| 44 | 
            -
                Twin::Compilation.representer_class.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:fromage=>:_name, :private_name=>:name, : | 
| 43 | 
            +
                Twin::Album.representer_class.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:fromage=>:_name, :private_name=>:name, :parse_filter=>[], :render_filter=>[], :as=>\"name\"}>"
         | 
| 44 | 
            +
                Twin::Compilation.representer_class.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:fromage=>:_name, :private_name=>:name, :parse_filter=>[], :render_filter=>[], :as=>\"name\", :writeable=>false, :inherit=>true}>"
         | 
| 45 45 | 
             
              end
         | 
| 46 46 |  | 
| 47 47 |  | 
    
        data/test/twin/schema_test.rb
    CHANGED
    
    | @@ -66,4 +66,28 @@ class SchemaTest < MiniTest::Spec | |
| 66 66 | 
             
                decorator.representable_attrs.get(:id).inspect.must_equal "#<Representable::Definition ==>id @options={:parse_filter=>[], :render_filter=>[], :as=>\"id\"}>"
         | 
| 67 67 | 
             
                decorator.representable_attrs.get(:title).inspect.must_equal "#<Representable::Definition ==>title @options={:writeable=>false, :deserializer=>{:skip_parse=>\"skip lambda\"}, :parse_filter=>[], :render_filter=>[], :as=>\"title\"}>"
         | 
| 68 68 | 
             
              end
         | 
| 69 | 
            +
            end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
             | 
| 72 | 
            +
            class TwinSchemaTest < MiniTest::Spec
         | 
| 73 | 
            +
              class Artist < Disposable::Twin
         | 
| 74 | 
            +
                property :name
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              class Album < Disposable::Twin
         | 
| 78 | 
            +
                property :artist, twin: Artist
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              it do
         | 
| 82 | 
            +
                decorator = Disposable::Twin::Schema.from(Album, superclass: Representable::Decorator,
         | 
| 83 | 
            +
                  representer_from: lambda { |nested| nested.representer_class }
         | 
| 84 | 
            +
                )
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                artist = decorator.representable_attrs.get(:artist)
         | 
| 87 | 
            +
                options = artist.instance_variable_get(:@options)
         | 
| 88 | 
            +
                nested_extend = options.delete(:extend)
         | 
| 89 | 
            +
                options.inspect.must_equal "{:twin=>TwinSchemaTest::Artist, :private_name=>:artist, :parse_filter=>[], :render_filter=>[], :as=>\"artist\"}"
         | 
| 90 | 
            +
                assert nested_extend < Representable::Decorator
         | 
| 91 | 
            +
                nested_extend.representable_attrs.get(:name).inspect.must_equal "#<Representable::Definition ==>name @options={:private_name=>:name, :parse_filter=>[], :render_filter=>[], :as=>\"name\"}>"
         | 
| 92 | 
            +
              end
         | 
| 69 93 | 
             
            end
         | 
    
        data/test/twin/setup_test.rb
    CHANGED
    
    | @@ -9,24 +9,24 @@ class TwinSetupTest < MiniTest::Spec | |
| 9 9 |  | 
| 10 10 |  | 
| 11 11 | 
             
              module Twin
         | 
| 12 | 
            -
                class  | 
| 12 | 
            +
                class Artist < Disposable::Twin
         | 
| 13 13 | 
             
                  property :id
         | 
| 14 | 
            -
                  property :name
         | 
| 15 | 
            -
                  collection :songs, twin: lambda { |*| Song }
         | 
| 16 | 
            -
                  property :artist, twin: lambda { |*| Artist }
         | 
| 17 14 |  | 
| 18 15 | 
             
                  include Setup
         | 
| 19 16 | 
             
                end
         | 
| 20 17 |  | 
| 21 18 | 
             
                class Song < Disposable::Twin
         | 
| 22 19 | 
             
                  property :id
         | 
| 23 | 
            -
                  property :composer, twin: lambda { |*| Artist }
         | 
| 20 | 
            +
                  property :composer, twin: lambda { |*| Twin::Artist }
         | 
| 24 21 |  | 
| 25 22 | 
             
                  include Setup
         | 
| 26 23 | 
             
                end
         | 
| 27 24 |  | 
| 28 | 
            -
                class  | 
| 25 | 
            +
                class Album < Disposable::Twin
         | 
| 29 26 | 
             
                  property :id
         | 
| 27 | 
            +
                  property :name
         | 
| 28 | 
            +
                  collection :songs, twin: lambda { |*| Twin::Song }
         | 
| 29 | 
            +
                  property :artist, twin: lambda { |*| Twin::Artist }
         | 
| 30 30 |  | 
| 31 31 | 
             
                  include Setup
         | 
| 32 32 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: disposable
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.8
         | 
| 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-07- | 
| 11 | 
            +
            date: 2015-07-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: uber
         |