confetti 0.3.7 → 0.3.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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- confetti (0.3.6)
4
+ confetti (0.3.8)
5
5
  mustache (~> 0.11.2)
6
6
  thor (~> 0.14.3)
7
7
 
@@ -25,14 +25,14 @@ GEM
25
25
  term-ansicolor (~> 1.0.5)
26
26
  json (1.4.6)
27
27
  mustache (0.11.2)
28
- rspec (2.1.0)
29
- rspec-core (~> 2.1.0)
30
- rspec-expectations (~> 2.1.0)
31
- rspec-mocks (~> 2.1.0)
32
- rspec-core (2.1.0)
33
- rspec-expectations (2.1.0)
28
+ rspec (2.6.0)
29
+ rspec-core (~> 2.6.0)
30
+ rspec-expectations (~> 2.6.0)
31
+ rspec-mocks (~> 2.6.0)
32
+ rspec-core (2.6.4)
33
+ rspec-expectations (2.6.0)
34
34
  diff-lcs (~> 1.1.2)
35
- rspec-mocks (2.1.0)
35
+ rspec-mocks (2.6.0)
36
36
  term-ansicolor (1.0.5)
37
37
  thor (0.14.6)
38
38
 
@@ -43,4 +43,4 @@ DEPENDENCIES
43
43
  aruba
44
44
  confetti!
45
45
  cucumber
46
- rspec (~> 2.1.0)
46
+ rspec (~> 2.6.0)
data/confetti.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency "mustache", "~> 0.11.2"
24
24
  s.add_dependency "thor", "~> 0.14.3"
25
25
 
26
- s.add_development_dependency "rspec", "~> 2.1.0"
26
+ s.add_development_dependency "rspec", "~> 2.6.0"
27
27
  s.add_development_dependency "cucumber"
28
28
  s.add_development_dependency "aruba"
29
29
  end
data/lib/confetti.rb CHANGED
@@ -29,5 +29,7 @@ Dir[File.join(CURRENT_DIR, 'confetti', 'templates', '*')].each do |file|
29
29
  end
30
30
  require 'confetti/template_helper'
31
31
 
32
+ require 'confetti/cli'
33
+
32
34
  require 'confetti/config'
33
35
  require 'confetti/config/feature'
data/lib/confetti/cli.rb CHANGED
@@ -11,8 +11,10 @@ module Confetti
11
11
 
12
12
  begin
13
13
  config.send msg
14
- rescue
15
- fail "Confetti Failed: format #{ output_file } unsupported"
14
+ rescue Confetti::Config::FiletypeError
15
+ fail "Confetti failed: #{ output_file } unsupported"
16
+ rescue Confetti::Error => e
17
+ fail "Confetti Failed: #{ e.message }"
16
18
  end
17
19
  end
18
20
  end
@@ -8,15 +8,29 @@ module Confetti
8
8
 
9
9
  class FileError < Confetti::Error ; end
10
10
 
11
+ class FiletypeError < Confetti::Error ; end
12
+
11
13
  attr_accessor :package, :version_string, :version_code, :description,
12
14
  :height, :width, :plist_icon_set
13
15
  attr_reader :author, :viewmodes, :name, :license, :content,
14
16
  :icon_set, :feature_set, :preference_set, :xml_doc,
15
- :splash_set, :plist_icon_set
17
+ :splash_set, :plist_icon_set, :plugin_set
16
18
 
17
19
  generate_and_write :android_manifest, :android_strings, :webos_appinfo,
18
20
  :ios_info, :symbian_wrt_info, :blackberry_widgets_config
19
21
 
22
+ # handle bad generate/write calls
23
+ def method_missing(method_name, *args)
24
+ bad_call = /^(generate)|(write)_(.*)$/
25
+ matches = method_name.to_s.match(bad_call)
26
+
27
+ if matches
28
+ raise FiletypeError, "#{ matches[3] } not supported"
29
+ else
30
+ super method_name, *args
31
+ end
32
+ end
33
+
20
34
  # classes that represent child elements
