confetti 0.9.13 → 0.9.14

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- confetti (0.9.13)
4
+ confetti (0.9.14)
5
5
  mustache (~> 0.11.2)
6
6
 
7
7
  GEM
data/lib/confetti.rb CHANGED
@@ -42,3 +42,4 @@ require 'confetti/phonegap'
42
42
  require 'confetti/config'
43
43
  require 'confetti/config/feature'
44
44
  require 'confetti/config/image'
45
+ require 'confetti/config/url_scheme'
@@ -5,10 +5,11 @@ module Confetti
5
5
  self.extend TemplateHelper
6
6
 
7
7
  attr_accessor :package, :version_string, :version_code, :description,
8
- :height, :width, :plist_icon_set
8
+ :height, :width, :plist_icon_set, :url_scheme_set
9
9
  attr_reader :author, :viewmodes, :name, :license, :content,
10
10
  :icon_set, :feature_set, :preference_set, :xml_doc,
11
- :splash_set, :plist_icon_set, :access_set, :plugin_set
11
+ :splash_set, :plist_icon_set, :access_set, :plugin_set,
12
+ :url_scheme_set
12
13
 
13
14
  generate_and_write :android_manifest, :android_strings,
14
15
  :webos_appinfo, :ios_info, :symbian_wrt_info,
@@ -38,6 +39,7 @@ module Confetti
38
39
  @splash_set = TypedSet.new Image
39
40
  @preference_set = TypedSet.new Preference
40
41
  @access_set = TypedSet.new Access
42
+ @url_scheme_set = TypedSet.new UrlScheme
41
43
 
42
44
  # defined in PhoneGap module
43
45
  @plugin_set = TypedSet.new Plugin
@@ -140,7 +142,12 @@ module Confetti
140
142
  next if attr["src"].nil? or attr["src"].empty?
141
143
  @splash_set << Image.new(attr["src"], attr["height"], attr["width"],
142
144
  attr)
143
-
145
+ when "url-scheme"
146
+ schms = ele.elements.to_a('scheme').map { |a| a.text }
147
+ schms.reject! { |a| a.nil? || a.empty? }
148
+ next if schms.empty?
149
+ @url_scheme_set << UrlScheme.new(schms, attr["name"], attr["role"])
150
+
144
151
  when "plugin"
145
152
  next if attr["name"].nil? or attr["name"].empty?
146
153
  plugin = Plugin.new(attr["name"], attr["version"])
@@ -208,8 +215,8 @@ module Confetti
208
215
  opts['width'] ||= nil
209
216
  opts['height'] ||= nil
210
217
  opts['role'] ||= nil
211
- opts['density'] ||= nil
212
- opts['state'] ||= nil
218
+ opts['density'] ||= nil
219
+ opts['state'] ||= nil
213
220
  opts['platform'] ||= nil
214
221
 
215
222
  # filters to look through sets for
@@ -341,6 +348,15 @@ module Confetti
341
348
  spl.add_attributes attrs
342
349
  splashes << spl
343
350
  end
351
+
352
+ url_schemes = []
353
+ @url_scheme_set.each do | scheme |
354
+ schm = REXML::Element.new( "gap:url-scheme" )
355
+ schm.add_attributes({"name" => scheme.name }) unless scheme.name.nil?
356
+ schm.add_attributes({"role" => scheme.role }) unless scheme.role.nil?
357
+ scheme.schemes.each{|s| schm.add_element("scheme").add_text(s) }
358
+ url_schemes << schm
359
+ end
344
360
 
345
361
  preferences = []
346
362
  @preference_set.each do | preference |
@@ -373,6 +389,7 @@ module Confetti
373
389
  splashes.each { | splash | widget.elements.add splash }
374
390
  preferences.each { | pref | widget.elements.add pref }
375
391
  features.each { | feat | widget.elements.add feat }
392
+ url_schemes.each { | schm | widget.elements.add schm }
376
393
 
377
394
  doc << REXML::XMLDecl.new
378
395
  doc.elements.add widget
@@ -0,0 +1,16 @@
1
+ module Confetti
2
+ class Config
3
+ class UrlScheme
4
+ attr_accessor :name, :role, :schemes
5
+
6
+ def initialize *args
7
+ scheme_arg = args.shift
8
+ @schemes = scheme_arg.nil? ? [] : scheme_arg
9
+ @name = args.shift
10
+ @role = args.shift
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+
@@ -62,5 +62,20 @@
62
62
  <key>UIStatusBarStyle</key>
