confetti 0.7.16 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/lib/confetti.rb +3 -1
- data/lib/confetti/config.rb +10 -16
- data/lib/confetti/config/classes.rb +17 -0
- data/lib/confetti/config/feature.rb +0 -2
- data/lib/confetti/phonegap.rb +3 -2
- data/lib/confetti/phonegap/plugin.rb +12 -0
- data/lib/confetti/version.rb +1 -1
- data/spec/config/config_feature_spec.rb +2 -2
- data/spec/config_spec.rb +54 -0
- data/spec/fixtures/config-plugins.xml +60 -0
- data/spec/phonegap_spec.rb +6 -6
- data/spec/plugin_spec.rb +33 -0
- metadata +10 -4
data/Gemfile.lock
CHANGED
data/lib/confetti.rb
CHANGED
@@ -19,7 +19,6 @@ require 'typedset'
|
|
19
19
|
require 'confetti/version'
|
20
20
|
require 'confetti/error'
|
21
21
|
require 'confetti/helpers'
|
22
|
-
require 'confetti/phonegap'
|
23
22
|
|
24
23
|
require 'confetti/template'
|
25
24
|
require 'confetti/templates/base'
|
@@ -37,6 +36,9 @@ require 'confetti/templates/windows_phone7_manifest'
|
|
37
36
|
|
38
37
|
require 'confetti/template_helper'
|
39
38
|
|
39
|
+
require 'confetti/config/classes'
|
40
|
+
require 'confetti/phonegap/plugin'
|
41
|
+
require 'confetti/phonegap'
|
40
42
|
require 'confetti/config'
|
41
43
|
require 'confetti/config/feature'
|
42
44
|
require 'confetti/config/image'
|
data/lib/confetti/config.rb
CHANGED
@@ -4,17 +4,11 @@ module Confetti
|
|
4
4
|
include PhoneGap
|
5
5
|
self.extend TemplateHelper
|
6
6
|
|
7
|
-
class XMLError < Confetti::Error ; end
|
8
|
-
|
9
|
-
class FileError < Confetti::Error ; end
|
10
|
-
|
11
|
-
class FiletypeError < Confetti::Error ; end
|
12
|
-
|
13
7
|
attr_accessor :package, :version_string, :version_code, :description,
|
14
8
|
:height, :width, :plist_icon_set
|
15
9
|
attr_reader :author, :viewmodes, :name, :license, :content,
|
16
10
|
:icon_set, :feature_set, :preference_set, :xml_doc,
|
17
|
-
:splash_set, :plist_icon_set, :access_set
|
11
|
+
:splash_set, :plist_icon_set, :access_set, :plugin_set
|
18
12
|
|
19
13
|
generate_and_write :android_manifest, :android_strings, :webos_appinfo,
|
20
14
|
:ios_info, :symbian_wrt_info, :blackberry_widgets_config,
|
@@ -32,15 +26,6 @@ module Confetti
|
|
32
26
|
end
|
33
27
|
end
|
34
28
|
|
35
|
-
# classes that represent child elements
|
36
|
-
Author = Class.new Struct.new(:name, :href, :email)
|
37
|
-
Name = Class.new Struct.new(:name, :shortname)
|
38
|
-
License = Class.new Struct.new(:text, :href)
|
39
|
-
Content = Class.new Struct.new(:src, :type, :encoding)
|
40
|
-
Feature = Class.new Struct.new(:name, :required)
|
41
|
-
Preference = Class.new Struct.new(:name, :value, :readonly)
|
42
|
-
Access = Class.new Struct.new(:origin, :subdomains, :browserOnly)
|
43
|
-
|
44
29
|
def initialize(*args)
|
45
30
|
@author = Author.new
|
46
31
|
@name = Name.new
|
@@ -52,6 +37,7 @@ module Confetti
|
|
52
37
|
@splash_set = TypedSet.new Image
|
53
38
|
@preference_set = TypedSet.new Preference
|
54
39
|
@access_set = TypedSet.new Access
|
40
|
+
@plugin_set = TypedSet.new Plugin # defined in PhoneGap module
|
55
41
|
@viewmodes = []
|
56
42
|
|
57
43
|
if args.length > 0 && is_file?(args.first)
|
@@ -116,6 +102,14 @@ module Confetti
|
|
116
102
|
when "splash"
|
117
103
|
next if attr["src"].nil? or attr["src"].empty?
|
118
104
|
@splash_set << Image.new(attr["src"], attr["height"], attr["width"], attr)
|
105
|
+
when "plugin"
|
106
|
+
next if attr["name"].nil? or attr["name"].empty?
|
107
|
+
plugin = Plugin.new(attr["name"], attr["version"])
|
108
|
+
ele.each_element('param') do |param|
|
109
|
+
p_attr = param.attributes
|
110
|
+
plugin.param_set << Param.new(p_attr["name"], p_attr["value"])
|
111
|
+
end
|
112
|
+
@plugin_set << plugin
|
119
113
|
end
|
120
114
|
end
|
121
115
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Confetti
|
2
|
+
class Config
|
3
|
+
class XMLError < Confetti::Error ; end
|
4
|
+
class FileError < Confetti::Error ; end
|
5
|
+
class FiletypeError < Confetti::Error ; end
|
6
|
+
|
7
|
+
# classes that represent child elements
|
8
|
+
Author = Class.new Struct.new(:name, :href, :email)
|
9
|
+
Name = Class.new Struct.new(:name, :shortname)
|
10
|
+
License = Class.new Struct.new(:text, :href)
|
11
|
+
Content = Class.new Struct.new(:src, :type, :encoding)
|
12
|
+
Feature = Class.new Struct.new(:name, :required)
|
13
|
+
Preference = Class.new Struct.new(:name, :value, :readonly)
|
14
|
+
Access = Class.new Struct.new(:origin, :subdomains, :browserOnly)
|
15
|
+
Param = Class.new Struct.new(:name, :value)
|
16
|
+
end
|
17
|
+
end
|
data/lib/confetti/phonegap.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Confetti
|
2
2
|
module PhoneGap
|
3
3
|
PHONEGAP_APIS = %w{camera notification geolocation media contacts file network}
|
4
|
-
Plugin = Class.new Struct.new(:name, :version)
|
5
4
|
|
6
5
|
def add_stock_phonegap_apis
|
7
6
|
PHONEGAP_APIS.each do |api|
|
@@ -25,7 +24,9 @@ module Confetti
|
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
28
|
-
|
27
|
+
# deprecated in favor of gap:plugin tags
|
28
|
+
# still supported for ChildBrowser
|
29
|
+
def legacy_plugins
|
29
30
|
p_name = /http:\/\/plugins[.]phonegap[.]com\/([^\/]*)\/([^\/]*)/
|
30
31
|
|
31
32
|
# find features corresponding to plugins
|
data/lib/confetti/version.rb
CHANGED
@@ -20,8 +20,8 @@ describe Confetti::Config::Feature do
|
|
20
20
|
@feature.param_set.should be_a TypedSet
|
21
21
|
end
|
22
22
|
|
23
|
-
it "should make the param_set set typed to Confetti::Config::
|
24
|
-
@feature.param_set.set_class.should be Confetti::Config::
|
23
|
+
it "should make the param_set set typed to Confetti::Config::Param" do
|
24
|
+
@feature.param_set.set_class.should be Confetti::Config::Param
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should not allow the param_set to be clobbered" do
|
data/spec/config_spec.rb
CHANGED
@@ -129,6 +129,14 @@ describe Confetti::Config do
|
|
129
129
|
}
|
130
130
|
}.should raise_error
|
131
131
|
end
|
132
|
+
|
133
|
+
it "has a plugin_set field, that is a TypedSet" do
|
134
|
+
@config.plugin_set.should be_a TypedSet
|
135
|
+
end
|
136
|
+
|
137
|
+
it "plugin_set should be typed to plugin objects" do
|
138
|
+
@config.plugin_set.set_class.should be Confetti::Config::Plugin
|
139
|
+
end
|
132
140
|
end
|
133
141
|
|
134
142
|
describe "#initialize with file" do
|
@@ -391,6 +399,52 @@ describe Confetti::Config do
|
|
391
399
|
end
|
392
400
|
end
|
393
401
|
end
|
402
|
+
|
403
|
+
describe "plugins" do
|
404
|
+
before do
|
405
|
+
@config = Confetti::Config.new
|
406
|
+
@config.populate_from_xml(fixture_dir + "/config-plugins.xml")
|
407
|
+
@plugins = @config.plugin_set
|
408
|
+
end
|
409
|
+
|
410
|
+
it "should populate the plugin set" do
|
411
|
+
@plugins.size.should be 3
|
412
|
+
end
|
413
|
+
|
414
|
+
describe "plugin set created" do
|
415
|
+
before do
|
416
|
+
@child = @plugins.detect { |a| a.name == "ChildBrowser" }
|
417
|
+
@push = @plugins.detect { |a| a.name == "PushNotifications" }
|
418
|
+
@fbconnect = @plugins.detect { |a| a.name == "FBConnect" }
|
419
|
+
end
|
420
|
+
|
421
|
+
it "should set the version properties correctly" do
|
422
|
+
@child.version.should be_nil
|
423
|
+
@push.version.should == "~2.0"
|
424
|
+
@fbconnect.version.should == "~1"
|
425
|
+
end
|
426
|
+
|
427
|
+
describe "params" do
|
428
|
+
it "should be empty when none are specified" do
|
429
|
+
@child.param_set.should be_empty
|
430
|
+
@push.param_set.should be_empty
|
431
|
+
end
|
432
|
+
|
433
|
+
it "should be populated when specified" do
|
434
|
+
@fbconnect.param_set.size.should == 2
|
435
|
+
end
|
436
|
+
|
437
|
+
it "should be populated correctly" do
|
438
|
+
params = @fbconnect.param_set
|
439
|
+
key = params.detect { |pm| pm.name == "APIKey" }
|
440
|
+
secret = params.detect { |pm| pm.name == "APISecret" }
|
441
|
+
|
442
|
+
key.value.should == "SOMEKEY"
|
443
|
+
secret.value.should == "SOMESECRET"
|
444
|
+
end
|
445
|
+
end
|
446
|
+
end
|
447
|
+
end
|
394
448
|
end
|
395
449
|
|
396
450
|
describe "config generation" do
|
@@ -0,0 +1,60 @@
|
|
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.alunny.confetti"
|
5
|
+
version = "1.0.0">
|
6
|
+
|
7
|
+
<name>Confetti Sample App</name>
|
8
|
+
|
9
|
+
<description>
|
10
|
+
This is a sample config.xml for integration testing with Confetti
|
11
|
+
</description>
|
12
|
+
|
13
|
+
<license href="http://www.opensource.org/licenses/mit-license.php">The MIT License
|
14
|
+
|
15
|
+
Copyright (c) 2011 Andrew Lunny
|
16
|
+
|
17
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
18
|
+
of this software and associated documentation files (the "Software"), to deal
|
19
|
+
in the Software without restriction, including without limitation the rights
|
20
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
21
|
+
copies of the Software, and to permit persons to whom the Software is
|
22
|
+
furnished to do so, subject to the following conditions:
|
23
|
+
|
24
|
+
The above copyright notice and this permission notice shall be included in
|
25
|
+
all copies or substantial portions of the Software.
|
26
|
+
|
27
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
28
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
29
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
30
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
31
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
32
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
33
|
+
THE SOFTWARE.</license>
|
34
|
+
|
35
|
+
<author href="http://alunny.github.com"
|
36
|
+
email="alunny@gmail.com">
|
37
|
+
Andrew Lunny
|
38
|
+
</author>
|
39
|
+
|
40
|
+
<icon src="icon.png" height="150" width="200" />
|
41
|
+
|
42
|
+
<gap:splash src="mainsplash.png" height="480" width="360" />
|
43
|
+
|
44
|
+
<preference name="universal" value="true"/>
|
45
|
+
<preference name="phonegap-version" value="1.3.0"/>
|
46
|
+
|
47
|
+
<feature name="http://api.phonegap.com/1.0/geolocation" required="true"/>
|
48
|
+
<feature name="http://api.phonegap.com/1.0/camera" required="true"/>
|
49
|
+
<feature name="http://api.phonegap.com/1.0/notification" required="true"/>
|
50
|
+
|
51
|
+
<access origin="*" />
|
52
|
+
|
53
|
+
<gap:plugin name="ChildBrowser" />
|
54
|
+
<gap:plugin name="PushNotifications" version="~2.0" />
|
55
|
+
|
56
|
+
<gap:plugin name="FBConnect" version="~1" >
|
57
|
+
<param name="APIKey" value="SOMEKEY" />
|
58
|
+
<param name="APISecret" value="SOMESECRET" />
|
59
|
+
</gap:plugin>
|
60
|
+
</widget>
|
data/spec/phonegap_spec.rb
CHANGED
@@ -30,7 +30,7 @@ describe Confetti::PhoneGap do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe "#
|
33
|
+
describe "#legacy_plugins" do
|
34
34
|
before do
|
35
35
|
@obj.feature_set = []
|
36
36
|
childbrowser = "http://plugins.phonegap.com/ChildBrowser/1.0.1"
|
@@ -44,17 +44,17 @@ describe Confetti::PhoneGap do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should return an array with 2 entries" do
|
47
|
-
@obj.
|
47
|
+
@obj.legacy_plugins.length.should be 2
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should return an array with 2 Plugin objects" do
|
51
|
-
@obj.
|
52
|
-
@obj.
|
51
|
+
@obj.legacy_plugins.first.should be_a Confetti::PhoneGap::Plugin
|
52
|
+
@obj.legacy_plugins.last.should be_a Confetti::PhoneGap::Plugin
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should return the right data as plugins" do
|
56
|
-
childbrowser = @obj.
|
57
|
-
fbconnect = @obj.
|
56
|
+
childbrowser = @obj.legacy_plugins.first
|
57
|
+
fbconnect = @obj.legacy_plugins.last
|
58
58
|
|
59
59
|
childbrowser.name.should == "ChildBrowser"
|
60
60
|
childbrowser.version.should == "1.0.1"
|
data/spec/plugin_spec.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Confetti::PhoneGap::Plugin do
|
4
|
+
before do
|
5
|
+
@child = Confetti::PhoneGap::Plugin.new("ChildBrowser", "~2.0")
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should have a readable and writable name field" do
|
9
|
+
lambda { @child.name = "MediaBrowser" }.should_not raise_error
|
10
|
+
@child.name.should == "MediaBrowser"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should have a readable and writable version field" do
|
14
|
+
lambda { @child.version = "1.0" }.should_not raise_error
|
15
|
+
@child.version.should == "1.0"
|
16
|
+
end
|
17
|
+
|
18
|
+
describe "parameter set" do
|
19
|
+
it "should have a param_set field, that is a TypedSet" do
|
20
|
+
@child.param_set.should be_a TypedSet
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should make the param_set set typed to Confetti::Config::Param" do
|
24
|
+
@child.param_set.set_class.should be Confetti::Config::Param
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not allow the param_set to be clobbered" do
|
28
|
+
lambda {
|
29
|
+
@child.param_set = { :accuracy => 2.0 }
|
30
|
+
}.should raise_error
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 8
|
8
|
+
- 0
|
9
|
+
version: 0.8.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Lunny
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2012-
|
19
|
+
date: 2012-06-08 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -66,11 +66,13 @@ files:
|
|
66
66
|
- confetti.gemspec
|
67
67
|
- lib/confetti.rb
|
68
68
|
- lib/confetti/config.rb
|
69
|
+
- lib/confetti/config/classes.rb
|
69
70
|
- lib/confetti/config/feature.rb
|
70
71
|
- lib/confetti/config/image.rb
|
71
72
|
- lib/confetti/error.rb
|
72
73
|
- lib/confetti/helpers.rb
|
73
74
|
- lib/confetti/phonegap.rb
|
75
|
+
- lib/confetti/phonegap/plugin.rb
|
74
76
|
- lib/confetti/template.rb
|
75
77
|
- lib/confetti/template_helper.rb
|
76
78
|
- lib/confetti/templates/android_manifest.mustache
|
@@ -120,6 +122,7 @@ files:
|
|
120
122
|
- spec/fixtures/config-icons-custom-attribs.xml
|
121
123
|
- spec/fixtures/config-icons.xml
|
122
124
|
- spec/fixtures/config-long-desc.xml
|
125
|
+
- spec/fixtures/config-plugins.xml
|
123
126
|
- spec/fixtures/config.xml
|
124
127
|
- spec/fixtures/config_fullscreen.xml
|
125
128
|
- spec/fixtures/config_legacy.xml
|
@@ -144,6 +147,7 @@ files:
|
|
144
147
|
- spec/helpers_spec.rb
|
145
148
|
- spec/integration_spec.rb
|
146
149
|
- spec/phonegap_spec.rb
|
150
|
+
- spec/plugin_spec.rb
|
147
151
|
- spec/spec_helper.rb
|
148
152
|
- spec/template_spec.rb
|
149
153
|
- spec/templates/android_manifest_spec.rb
|
@@ -212,6 +216,7 @@ test_files:
|
|
212
216
|
- spec/fixtures/config-icons-custom-attribs.xml
|
213
217
|
- spec/fixtures/config-icons.xml
|
214
218
|
- spec/fixtures/config-long-desc.xml
|
219
|
+
- spec/fixtures/config-plugins.xml
|
215
220
|
- spec/fixtures/config.xml
|
216
221
|
- spec/fixtures/config_fullscreen.xml
|
217
222
|
- spec/fixtures/config_legacy.xml
|
@@ -236,6 +241,7 @@ test_files:
|
|
236
241
|
- spec/helpers_spec.rb
|
237
242
|
- spec/integration_spec.rb
|
238
243
|
- spec/phonegap_spec.rb
|
244
|
+
- spec/plugin_spec.rb
|
239
245
|
- spec/spec_helper.rb
|
240
246
|
- spec/template_spec.rb
|
241
247
|
- spec/templates/android_manifest_spec.rb
|