zfben_libjs 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,6 +4,14 @@ libs = {}
4
4
  # save loaded source to `loaded`
5
5
  loaded = {}
6
6
 
7
+ for link in document.getElementsByTagName('link')
8
+ if link.href && link.href isnt ''
9
+ loaded[link.href] = true
10
+
11
+ for script in document.getElementsByTagName('script')
12
+ if script.src && script.src isnt ''
13
+ loaded[script.src] = true
14
+
7
15
  # pending
8
16
  pending_urls = {}
9
17
  pending_funcs = {}
@@ -34,25 +42,21 @@ lib = ->
34
42
  css = []
35
43
  js = []
36
44
  funcs = []
37
- urls = []
38
45
 
39
46
  source_types = (args)->
40
47
  for arg in args
41
48
  switch typeof arg
42
49
  when 'string'
43
- if typeof loaded[arg] is 'undefined' && typeof pending_urls[arg] is 'undefined'
44
- if arg.indexOf(' ') >= 0
45
- source_types(arg.split(' '))
50
+ if arg.indexOf(' ') >= 0
51
+ source_types(arg.split(' '))
52
+ else
53
+ if typeof libs[arg] isnt 'undefined'
54
+ source_types(libs[arg])
46
55
  else
47
- if typeof libs[arg] isnt 'undefined' then source_types(libs[arg])
48
56
  if /\.css[^\.]*$/.test(arg)
49
57
  css.push(arg)
50
- urls.push(arg)
51
- pending_urls[arg] = true
52
58
  if /\.js[^\.]*$/.test(arg)
53
59
  js.push(arg)
54
- urls.push(arg)
55
- pending_urls[arg] = true
56
60
  when 'function'
57
61
  funcs.push(arg)
58
62
  else
@@ -61,25 +65,41 @@ lib = ->
61
65
 
62
66
  source_types(arguments)
63
67
 
68
+ urls = css.concat(js)
69
+
64
70
  # progress css
65
- if css.length > 0
66
- LazyLoad.css(css, ->
67
- for url in css
68
- loaded[url] = true
71
+ pending_css = []
72
+
73
+ for url in css
74
+ if typeof loaded[url] is 'undefined' && typeof pending_urls[url] is 'undefined'
75
+ pending_urls[url] = true
76
+ pending_css.push url
77
+
78
+ if pending_css.length > 0
79
+ LazyLoad.css(pending_css, ->
80
+ for url in pending_css
69
81
  delete pending_urls[url]
82
+ loaded[url] = true
70
83
  run_funcs()
71
84
  )
72
85
 
73
86
  # progress js
87
+ pending_js = []
88
+
89
+ for url in js
90
+ if typeof loaded[url] is 'undefined' && typeof pending_urls[url] is 'undefined'
91
+ pending_urls[url] = true
92
+ pending_js.push url
93
+
74
94
  if js.length > 0
75
- LazyLoad.js(js, ->
76
- for url in js
77
- loaded[url] = true
95
+ LazyLoad.js(pending_js, ->
96
+ for url in pending_js
78
97
  delete pending_urls[url]
98
+ loaded[url] = true
79
99
  run_funcs()
80
100
  )
81
101
 
82
- # if everything is loaded, run funcs
102
+ # put funcs to pending_funcs
83
103
  if funcs.length > 0
84
104
  pending_funcs[urls.join(' ')] = funcs
85
105
  run_funcs()
@@ -107,16 +127,16 @@ lib.loaded = ->
107
127
 
108
128
  # change libs api
109
129
  lib.libs = (new_libs)->
110
- for name, urls of new_libs
130
+ for lib_name, urls of new_libs
131
+ delete(libs[lib_name])
132
+ delete(lib[lib_name])
111
133
  if urls isnt null
112
- libs[name] = urls
113
- ((name, urls)->
114
- lib[name] = ->
115
- lib(urls, arguments)
116
- )(name, urls)
117
- else
118
- delete(libs[name])
119
- delete(lib[name])
134
+ libs[lib_name] = urls
135
+ ((lib_name) ->
136
+ lib[lib_name] = ->
137
+ args = [lib_name].concat(Array.prototype.slice.call(arguments))
138
+ lib.apply(this, args)
139
+ )(lib_name)
120
140
  return libs
121
141
 
122
142
  window.lib = lib
@@ -1,3 +1,3 @@
1
1
  module ZfbenLibjs
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/zfben_libjs.rb CHANGED
@@ -95,7 +95,7 @@ class Libjs
95
95
  if @libs.has_key?(url) && name != url
96
96
  lib.push(url)
97
97
  else
98
- path = File.join(@config['src/source'], name, File.basename(url))
98
+ p path = File.join(@config['src/source'], name, File.basename(url))
99
99
  dir = File.dirname(path)
100
100
  system('mkdir ' + dir) unless File.exists?(dir)
101
101
  download url, path
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
4
+ version: 0.0.5
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-08 00:00:00.000000000Z
12
+ date: 2011-08-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rainbow
16
- requirement: &10037280 !ruby/object:Gem::Requirement
16
+ requirement: &14333880 !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: *10037280
24
+ version_requirements: *14333880
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &10036800 !ruby/object:Gem::Requirement
27
+ requirement: &14333400 !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: *10036800
35
+ version_requirements: *14333400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: compass
38
- requirement: &10036380 !ruby/object:Gem::Requirement
38
+ requirement: &14332980 !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: *10036380
46
+ version_requirements: *14332980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: coffee-script
49
- requirement: &10035940 !ruby/object:Gem::Requirement
49
+ requirement: &14332540 !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: *10035940
57
+ version_requirements: *14332540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: uglifier
60
- requirement: &10035500 !ruby/object:Gem::Requirement
60
+ requirement: &14332120 !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: *10035500
68
+ version_requirements: *14332120
69
69
  description: ''
70
70
  email:
71
71
  - ben@zfben.com