63
63
  <string>{{ to_s }}</string>
64
64
  {{/ statusbar_style }}
65
- </dict>
65
+ <key>CFBundleURLTypes</key>
66
+ <array>{{# url_schemes }}
67
+ <dict>
68
+ <key>CFBundleTypeRole</key>
69
+ <string>{{ role }}</string>
70
+ <key>CFBundleURLName</key>
71
+ <string>{{ name }}</string>
72
+ <key>CFBundleURLSchemes</key>
73
+ <array>
74
+ {{# schemes }}
75
+ <string>{{ to_s }}</string>
76
+ {{/ schemes }}
77
+ </array>
78
+ </dict>
79
+ {{/ url_schemes }}</array>
80
+ </dict>
66
81
  </plist>
@@ -67,6 +67,20 @@ module Confetti
67
67
  @config.preference(:fullscreen) == :true
68
68
  end
69
69
 
70
+ def url_schemes
71
+ result = []
72
+
73
+ @config.url_scheme_set.each { |url_scheme|
74
+ result << {
75
+ :name => url_scheme.name || @config.package,
76
+ :role => %w{Editor Viewer Shell None}.find{|u| u == url_scheme.role} || "None",
77
+ :schemes => url_scheme.schemes
78
+ }
79
+ }
80
+
81
+ result
82
+ end
83
+
70
84
  def prerendered_icon?
71
85
  @config.preference("prerendered-icon") == :true
72
86
  end
@@ -1,3 +1,3 @@
1
1
  module Confetti
2
- VERSION = "0.9.13"
2
+ VERSION = "0.9.14"
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Confetti::Config::UrlScheme do
4
+ before do
5
+ @url_scheme = Confetti::Config::UrlScheme.new
6
+ end
7
+
8
+ it "should have a readable and writable name field" do
9
+ lambda { @url_scheme.name = "a" }.should_not raise_error
10
+ @url_scheme.name.should == "a"
11
+ end
12
+
13
+ it "should have a readable and writable role field" do
14
+ lambda { @url_scheme.role = "a" }.should_not raise_error
15
+ @url_scheme.role.should == "a"
16
+ end
17
+
18
+ it "should have a readable and writable schemes field" do
19
+ lambda { @url_scheme.schemes = ["a"] }.should_not raise_error
20
+ @url_scheme.schemes.should == ["a"]
21
+ end
22
+ end
@@ -7,6 +7,7 @@
7
7
  android:windowSoftInputMode="adjustPan">
8
8
 
9
9
  <supports-screens
10
+ android:xlargeScreens="true"
10
11
  android:largeScreens="true"
11
12
  android:normalScreens="true"
12
13
  android:smallScreens="true"
@@ -7,6 +7,7 @@
7
7
  android:windowSoftInputMode="adjustPan">
8
8
 
9
9
  <supports-screens
10
+ android:xlargeScreens="true"
10
11
  android:largeScreens="true"
11
12
  android:normalScreens="true"
12
13
  android:smallScreens="true"
@@ -7,6 +7,7 @@
7
7
  android:windowSoftInputMode="adjustPan">
8
8
 
9
9
  <supports-screens
10
+ android:xlargeScreens="true"
10
11
  android:largeScreens="true"
11
12
  android:normalScreens="true"
12
13
  android:smallScreens="true"
@@ -5,6 +5,7 @@
5
5
  android:versionCode="5">
6
6
 
7
7
  <supports-screens
8
+ android:xlargeScreens="true"
8
9
  android:largeScreens="true"
9
10
  android:normalScreens="true"
10
11
  android:smallScreens="true"
@@ -0,0 +1,28 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <widget xmlns = "http://www.w3.org/ns/widgets"
3
+ xmlns:gap = "http://phonegap.com/ns/1.0"
4
+ id = "com.nitobi.johngarrett"
5
+ version = "1.0"
6
+ versionCode = "5">
7
+
8
+ <name>John Garrett Drinking Game</name>
9
+
10
+ <description>
11
+ If you're watching a Canucks game, you need play this.
12
+ </description>
13
+
14
+ <author href="http://www.nitobi.com" email="support@nitobi.com">
15
+ Tim Kim, Ryan Betts, Fil Maj
16
+ </author>
17
+
18
+ <icon src="img/beer_72.png" width="72" height="72" />
19
+ <icon src="img/beer_48.png" width="48" height="48" />
20
+ <icon src="img/beer_36.png" width="36" height="36" />
21
+
22
+ <preference name="orientation" value="landscape" />
23
+
24
+ <gap:url-scheme name="com.phonegap.test" role="Shell">
25
+ <scheme>pgb</scheme>
26
+ </gap:url-scheme>
27
+
28
+ </widget>
@@ -46,5 +46,7 @@
46
46
  <string></string>
47
47
  <key>NSMainNibFile~ipad</key>
48
48
  <string></string>
49
+ <key>CFBundleURLTypes</key>
50
+ <array></array>
49
51
  </dict>
50
52
  </plist>
@@ -46,5 +46,7 @@
46
46
  <string></string>
47
47
  <key>NSMainNibFile~ipad</key>
48
48
  <string></string>
49
+ <key>CFBundleURLTypes</key>
50
+ <array></array>
49
51
  </dict>
50
52
  </plist>
@@ -42,5 +42,7 @@
42
42
  <true/>
43
43
  <key>NSMainNibFile</key>
44
44
  <string></string>
45
+ <key>CFBundleURLTypes</key>
46
+ <array></array>
45
47
  </dict>
46
48
  </plist>
@@ -0,0 +1,58 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleIconFiles</key>
6
+ <array>
7
+ <string>img/beer_72.png</string>
8
+ <string>img/beer_48.png</string>
9
+ <string>img/beer_36.png</string>
10
+ </array>
11
+ <key>UISupportedInterfaceOrientations~ipad</key>
12
+ <array>
13
+ <string>UIInterfaceOrientationLandscapeLeft</string>
14
+ <string>UIInterfaceOrientationLandscapeRight</string>
15
+ </array>
16
+ <key>UISupportedInterfaceOrientations</key>
17
+ <array>
18
+ <string>UIInterfaceOrientationLandscapeLeft</string>
19
+ <string>UIInterfaceOrientationLandscapeRight</string>
20
+ </array>
21
+ <key>CFBundleDevelopmentRegion</key>
22
+ <string>English</string>
23
+ <key>CFBundleDisplayName</key>
24
+ <string>John Garrett Drinking Game</string>
25
+ <key>CFBundleExecutable</key>
26
+ <string>${EXECUTABLE_NAME}</string>
27
+ <key>CFBundleIconFile</key>
28
+ <string>icon.png</string>
29
+ <key>CFBundleIdentifier</key>
30
+ <string>com.nitobi.johngarrett</string>
31
+ <key>CFBundleInfoDictionaryVersion</key>
32
+ <string>6.0</string>
33
+ <key>CFBundleName</key>
34
+ <string>John Garrett Drinking Game</string>
35
+ <key>CFBundlePackageType</key>
36
+ <string>APPL</string>
37
+ <key>CFBundleSignature</key>
38
+ <string>????</string>
39
+ <key>CFBundleVersion</key>
40
+ <string>1.0</string>
41
+ <key>LSRequiresIPhoneOS</key>
42
+ <true/>
43
+ <key>NSMainNibFile</key>
44
+ <string></string>
45
+ <key>CFBundleURLTypes</key>
46
+ <array><dict>
47
+ <key>CFBundleTypeRole</key>
48
+ <string>Shell</string>
49
+ <key>CFBundleURLName</key>
50
+ <string>com.phonegap.test</string>
51
+ <key>CFBundleURLSchemes</key>
52
+ <array>
53
+ <string>pgb</string>
54
+ </array>
55
+ </dict>
56
+ </array>
57
+ </dict>
58
+ </plist>
@@ -115,6 +115,17 @@ describe Confetti::Template::IosInfo do
115
115
  @template.render.should == File.read("#{ fixture_dir }/ios/ios_info_spec_expected_orientation.plist")
116
116
  end
117
117
  end
118
+
119
+ describe "ios url schemes" do
120
+ before do
121
+ @config = Confetti::Config.new("#{fixture_dir}/config_with_schemes.xml")
122
+ @template = @template_class.new(@config)
123
+ end
124
+
125
+ it "should populate the info.plist with the schemes" do
126
+ @template.render.should == File.read("#{ fixture_dir }/ios/ios_info_spec_expected_schemes.plist")
127
+ end
128
+ end
118
129
 
119
130
  describe "should specify if the application is universal" do
120
131
  before do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confetti
3
3
  version: !ruby/object:Gem::Version
4
- hash: 33
4
+ hash: 39
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 13
10
- version: 0.9.13
9
+ - 14
10
+ version: 0.9.14
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Lunny
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2013-04-04 00:00:00 Z
20
+ date: 2013-05-28 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: mustache
@@ -73,6 +73,7 @@ files:
73
73
  - lib/confetti/config/classes.rb
74
74
  - lib/confetti/config/feature.rb
75
75
  - lib/confetti/config/image.rb
76
+ - lib/confetti/config/url_scheme.rb
76
77
  - lib/confetti/error.rb
77
78
  - lib/confetti/helpers.rb
78
79
  - lib/confetti/phonegap.rb
@@ -110,6 +111,7 @@ files:
110
111
  - spec/config/config_license_spec.rb
111
112
  - spec/config/config_name_spec.rb
112
113
  - spec/config/config_preference_spec.rb
114
+ - spec/config/config_url_scheme_spec.rb
113
115
  - spec/config_spec.rb
114
116
  - spec/fixtures/android/AndroidManifest_bare.xml
115
117
  - spec/fixtures/android/AndroidManifest_expected.xml
@@ -138,6 +140,7 @@ files:
138
140
  - spec/fixtures/config_with_access.xml
139
141
  - spec/fixtures/config_with_android_versions.xml
140
142
  - spec/fixtures/config_with_orientation.xml
143
+ - spec/fixtures/config_with_schemes.xml
141
144
  - spec/fixtures/config_with_version_code.xml
142
145
  - spec/fixtures/configs/blank-splash.xml
143
146
  - spec/fixtures/configs/config_bare.xml
@@ -147,6 +150,7 @@ files:
147
150
  - spec/fixtures/ios/ios_info_expected.plist
148
151
  - spec/fixtures/ios/ios_info_spec.plist
149
152
  - spec/fixtures/ios/ios_info_spec_expected_orientation.plist
153
+ - spec/fixtures/ios/ios_info_spec_expected_schemes.plist
150
154
  - spec/fixtures/symbian/symbian_wrt_info_expected.plist
151
155
  - spec/fixtures/symbian/symbian_wrt_info_spec.plist
152
156
  - spec/fixtures/webos/appinfo_expected.json
@@ -212,6 +216,7 @@ test_files:
212
216
  - spec/config/config_license_spec.rb
213
217
  - spec/config/config_name_spec.rb
214
218
  - spec/config/config_preference_spec.rb
219
+ - spec/config/config_url_scheme_spec.rb
215
220
  - spec/config_spec.rb
216
221
  - spec/fixtures/android/AndroidManifest_bare.xml
217
222
  - spec/fixtures/android/AndroidManifest_expected.xml
@@ -240,6 +245,7 @@ test_files:
240
245
  - spec/fixtures/config_with_access.xml
241
246
  - spec/fixtures/config_with_android_versions.xml
242
247
  - spec/fixtures/config_with_orientation.xml
248
+ - spec/fixtures/config_with_schemes.xml
243
249
  - spec/fixtures/config_with_version_code.xml
244
250
  - spec/fixtures/configs/blank-splash.xml
245
251
  - spec/fixtures/configs/config_bare.xml
@@ -249,6 +255,7 @@ test_files:
249
255
  - spec/fixtures/ios/ios_info_expected.plist
250
256
  - spec/fixtures/ios/ios_info_spec.plist
251
257
  - spec/fixtures/ios/ios_info_spec_expected_orientation.plist
258
+ - spec/fixtures/ios/ios_info_spec_expected_schemes.plist
252
259
  - spec/fixtures/symbian/symbian_wrt_info_expected.plist
253
260
  - spec/fixtures/symbian/symbian_wrt_info_spec.plist
254
261
  - spec/fixtures/webos/appinfo_expected.json