protopack 0.0.1 → 0.0.2
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/README.md +3 -1
- data/lib/protopack/package.rb +9 -4
- data/lib/protopack/version.rb +1 -1
- data/spec/protopack/package_spec.rb +12 -8
- data/spec/protopack/packages/standard-widgets/black-widget-item.yml +6 -0
- data/spec/protopack/packages/standard-widgets/blue-widget-item.yml +3 -2
- data/spec/protopack/packages/standard-widgets/red-widget-item.yml +3 -2
- data/spec/protopack/packages/standard-widgets/yellow-widget-item.yml +7 -0
- metadata +6 -2
    
        data/README.md
    CHANGED
    
    | @@ -89,7 +89,9 @@ names to items, if l10n is a concern: "widget-item.fr.yml", for example. | |
| 89 89 |  | 
| 90 90 | 
             
            Each *-item.yml contains at least three keys: "id", "type" and "attributes". Protopack calls #constantize
         | 
| 91 91 | 
             
            on the "type" value in order to get a reference to the target class. The "attributes" are then
         | 
| 92 | 
            -
            passed to your #existence method as described above.
         | 
| 92 | 
            +
            passed to your #existence method as described above. If you specify an "ordinal" key, it must be
         | 
| 93 | 
            +
            numeric, and both Package#apply_all and Package#apply_missing will apply items after sorting by
         | 
| 94 | 
            +
            #ordinal, putting nil ordinals last.
         | 
| 93 95 |  | 
| 94 96 | 
             
            You can add other keys that you might find useful for selecting and presenting items, for example, a
         | 
| 95 97 | 
             
            "locale" key to show only items in the current user's locale.
         | 
    
        data/lib/protopack/package.rb
    CHANGED
    
    | @@ -22,13 +22,18 @@ class Protopack::Package | |
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def apply_missing
         | 
| 25 | 
            -
                 | 
| 26 | 
            -
                  item.apply! if item.missing?
         | 
| 27 | 
            -
                end
         | 
| 25 | 
            +
                sorted_items.select(&:missing?).each &:apply!
         | 
| 28 26 | 
             
              end
         | 
| 29 27 |  | 
| 30 28 | 
             
              def apply_all
         | 
| 31 | 
            -
                 | 
| 29 | 
            +
                sorted_items.each &:apply!
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              def sorted_items
         | 
| 33 | 
            +
                items.sort { |a, b|
         | 
| 34 | 
            +
                  a, b = a.ordinal, b.ordinal
         | 
| 35 | 
            +
                  a ? (b ? a <=> b : -1) : (b ? 1 : 0)
         | 
| 36 | 
            +
                }
         | 
| 32 37 | 
             
              end
         | 
| 33 38 |  | 
| 34 39 | 
             
              def self.config_root= root
         | 
    
        data/lib/protopack/version.rb
    CHANGED
    
    
| @@ -32,33 +32,37 @@ describe Protopack::Package do | |
| 32 32 | 
             
                p = Protopack::Package.find("standard-widgets")
         | 
| 33 33 | 
             
                p.apply_all
         | 