21
35
  Author = Class.new Struct.new(:name, :href, :email)
22
36
  Name = Class.new Struct.new(:name, :shortname)
@@ -25,6 +39,7 @@ module Confetti
25
39
  Image = Class.new Struct.new(:src, :height, :width, :extras)
26
40
  Feature = Class.new Struct.new(:name, :required)
27
41
  Preference = Class.new Struct.new(:name, :value, :readonly)
42
+ Plugin = Class.new Struct.new(:name, :value, :platforms)
28
43
 
29
44
  def initialize(*args)
30
45
  @author = Author.new
@@ -36,6 +51,7 @@ module Confetti
36
51
  @feature_set = TypedSet.new Feature
37
52
  @splash_set = TypedSet.new Image
38
53
  @preference_set = TypedSet.new Preference
54
+ @plugin_set = TypedSet.new Plugin
39
55
  @viewmodes = []
40
56
 
41
57
  if args.length > 0 && is_file?(args.first)
@@ -65,33 +81,46 @@ module Confetti
65
81
  config_doc.elements.each do |ele|
66
82
  attr = ele.attributes
67
83
 
68
- case ele.name
69
- when "name"
70
- @name = Name.new(ele.text.nil? ? "" : ele.text.strip, attr["shortname"])
71
- when "author"
72
- @author = Author.new(ele.text.nil? ? "" : ele.text.strip, attr["href"], attr["email"])
73
- when "description"
74
- @description = ele.text.nil? ? "" : ele.text.strip
75
- when "icon"
76
- extras = grab_extras attr
77
- @icon_set << Image.new(attr["src"], attr["height"], attr["width"], extras)
78
- # used for the info.plist file
79
- @plist_icon_set << attr["src"]
80
- when "splash"
81
- extras = grab_extras attr
82
- @splash_set << Image.new(attr["src"], attr["height"], attr["width"], extras)
83
- when "feature"
84
- @feature_set << Feature.new(attr["name"], attr["required"])
85
- when "preference"
86
- @preference_set << Preference.new(attr["name"], attr["value"], attr["readonly"])
87
- when "license"
88
- @license = License.new(ele.text.nil? ? "" : ele.text.strip, attr["href"])
84
+ case ele.namespace
85
+
86
+ # W3C widget elements
87
+ when "http://www.w3.org/ns/widgets"
88
+ case ele.name
89
+ when "name"
90
+ @name = Name.new(ele.text.nil? ? "" : ele.text.strip, attr["shortname"])
91
+ when "author"
92
+ @author = Author.new(ele.text.nil? ? "" : ele.text.strip, attr["href"], attr["email"])
93
+ when "description"
94
+ @description = ele.text.nil? ? "" : ele.text.strip
95
+ when "icon"
96
+ extras = grab_extras attr
97
+ @icon_set << Image.new(attr["src"], attr["height"], attr["width"], extras)
98
+ # used for the info.plist file
99
+ @plist_icon_set << attr["src"]
100
+ when "feature"
101
+ @feature_set << Feature.new(attr["name"], attr["required"])
102
+ when "preference"
103
+ @preference_set << Preference.new(attr["name"], attr["value"], attr["readonly"])
104
+ when "license"
105
+ @license = License.new(ele.text.nil? ? "" : ele.text.strip, attr["href"])
106
+ end
107
+
108
+ # PhoneGap extensions (gap:)
109
+ when "http://phonegap.com/ns/1.0"
110
+ case ele.name
111
+ when "splash"
112
+ extras = grab_extras attr
113
+ @splash_set << Image.new(attr["src"], attr["height"], attr["width"], extras)
114
+ when "plugin"
115
+ plugin = Plugin.new(attr["name"], attr["value"])
116
+ plugin.platforms = plugin_platforms(ele)
117
+ @plugin_set << plugin
118
+ end
89
119
  end
