high_five 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -1
- data/Gemfile.lock +7 -5
- data/high_five.gemspec +1 -0
- data/lib/high_five/config.rb +31 -1
- data/lib/high_five/deploy_task.rb +2 -1
- data/lib/high_five/version.rb +1 -1
- data/spec/config_spec.rb +59 -0
- data/template/config/high_five/index.html.erb +1 -0
- data/template/config/high_five.rb +19 -1
- metadata +18 -2
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--color
|
2
|
-
--format
|
2
|
+
--format nested
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
high_five (0.0.
|
4
|
+
high_five (0.0.6)
|
5
5
|
compass (~> 0.12.2)
|
6
|
+
json
|
6
7
|
sprockets (~> 2.9.0)
|
7
8
|
thor (~> 0.17.0)
|
8
9
|
yui-compressor (~> 0.9.6)
|
@@ -14,14 +15,15 @@ GEM
|
|
14
15
|
Platform (>= 0.4.0)
|
15
16
|
open4
|
16
17
|
Platform (0.4.0)
|
17
|
-
chunky_png (1.2.
|
18
|
+
chunky_png (1.2.8)
|
18
19
|
compass (0.12.2)
|
19
20
|
chunky_png (~> 1.2)
|
20
21
|
fssm (>= 0.2.7)
|
21
22
|
sass (~> 3.1)
|
22
23
|
diff-lcs (1.2.1)
|
23
24
|
fssm (0.2.10)
|
24
|
-
hike (1.2.
|
25
|
+
hike (1.2.2)
|
26
|
+
json (1.7.7)
|
25
27
|
multi_json (1.7.2)
|
26
28
|
open4 (1.3.0)
|
27
29
|
rack (1.5.2)
|
@@ -34,13 +36,13 @@ GEM
|
|
34
36
|
diff-lcs (>= 1.1.3, < 2.0)
|
35
37
|
rspec-mocks (2.13.0)
|
36
38
|
sass (3.2.7)
|
37
|
-
sprockets (2.9.
|
39
|
+
sprockets (2.9.2)
|
38
40
|
hike (~> 1.2)
|
39
41
|
multi_json (~> 1.0)
|
40
42
|
rack (~> 1.0)
|
41
43
|
tilt (~> 1.1, != 1.3.0)
|
42
44
|
thor (0.17.0)
|
43
|
-
tilt (1.3.
|
45
|
+
tilt (1.3.7)
|
44
46
|
yui-compressor (0.9.6)
|
45
47
|
POpen4 (>= 0.1.4)
|
46
48
|
|
data/high_five.gemspec
CHANGED
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.add_runtime_dependency "compass", "~>0.12.2"
|
20
20
|
s.add_runtime_dependency "yui-compressor", "~>0.9.6"
|
21
21
|
s.add_runtime_dependency "sprockets", "~>2.9.0"
|
22
|
+
s.add_runtime_dependency "json"
|
22
23
|
s.add_development_dependency "rspec", "~>2.13.0"
|
23
24
|
|
24
25
|
s.files = `git ls-files`.split("\n")
|
data/lib/high_five/config.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'json'
|
1
2
|
module HighFive
|
2
3
|
class Config
|
3
4
|
attr_accessor :root, # Root of the project
|
@@ -9,7 +10,10 @@ module HighFive
|
|
9
10
|
:static_stylesheets,
|
10
11
|
:sass_files,
|
11
12
|
:asset_paths,
|
12
|
-
:
|
13
|
+
:platform_configs,
|
14
|
+
:compass_dir,
|
15
|
+
:js_settings, #serialized out to HighFive.Settings in index.html
|
16
|
+
:is_environment #boolean for if this config is an environment platform
|
13
17
|
|
14
18
|
|
15
19
|
def self.configure(&block)
|
@@ -47,6 +51,12 @@ module HighFive
|
|
47
51
|
new_config.sass_files += self.sass_files
|
48
52
|
new_config.asset_paths += self.asset_paths
|
49
53
|
new_config.compass_dir ||= self.compass_dir
|
54
|
+
new_config.js_settings.merge! self.js_settings do |key, new_setting, old_setting|
|
55
|
+
new_setting || old_setting #don't clobber settings from the parent
|
56
|
+
end
|
57
|
+
new_config.platform_configs = @platform_configs.reject do |key, platform_config|
|
58
|
+
key == platform
|
59
|
+
end
|
50
60
|
return new_config
|
51
61
|
else
|
52
62
|
return self
|
@@ -61,6 +71,7 @@ module HighFive
|
|
61
71
|
@sass_files = config.sass_files.dup
|
62
72
|
@meta = config.meta.dup
|
63
73
|
@asset_paths = config.asset_paths.dup
|
74
|
+
@js_settings = config.js_settings.dup
|
64
75
|
self.root = config.root
|
65
76
|
self.destination = config.destination
|
66
77
|
self.page_title = config.page_title
|
@@ -73,7 +84,9 @@ module HighFive
|
|
73
84
|
@meta = {}
|
74
85
|
@platform_configs = {}
|
75
86
|
@asset_paths = []
|
87
|
+
@js_settings = {}
|
76
88
|
end
|
89
|
+
@is_environment = false
|
77
90
|
end
|
78
91
|
|
79
92
|
def assets(path)
|
@@ -100,5 +113,22 @@ module HighFive
|
|
100
113
|
@platform_configs[name.to_s] = HighFive::Config.new
|
101
114
|
yield @platform_configs[name.to_s]
|
102
115
|
end
|
116
|
+
|
117
|
+
def environment(name, &block)
|
118
|
+
platform(name, &block)
|
119
|
+
@platform_configs[name.to_s].is_environment = true
|
120
|
+
end
|
121
|
+
|
122
|
+
def setting(hash)
|
123
|
+
@js_settings.merge!(hash)
|
124
|
+
end
|
125
|
+
alias settings setting
|
126
|
+
|
127
|
+
def high_five_javascript
|
128
|
+
js = '<script type="text/javascript">'
|
129
|
+
js += "if(typeof(window.HighFive)==='undefined'){window.HighFive={};}window.HighFive.Settings=#{JSON.dump(js_settings)};"
|
130
|
+
js += '</script>'
|
131
|
+
js
|
132
|
+
end
|
103
133
|
end
|
104
134
|
end
|
@@ -17,7 +17,7 @@ module HighFive
|
|
17
17
|
@weinre_url = options[:weinre_url]
|
18
18
|
@copy_files = options[:"copy-files"]
|
19
19
|
@meta = {}
|
20
|
-
@config = base_config.build_platform_config(@platform)
|
20
|
+
@config = base_config.build_platform_config(@platform).build_platform_config(@environment)
|
21
21
|
@config_root = File.join("config", "high_five")
|
22
22
|
|
23
23
|
self.source_paths << File.join(base_config.root, @config_root)
|
@@ -117,6 +117,7 @@ module HighFive
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
|
+
@high_five_javascript = @config.high_five_javascript
|
120
121
|
# Build index.html
|
121
122
|
say "Generating index.html"
|
122
123
|
template File.join(@config_root, "index.html.erb"), File.join(self.destination_root, "index.html")
|
data/lib/high_five/version.rb
CHANGED
data/spec/config_spec.rb
CHANGED
@@ -19,4 +19,63 @@ describe HighFive::Config do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
+
context "settings" do
|
23
|
+
before do
|
24
|
+
HighFive::Config.configure do |config|
|
25
|
+
config.root = "/"
|
26
|
+
config.setting base_url: "http://example.com/api"
|
27
|
+
config.environment :production do |production|
|
28
|
+
production.setting base_url: "http://production.example.com/api"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
@config = HighFive::Config.instance
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should serialize all the settings to json" do
|
35
|
+
@config.high_five_javascript.should eq %q(<script type="text/javascript">if(typeof(window.HighFive)==='undefined'){window.HighFive={};}window.HighFive.Settings={"base_url":"http://example.com/api"};</script>)
|
36
|
+
end
|
37
|
+
|
38
|
+
example "platform settings should take precedence" do
|
39
|
+
prod = @config.build_platform_config :production
|
40
|
+
prod.js_settings[:base_url].should eq "http://production.example.com/api"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
context "environment configuration" do
|
46
|
+
before do
|
47
|
+
HighFive::Config.configure do |config|
|
48
|
+
config.root = "/"
|
49
|
+
config.setting base_url: "http://example.com/api"
|
50
|
+
config.platform :android do |android|
|
51
|
+
android.assets "android_asset"
|
52
|
+
android.setting android_flag: true
|
53
|
+
end
|
54
|
+
config.environment :production do |production|
|
55
|
+
production.assets "production_asset"
|
56
|
+
production.setting base_url: "http://production.example.com/api"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
@config = HighFive::Config.instance
|
60
|
+
end
|
61
|
+
|
62
|
+
it "inherits from platforms" do
|
63
|
+
config = @config.build_platform_config(:android).build_platform_config(:production)
|
64
|
+
config.static_assets.should include "android_asset"
|
65
|
+
config.static_assets.should include "production_asset"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "doesn't care about the inherit order" do
|
69
|
+
config = @config.build_platform_config(:production).build_platform_config(:android)
|
70
|
+
config.static_assets.should include "android_asset"
|
71
|
+
config.static_assets.should include "production_asset"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "merges settings" do
|
75
|
+
config = @config.build_platform_config(:android).build_platform_config(:production)
|
76
|
+
config.js_settings.should be_has_key(:base_url)
|
77
|
+
config.js_settings.should be_has_key(:android_flag)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
22
81
|
end
|
@@ -11,6 +11,16 @@ HighFive::Config.configure do |config|
|
|
11
11
|
# config.javascripts "http://maps.google.com/maps/api/js?sensor=true"
|
12
12
|
# config.javascripts "lib/jquery-min.js"
|
13
13
|
|
14
|
+
# Run `compass compile` in this directory before doing anything
|
15
|
+
# config.compass "resources/sass"
|
16
|
+
|
17
|
+
# copy and include these stylesheets in the html
|
18
|
+
# config.stylesheets "resources/css/app.css"
|
19
|
+
# config.stylesheets "resources/css/jquery-ui.css"
|
20
|
+
|
21
|
+
# Basic key/value settings that will be available to your javascript
|
22
|
+
# config.setting base_url: "http://dev.example.com/api" # HighFive.settings.base_url = "http://dev.example.com/api"
|
23
|
+
|
14
24
|
# Configure plaform specific settings like this
|
15
25
|
# config.platform :ios do |ios|
|
16
26
|
# ios.assets "resources/ios"
|
@@ -18,6 +28,14 @@ HighFive::Config.configure do |config|
|
|
18
28
|
# end
|
19
29
|
|
20
30
|
# if you need platform-specific javascripts,
|
21
|
-
# simply create app-<platform>.js
|
31
|
+
# simply create app-<platform>.js
|
32
|
+
# these files are managed by sprockets, and are used to determine the javascript include order
|
33
|
+
|
34
|
+
# Environment support: production/development/etc
|
35
|
+
# Environments work just like platforms
|
36
|
+
# config.environment :production do |prod|
|
37
|
+
# production.javascripts "settings/production.js"
|
38
|
+
# production.setting base_url: "http://production.example.com/api/" #these take precedence over the platform overrides
|
39
|
+
# end
|
22
40
|
|
23
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: high_five
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
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-04-
|
12
|
+
date: 2013-04-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 2.9.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: rspec
|
80
96
|
requirement: !ruby/object:Gem::Requirement
|