| 34 34 |  | 
| 35 | 
            -
                Widget.all.map(&:colour).should == %w{ blue green  | 
| 35 | 
            +
                Widget.all.map(&:colour).should == %w{ red blue yellow green black }
         | 
| 36 36 | 
             
              end
         | 
| 37 37 |  | 
| 38 | 
            -
              it "should install all items from a package, overwriting existing items" do
         | 
| 38 | 
            +
              it "should install all items from a package, overwriting existing items, respecting #ordinal property" do
         | 
| 39 39 | 
             
                Widget.new :colour => "blue"
         | 
| 40 40 | 
             
                Widget.new :colour => "green"
         | 
| 41 41 |  | 
| 42 42 | 
             
                p = Protopack::Package.find("standard-widgets")
         | 
| 43 43 | 
             
                p.apply_all
         | 
| 44 44 |  | 
| 45 | 
            -
                Widget.all.map(&:colour).should == %w{ blue green red}
         | 
| 45 | 
            +
                Widget.all.map(&:colour).should == %w{ blue green red yellow black }
         | 
| 46 46 | 
             
                Widget.all[0].height.should == 'elephant'
         | 
| 47 47 | 
             
                Widget.all[1].height.should == 'zebra'
         | 
| 48 48 | 
             
                Widget.all[2].height.should == 'tiger'
         | 
| 49 | 
            +
                Widget.all[3].height.should == 'hyena'
         | 
| 50 | 
            +
                Widget.all[4].height.should == 'camel'
         | 
| 49 51 | 
             
              end
         | 
| 50 52 |  | 
| 51 53 | 
             
              it "should install only missing items from a package, not overwriting existing items" do
         | 
| 52 | 
            -
                Widget.new :colour => "blue"
         | 
| 53 | 
            -
                Widget.new :colour => "green"
         | 
| 54 | 
            +
                Widget.new :colour => "blue", :height => "not specified"
         | 
| 55 | 
            +
                Widget.new :colour => "green", :height => "not specified"
         | 
| 54 56 |  | 
| 55 57 | 
             
                p = Protopack::Package.find("standard-widgets")
         | 
| 56 58 | 
             
                p.apply_missing
         | 
| 57 59 |  | 
| 58 | 
            -
                Widget.all.map(&:colour).should == %w{ blue green red}
         | 
| 59 | 
            -
                Widget.all[0].height.should ==  | 
| 60 | 
            -
                Widget.all[1].height.should ==  | 
| 60 | 
            +
                Widget.all.map(&:colour).should == %w{ blue green red yellow black}
         | 
| 61 | 
            +
                Widget.all[0].height.should == "not specified"
         | 
| 62 | 
            +
                Widget.all[1].height.should == "not specified"
         | 
| 61 63 | 
             
                Widget.all[2].height.should == 'tiger'
         | 
| 64 | 
            +
                Widget.all[3].height.should == 'hyena'
         | 
| 65 | 
            +
                Widget.all[4].height.should == 'camel'
         | 
| 62 66 | 
             
              end
         | 
| 63 67 |  | 
| 64 68 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: protopack
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2013-03- | 
| 12 | 
            +
            date: 2013-03-16 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: hashie
         | 
| @@ -65,10 +65,12 @@ files: | |
| 65 65 | 
             
            - spec/protopack/packages/advanced-widgets/lavender-widget-item.yml
         | 
| 66 66 | 
             
            - spec/protopack/packages/advanced-widgets/magenta-widget-item.yml
         | 
| 67 67 | 
             
            - spec/protopack/packages/advanced-widgets/package-config.yml
         | 
| 68 | 
            +
            - spec/protopack/packages/standard-widgets/black-widget-item.yml
         | 
| 68 69 | 
             
            - spec/protopack/packages/standard-widgets/blue-widget-item.yml
         | 
| 69 70 | 
             
            - spec/protopack/packages/standard-widgets/green-widget-item.yml
         | 
| 70 71 | 
             
            - spec/protopack/packages/standard-widgets/package-config.yml
         | 
| 71 72 | 
             
            - spec/protopack/packages/standard-widgets/red-widget-item.yml
         | 
| 73 | 
            +
            - spec/protopack/packages/standard-widgets/yellow-widget-item.yml
         | 
| 72 74 | 
             
            - spec/spec_helper.rb
         | 
| 73 75 | 
             
            homepage: ''
         | 
| 74 76 | 
             
            licenses: []
         | 
| @@ -100,8 +102,10 @@ test_files: | |
| 100 102 | 
             
            - spec/protopack/packages/advanced-widgets/lavender-widget-item.yml
         | 
| 101 103 | 
             
            - spec/protopack/packages/advanced-widgets/magenta-widget-item.yml
         | 
| 102 104 | 
             
            - spec/protopack/packages/advanced-widgets/package-config.yml
         | 
| 105 | 
            +
            - spec/protopack/packages/standard-widgets/black-widget-item.yml
         | 
| 103 106 | 
             
            - spec/protopack/packages/standard-widgets/blue-widget-item.yml
         | 
| 104 107 | 
             
            - spec/protopack/packages/standard-widgets/green-widget-item.yml
         | 
| 105 108 | 
             
            - spec/protopack/packages/standard-widgets/package-config.yml
         | 
| 106 109 | 
             
            - spec/protopack/packages/standard-widgets/red-widget-item.yml
         | 
| 110 | 
            +
            - spec/protopack/packages/standard-widgets/yellow-widget-item.yml
         | 
| 107 111 | 
             
            - spec/spec_helper.rb
         |