zfben_libjs 0.0.4 → 0.0.5

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.
@@ -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