90
120
  end
121
+ end
91
122
 
92
- end
93
-
94
- def icon
123
+ def icon
95
124
  @icon_set.first
96
125
  end
97
126
 
@@ -132,5 +161,13 @@ module Confetti
132
161
 
133
162
  pref && pref.value && pref.value.to_sym
134
163
  end
164
+
165
+ # retrieve the specified platforms as a list of lowercase symbols
166
+ # extracted from children of ele
167
+ def plugin_platforms ele
168
+ ele.children.
169
+ select { |e| e.respond_to?(:name) and e.name == "platform" }.
170
+ map { |e| e.attributes["name"].downcase.to_sym }
171
+ end
135
172
  end
136
173
  end
@@ -1,3 +1,3 @@
1
1
  module Confetti
2
- VERSION = "0.3.7"
2
+ VERSION = "0.3.8"
3
3
  end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Confetti::CLI do
4
+ include HelpfulPaths
5
+
6
+ describe "generate method" do
7
+ before do
8
+ Dir.stub(:pwd).and_return(fixture_dir)
9
+ @cli = Confetti::CLI.new
10
+ Confetti::Config.any_instance.stub(:open)
11
+ end
12
+
13
+ describe "with a correct ouput file" do
14
+ it "should not raise an error" do
15
+ lambda { @cli.generate "android_manifest" }.should_not raise_error
16
+ end
17
+ end
18
+
19
+ describe "with an unsupported output file" do
20
+ it "should raise the correct error" do
21
+ lambda {
22
+ @cli.generate "mgm_dvd"
23
+ }.should raise_error RuntimeError,
24
+ "Confetti failed: mgm_dvd unsupported"
25
+ end
26
+ end
27
+ end
28
+ end
data/spec/config_spec.rb CHANGED
@@ -329,6 +329,32 @@ describe Confetti::Config do
329
329
  features_names.should include "http://api.phonegap.com/1.0/notification"
330
330
  end
331
331
  end
332
+
333
+ describe "plugins" do
334
+ it "should append plugins to the plugin set" do
335
+ @config.plugin_set.size.should be 1
336
+ end
337
+
338
+ describe "created object" do
339
+ before do
340
+ @plugin = @config.plugin_set.first
341
+ end
342
+
343
+ it "should have the right name" do
344
+ @plugin.name.should == "ChildBrowser"
345
+ end
346
+
347
+ it "should have the right value" do
348
+ package = "com.phonegap.plugins.childBrowser.ChildBrowser"
349
+ @plugin.value.should == package
350
+ end
351
+
352
+ it "should have the right platforms" do
353
+ @plugin.platforms.size.should be 1
354
+ @plugin.platforms.first.should be :android
355
+ end
356
+ end
357
+ end
332
358
  end
333
359
  end
334
360
 
@@ -46,4 +46,9 @@ THE SOFTWARE.</license>
46
46
  <feature name="http://api.phonegap.com/1.0/geolocation" required="true"/>
47
47
  <feature name="http://api.phonegap.com/1.0/camera" required="true"/>
48
48
  <feature name="http://api.phonegap.com/1.0/notification" required="true"/>
49
+
50
+ <gap:plugin name="ChildBrowser"
51
+ value="com.phonegap.plugins.childBrowser.ChildBrowser">
52
+ <platform name="android" />
53
+ </gap:plugin>
49
54
  </widget>
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confetti
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 3
9
- - 7
10
- version: 0.3.7
8
+ - 8
9
+ version: 0.3.8
11
10
  platform: ruby
12
11
  authors:
13
12
  - Andrew Lunny
@@ -17,18 +16,16 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2011-08-30 00:00:00 -07:00
19
+ date: 2011-08-31 00:00:00 -07:00
21
20
  default_executable:
22
21
  dependencies:
23
22
  - !ruby/object:Gem::Dependency
