zfben_libjs 0.0.9 → 0.0.10
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/lib/zfben_libjs/lib.coffee +42 -2
- data/lib/zfben_libjs.rb +23 -7
- data/test/javascript/lib_test.js +33 -6
- data/test/route_regexp.js +1 -0
- data/test/route_string.js +1 -0
- data/test/support_filetype/css.css +1 -1
- data/test/support_filetype/rb_css.rb +1 -1
- data/test/support_filetype/sass.sass +1 -1
- data/test/support_filetype/scss.scss +1 -1
- data/test.yml +13 -6
- data/zfben_libjs.gemspec +2 -4
- metadata +15 -13
data/lib/zfben_libjs/lib.coffee
CHANGED
|
@@ -77,11 +77,13 @@ lib = ->
|
|
|
77
77
|
|
|
78
78
|
if pending_css.length > 0
|
|
79
79
|
loading_css = []
|
|
80
|
+
|
|
80
81
|
if lib.defaults.version
|
|
81
82
|
for url in pending_css
|
|
82
83
|
loading_css.push url + lib.defaults.version
|
|
83
84
|
else
|
|
84
85
|
loading_css = pending_css
|
|
86
|
+
|
|
85
87
|
LazyLoad.css(loading_css, ->
|
|
86
88
|
for url in pending_css
|
|
87
89
|
delete pending_urls[url]
|
|
@@ -97,13 +99,15 @@ lib = ->
|
|
|
97
99
|
pending_urls[url] = true
|
|
98
100
|
pending_js.push url
|
|
99
101
|
|
|
100
|
-
if
|
|
102
|
+
if pending_js.length > 0
|
|
101
103
|
loading_js = []
|
|
104
|
+
|
|
102
105
|
if lib.defaults.version
|
|
103
106
|
for url in pending_js
|
|
104
107
|
loading_js.push url + lib.defaults.version
|
|
105
108
|
else
|
|
106
109
|
loading_js = pending_js
|
|
110
|
+
|
|
107
111
|
LazyLoad.js(loading_js, ->
|
|
108
112
|
for url in pending_js
|
|
109
113
|
delete pending_urls[url]
|
|
@@ -114,7 +118,8 @@ lib = ->
|
|
|
114
118
|
# put funcs to pending_funcs
|
|
115
119
|
if funcs.length > 0
|
|
116
120
|
pending_funcs[urls.join(' ')] = funcs
|
|
117
|
-
|
|
121
|
+
|
|
122
|
+
run_funcs()
|
|
118
123
|
|
|
119
124
|
return {
|
|
120
125
|
css: css
|
|
@@ -161,4 +166,39 @@ lib.libs = (new_libs)->
|
|
|
161
166
|
|
|
162
167
|
lib.defaults = {}
|
|
163
168
|
|
|
169
|
+
# Route
|
|
170
|
+
routes = {}
|
|
171
|
+
last_location = ''
|
|
172
|
+
|
|
173
|
+
path2regex = (path)->
|
|
174
|
+
if path[0] is '/' && path[path.length - 1] is '/'
|
|
175
|
+
path = path[1..(path.length - 2)]
|
|
176
|
+
return path
|
|
177
|
+
|
|
178
|
+
lib.routes = (method, args)->
|
|
179
|
+
switch method
|
|
180
|
+
when 'add'
|
|
181
|
+
for path, lib_name of args
|
|
182
|
+
routes[path2regex(path)] = lib_name
|
|
183
|
+
last_location = ''
|
|
184
|
+
when 'del'
|
|
185
|
+
for path, lib_name of args
|
|
186
|
+
delete(routes[path2regex(path)])
|
|
187
|
+
return routes
|
|
188
|
+
|
|
189
|
+
Location_watch = ->
|
|
190
|
+
location_path = location.hostname + location.pathname + location.hash
|
|
191
|
+
if location_path isnt last_location
|
|
192
|
+
libs_name = []
|
|
193
|
+
for path, lib_name of routes
|
|
194
|
+
if RegExp(path).test location_path
|
|
195
|
+
libs_name.push lib_name
|
|
196
|
+
if libs_name.length > 0
|
|
197
|
+
lib(libs_name.join(' '))
|
|
198
|
+
last_location = location_path
|
|
199
|
+
setTimeout(->
|
|
200
|
+
Location_watch()
|
|
201
|
+
, 200)
|
|
202
|
+
|
|
164
203
|
window.lib = lib
|
|
204
|
+
Location_watch()
|
data/lib/zfben_libjs.rb
CHANGED
|
@@ -71,6 +71,8 @@ module Zfben_libjs
|
|
|
71
71
|
|
|
72
72
|
@bundle = @data['bundle']
|
|
73
73
|
|
|
74
|
+
@routes = @data['routes']
|
|
75
|
+
|
|
74
76
|
@preload = @data['preload']
|
|
75
77
|
|
|
76
78
|
if @config.has_key?('before')
|
|
@@ -202,10 +204,14 @@ module Zfben_libjs
|
|
|
202
204
|
if type == 'stylesheets' && @config['changeImageUrl'] && reg =~ File.read(path)
|
|
203
205
|
css = File.read(path).partition_all(reg).map{ |f|
|
|
204
206
|
if reg =~ f
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
filename = File.basename(f.match(reg)[1])
|
|
208
|
+
if File.exists?(File.join(@config['src/images'], filename))
|
|
209
|
+
if @config['url'] == ''
|
|
210
|
+
url = '../images/' << File.basename(f.match(reg)[1])
|
|
211
|
+
else
|
|
212
|
+
url = @config['url/images'] + File.basename(f.match(reg)[1])
|
|
213
|
+
end
|
|
214
|
+
f = 'url("' << url << '")'
|
|
209
215
|
end
|
|
210
216
|
end
|
|
211
217
|
f
|
|
@@ -314,6 +320,15 @@ module Zfben_libjs
|
|
|
314
320
|
libjs << "\n/* bundle */\nlib.libs(#{@bundle.to_json});"
|
|
315
321
|
end
|
|
316
322
|
|
|
323
|
+
if defined?(@routes)
|
|
324
|
+
routes = {}
|
|
325
|
+
@routes.each do |path, lib_name|
|
|
326
|
+
lib_name = lib_name.join ' ' if lib_name.class == Array
|
|
327
|
+
routes[path] = lib_name
|
|
328
|
+
end
|
|
329
|
+
libjs << "\n/* routes */\nlib.routes('add', #{routes.to_json});"
|
|
330
|
+
end
|
|
331
|
+
|
|
317
332
|
if @preload.class == Array && @preload.length > 0
|
|
318
333
|
libjs << "\n/* preload */\nlib('#{@preload.join(' ')}');"
|
|
319
334
|
end
|
|
@@ -334,10 +349,11 @@ module Zfben_libjs
|
|
|
334
349
|
if defined?(Rails)
|
|
335
350
|
module Rails
|
|
336
351
|
module ActionView::Helpers::AssetTagHelper
|
|
337
|
-
def lib *
|
|
352
|
+
def lib *opts
|
|
353
|
+
p opts
|
|
338
354
|
html = '<script src="/javascripts/lib.js' + Lib_version + '"></script>'
|
|
339
|
-
unless
|
|
340
|
-
html +=
|
|
355
|
+
unless opts.blank?
|
|
356
|
+
html += "<script>lib('#{opts.join(' ')}')</script>"
|
|
341
357
|
end
|
|
342
358
|
return html
|
|
343
359
|
end
|
data/test/javascript/lib_test.js
CHANGED
|
@@ -51,7 +51,9 @@ test('lib.libs', 6, function(){
|
|
|
51
51
|
'/javascripts/support_filetype.js'
|
|
52
52
|
],
|
|
53
53
|
unload: [ '/javascripts/unload.js' ],
|
|
54
|
-
load_times: [ '/javascripts/load_times.js' ]
|
|
54
|
+
load_times: [ '/javascripts/load_times.js' ],
|
|
55
|
+
route_string: [ '/javascripts/route_string.js' ],
|
|
56
|
+
route_regexp: [ '/javascripts/route_regexp.js' ]
|
|
55
57
|
}, 'lib.libs is ok');
|
|
56
58
|
|
|
57
59
|
equal(typeof lib.lazyload, 'function', 'lib.lazyload is a function');
|
|
@@ -64,6 +66,8 @@ test('lib.libs', 6, function(){
|
|
|
64
66
|
],
|
|
65
67
|
unload: [ '/javascripts/unload.js' ],
|
|
66
68
|
load_times: [ '/javascripts/load_times.js' ],
|
|
69
|
+
route_string: [ '/javascripts/route_string.js' ],
|
|
70
|
+
route_regexp: [ '/javascripts/route_regexp.js' ],
|
|
67
71
|
test: 'test'
|
|
68
72
|
}, "lib.libs({test: 'test'}) has been added");
|
|
69
73
|
|
|
@@ -76,7 +80,9 @@ test('lib.libs', 6, function(){
|
|
|
76
80
|
'/javascripts/support_filetype.js'
|
|
77
81
|
],
|
|
78
82
|
unload: [ '/javascripts/unload.js' ],
|
|
79
|
-
load_times: [ '/javascripts/load_times.js' ]
|
|
83
|
+
load_times: [ '/javascripts/load_times.js' ],
|
|
84
|
+
route_string: [ '/javascripts/route_string.js' ],
|
|
85
|
+
route_regexp: [ '/javascripts/route_regexp.js' ]
|
|
80
86
|
}, "lib.libs({test: null}) has been deleted");
|
|
81
87
|
|
|
82
88
|
equal(typeof lib.test, 'undefined', 'lib.test is undefined');
|
|
@@ -108,10 +114,10 @@ module('support_filetype');
|
|
|
108
114
|
|
|
109
115
|
asyncTest('stylesheet', 4, function() {
|
|
110
116
|
lib.support_filetype(function(){
|
|
111
|
-
equal($('.css').css('
|
|
112
|
-
equal($('.sass').css('
|
|
113
|
-
equal($('.scss').css('
|
|
114
|
-
equal($('.rb_css').css('
|
|
117
|
+
equal($('.css').css('color'), 'rgb(0, 0, 1)', 'css file loaded');
|
|
118
|
+
equal($('.sass').css('color'), 'rgb(0, 0, 2)', 'sass file loaded');
|
|
119
|
+
equal($('.scss').css('color'), 'rgb(0, 0, 3)', 'scss file loaded');
|
|
120
|
+
equal($('.rb_css').css('color'), 'rgb(0, 0, 4)', 'rb_css file loaded');
|
|
115
121
|
start();
|
|
116
122
|
});
|
|
117
123
|
});
|
|
@@ -124,3 +130,24 @@ asyncTest('javascript', 3, function() {
|
|
|
124
130
|
start();
|
|
125
131
|
});
|
|
126
132
|
});
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
module('lib.routes');
|
|
136
|
+
|
|
137
|
+
asyncTest('String route', 1, function(){
|
|
138
|
+
location.hash = '#Test_StringRoute';
|
|
139
|
+
|
|
140
|
+
setTimeout(function(){
|
|
141
|
+
ok(route_string, 'String route is applied');
|
|
142
|
+
start();
|
|
143
|
+
}, 1000);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
asyncTest('RegExp route', 1, function(){
|
|
147
|
+
location.hash = '#Test_RegExpRoute';
|
|
148
|
+
|
|
149
|
+
setTimeout(function(){
|
|
150
|
+
ok(route_regexp, 'RegExp route is applied');
|
|
151
|
+
start();
|
|
152
|
+
}, 1000);
|
|
153
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
route_regexp = true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
route_string = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.css{
|
|
1
|
+
.css{ color: rgb(0,0,1) !important }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ :css => '.rb_css{
|
|
1
|
+
{ :css => '.rb_css{ color: rgb(0,0,4) !important }' }
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
.sass
|
|
2
|
-
|
|
2
|
+
color: rgb(0,0,2) !important
|
data/test.yml
CHANGED
|
@@ -8,9 +8,16 @@ config:
|
|
|
8
8
|
|
|
9
9
|
# Files to be download and writen in lib.js
|
|
10
10
|
libs:
|
|
11
|
-
support_filetype:
|
|
12
|
-
|
|
13
|
-
unload:
|
|
14
|
-
|
|
15
|
-
load_times:
|
|
16
|
-
|
|
11
|
+
support_filetype: test/support_filetype/*
|
|
12
|
+
|
|
13
|
+
unload: test/unload.js
|
|
14
|
+
|
|
15
|
+
load_times: test/load_times.js
|
|
16
|
+
|
|
17
|
+
route_string: test/route_string.js
|
|
18
|
+
|
|
19
|
+
route_regexp: test/route_regexp.js
|
|
20
|
+
|
|
21
|
+
routes:
|
|
22
|
+
"#Test_StringRoute": route_string
|
|
23
|
+
"/#Test_RegExpRoute/": route_regexp
|
data/zfben_libjs.gemspec
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
|
4
4
|
Gem::Specification.new do |s|
|
|
5
|
-
s.name =
|
|
6
|
-
s.version = '0.0.
|
|
5
|
+
s.name = 'zfben_libjs'
|
|
6
|
+
s.version = '0.0.10'
|
|
7
7
|
s.authors = ["Ben"]
|
|
8
8
|
s.email = ["ben@zfben.com"]
|
|
9
9
|
s.homepage = "https://github.com/benz303/zfben_libjs"
|
|
@@ -18,8 +18,6 @@ Gem::Specification.new do |s|
|
|
|
18
18
|
********************************************************************************
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
s.rubyforge_project = "zfben_libjs"
|
|
22
|
-
|
|
23
21
|
s.files = `git ls-files`.split("\n")
|
|
24
22
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
25
23
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zfben_libjs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.10
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2011-08-
|
|
12
|
+
date: 2011-08-20 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rainbow
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &17698840 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,10 +21,10 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *17698840
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: json
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &17698380 !ruby/object:Gem::Requirement
|
|
28
28
|
none: false
|
|
29
29
|
requirements:
|
|
30
30
|
- - ! '>='
|
|
@@ -32,10 +32,10 @@ dependencies:
|
|
|
32
32
|
version: '0'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
|
-
version_requirements: *
|
|
35
|
+
version_requirements: *17698380
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: compass
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &17697960 !ruby/object:Gem::Requirement
|
|
39
39
|
none: false
|
|
40
40
|
requirements:
|
|
41
41
|
- - ! '>='
|
|
@@ -43,10 +43,10 @@ dependencies:
|
|
|
43
43
|
version: '0'
|
|
44
44
|
type: :runtime
|
|
45
45
|
prerelease: false
|
|
46
|
-
version_requirements: *
|
|
46
|
+
version_requirements: *17697960
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: coffee-script
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &17697540 !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
@@ -54,10 +54,10 @@ dependencies:
|
|
|
54
54
|
version: '0'
|
|
55
55
|
type: :runtime
|
|
56
56
|
prerelease: false
|
|
57
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *17697540
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: uglifier
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &17697120 !ruby/object:Gem::Requirement
|
|
61
61
|
none: false
|
|
62
62
|
requirements:
|
|
63
63
|
- - ! '>='
|
|
@@ -65,7 +65,7 @@ dependencies:
|
|
|
65
65
|
version: '0'
|
|
66
66
|
type: :runtime
|
|
67
67
|
prerelease: false
|
|
68
|
-
version_requirements: *
|
|
68
|
+
version_requirements: *17697120
|
|
69
69
|
description: ''
|
|
70
70
|
email:
|
|
71
71
|
- ben@zfben.com
|
|
@@ -88,6 +88,8 @@ files:
|
|
|
88
88
|
- test/javascript/lib_test.js
|
|
89
89
|
- test/javascript/templates/test_case.erb
|
|
90
90
|
- test/load_times.js
|
|
91
|
+
- test/route_regexp.js
|
|
92
|
+
- test/route_string.js
|
|
91
93
|
- test/support_filetype/coffee.coffee
|
|
92
94
|
- test/support_filetype/css.css
|
|
93
95
|
- test/support_filetype/js.js
|
|
@@ -118,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
118
120
|
- !ruby/object:Gem::Version
|
|
119
121
|
version: '0'
|
|
120
122
|
requirements: []
|
|
121
|
-
rubyforge_project:
|
|
123
|
+
rubyforge_project:
|
|
122
124
|
rubygems_version: 1.8.6
|
|
123
125
|
signing_key:
|
|
124
126
|
specification_version: 3
|