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
|