24
23
  name: mustache
25
24
  prerelease: false
26
25
  requirement: &id001 !ruby/object:Gem::Requirement
27
- none: false
28
26
  requirements:
29
27
  - - ~>
30
28
  - !ruby/object:Gem::Version
31
- hash: 55
32
29
  segments:
33
30
  - 0
34
31
  - 11
@@ -40,11 +37,9 @@ dependencies:
40
37
  name: thor
41
38
  prerelease: false
42
39
  requirement: &id002 !ruby/object:Gem::Requirement
43
- none: false
44
40
  requirements:
45
41
  - - ~>
46
42
  - !ruby/object:Gem::Version
47
- hash: 33
48
43
  segments:
49
44
  - 0
50
45
  - 14
@@ -56,27 +51,23 @@ dependencies:
56
51
  name: rspec
57
52
  prerelease: false
58
53
  requirement: &id003 !ruby/object:Gem::Requirement
59
- none: false
60
54
  requirements:
61
55
  - - ~>
62
56
  - !ruby/object:Gem::Version
63
- hash: 11
64
57
  segments:
65
58
  - 2
66
- - 1
59
+ - 6
67
60
  - 0
68
- version: 2.1.0
61
+ version: 2.6.0
69
62
  type: :development
70
63
  version_requirements: *id003
71
64
  - !ruby/object:Gem::Dependency
72
65
  name: cucumber
73
66
  prerelease: false
74
67
  requirement: &id004 !ruby/object:Gem::Requirement
75
- none: false
76
68
  requirements:
77
69
  - - ">="
78
70
  - !ruby/object:Gem::Version
79
- hash: 3
80
71
  segments:
81
72
  - 0
82
73
  version: "0"
@@ -86,11 +77,9 @@ dependencies:
86
77
  name: aruba
87
78
  prerelease: false
88
79
  requirement: &id005 !ruby/object:Gem::Requirement
89
- none: false
90
80
  requirements:
91
81
  - - ">="
92
82
  - !ruby/object:Gem::Version
93
- hash: 3
94
83
  segments:
95
84
  - 0
96
85
  version: "0"
@@ -147,6 +136,7 @@ files:
147
136
  - lib/confetti/templates/webos_appinfo.rb
148
137
  - lib/confetti/version.rb
149
138
  - lib/typedset.rb
139
+ - spec/cli_spec.rb
150
140
  - spec/config/config_author_spec.rb
151
141
  - spec/config/config_content_spec.rb
152
142
  - spec/config/config_feature_spec.rb
@@ -204,27 +194,23 @@ rdoc_options: []
204
194
  require_paths:
205
195
  - lib
206
196
  required_ruby_version: !ruby/object:Gem::Requirement
207
- none: false
208
197
  requirements:
209
198
  - - ">="
210
199
  - !ruby/object:Gem::Version
211
- hash: 3
212
200
  segments:
213
201
  - 0
214
202
  version: "0"
215
203
  required_rubygems_version: !ruby/object:Gem::Requirement
216
- none: false
217
204
  requirements:
218
205
  - - ">="
219
206
  - !ruby/object:Gem::Version
220
- hash: 3
221
207
  segments:
222
208
  - 0
223
209
  version: "0"
224
210
  requirements: []
225
211
 
226
212
  rubyforge_project: confetti
227
- rubygems_version: 1.3.7
213
+ rubygems_version: 1.3.6
228
214
  signing_key:
229
215
  specification_version: 3
230
216
  summary: Generate mobile app config files
@@ -237,6 +223,7 @@ test_files:
237
223
  - features/support/setup.rb
238
224
  - features/symbian.wrt.feature
239
225
  - features/webos.feature
226
+ - spec/cli_spec.rb
240
227
  - spec/config/config_author_spec.rb
241
228
  - spec/config/config_content_spec.rb
242
229
  - spec/config/config_feature_spec.rb