zfben_libjs 0.0.26 → 0.0.27
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +141 -0
- data/Rakefile +0 -1
- data/lib/zfben_libjs/helpers.rb +11 -2
- data/lib/zfben_libjs/support_source/css.rb +2 -1
- data/test/custom_filetype.mustache +1 -0
- data/test/javascript/lib_test.js +17 -2
- data/test/mustache.rb +17 -0
- data/test.yml +9 -0
- data/zfben_libjs.gemspec +1 -1
- metadata +19 -17
- data/README.rdoc +0 -87
data/README.md
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
# Lib.js
|
2
|
+
|
3
|
+
Lib.js = Frontend build tool + lazyload js tool
|
4
|
+
|
5
|
+
## Getting Started
|
6
|
+
|
7
|
+
```bash
|
8
|
+
gem install zfben_libjs
|
9
|
+
|
10
|
+
libjs new < project_name >
|
11
|
+
```
|
12
|
+
|
13
|
+
## Feature:
|
14
|
+
|
15
|
+
* lazyload css and js files (base on LazyLoad.js)
|
16
|
+
* minify css and js files (base on sass and uglifier)
|
17
|
+
* support sass, scss, compass and coffeescript files
|
18
|
+
* download remote files
|
19
|
+
* custom ruby script
|
20
|
+
* custom filetype
|
21
|
+
* before and after events
|
22
|
+
* custom routes
|
23
|
+
|
24
|
+
## Support Filetype:
|
25
|
+
|
26
|
+
* .css - stylesheet
|
27
|
+
|
28
|
+
* .js - javascript
|
29
|
+
|
30
|
+
* .sass - sass
|
31
|
+
|
32
|
+
* .scss - scss
|
33
|
+
|
34
|
+
* .coffee - coffeescript
|
35
|
+
|
36
|
+
* .rb - ruby
|
37
|
+
|
38
|
+
* .??? - custom filetype
|
39
|
+
|
40
|
+
## Javascript Example
|
41
|
+
```javascript
|
42
|
+
// load jquery
|
43
|
+
lib.jquery(function(){
|
44
|
+
// something use jquery to do
|
45
|
+
});
|
46
|
+
|
47
|
+
// load jqueryui and not duplicate load jquery
|
48
|
+
lib.jqueryui(function(){
|
49
|
+
// something use jqueryui to do
|
50
|
+
});
|
51
|
+
|
52
|
+
// and you can load like
|
53
|
+
lib('jquery', function(){
|
54
|
+
// use jquery to do sth.
|
55
|
+
});
|
56
|
+
|
57
|
+
lib('jquery underscore', function(){
|
58
|
+
// use jquery and underscore to do sth.
|
59
|
+
});
|
60
|
+
```
|
61
|
+
## Rails Example
|
62
|
+
```ruby
|
63
|
+
# Gemfile
|
64
|
+
gem 'zfben_libjs'
|
65
|
+
```
|
66
|
+
```erb
|
67
|
+
# layout.html.erb
|
68
|
+
|
69
|
+
<%= lib %>
|
70
|
+
# => <script src="/javascripts/lib.js?12345678"></script>
|
71
|
+
|
72
|
+
<%= lib :home %>
|
73
|
+
# => <script src="/javascripts/lib.js?12345678"></script><script>lib('home')</script>
|
74
|
+
|
75
|
+
<%= lib 'home.css' %>
|
76
|
+
# => <link rel="stylesheet" href="/stylesheets/home.css?12345678" /><script src="/javascripts/lib.js?12345678"></script>
|
77
|
+
|
78
|
+
<%= lib 'home.js' %>
|
79
|
+
# => <script src="/javascripts/home.js?12345678"></script><script src="/javascripts/lib.js?12345678"></script>
|
80
|
+
```
|
81
|
+
## Sinatra Example
|
82
|
+
```ruby
|
83
|
+
helpers Zfben_libjs::Helpers
|
84
|
+
```
|
85
|
+
|
86
|
+
## Custom Filetype Example
|
87
|
+
```yaml
|
88
|
+
# add support_source to config yaml file
|
89
|
+
support_source:
|
90
|
+
- mustache.rb
|
91
|
+
```
|
92
|
+
```ruby
|
93
|
+
# mustache.rb
|
94
|
+
class Zfben_libjs::Mustache < Zfben_libjs::Source
|
95
|
+
def after_initialize
|
96
|
+
@source = "this['#{File.basename(@filepath, '.mustache')}']=(data)->Mustache.to_html('''#{@source}''', data)"
|
97
|
+
end
|
98
|
+
|
99
|
+
def compile
|
100
|
+
Zfben_libjs::Coffee.new(:source => @source).compile
|
101
|
+
end
|
102
|
+
|
103
|
+
def to_js
|
104
|
+
compile
|
105
|
+
end
|
106
|
+
|
107
|
+
def minify
|
108
|
+
@minified = Zfben_libjs::Js.new(:source => @source).minify
|
109
|
+
end
|
110
|
+
end
|
111
|
+
```
|
112
|
+
|
113
|
+
## Routes
|
114
|
+
```yaml
|
115
|
+
# add routes to config yaml file
|
116
|
+
routes:
|
117
|
+
"#Test_StringRoute": route_string
|
118
|
+
"/#Test_RegExpRoute/": route_regexp
|
119
|
+
```
|
120
|
+
|
121
|
+
## More Settings
|
122
|
+
|
123
|
+
See https://github.com/benz303/zfben_libjs/blob/master/test.yml
|
124
|
+
|
125
|
+
## TODO
|
126
|
+
|
127
|
+
### libjs
|
128
|
+
* Make lib() return as defferred object
|
129
|
+
* Add ready event
|
130
|
+
|
131
|
+
### Compile
|
132
|
+
* Support Zfben_libjs::Libjs.new.build!(url)
|
133
|
+
* Support auto-compile when file changed
|
134
|
+
* Auto merge sass and scss to speed up compile
|
135
|
+
* Lazyload files to speed up load
|
136
|
+
* Add debug mode for javascript
|
137
|
+
* * use console.log(filepath)
|
138
|
+
|
139
|
+
### Web Service
|
140
|
+
* Use sinatra as web server
|
141
|
+
* UI for control compile
|
data/Rakefile
CHANGED
data/lib/zfben_libjs/helpers.rb
CHANGED
@@ -34,10 +34,19 @@ module Zfben_libjs::Helpers
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def lib_js url
|
37
|
-
return "<script src='/javascripts/#{url}#{Lib_version}'></script>"
|
37
|
+
return "<script src='#{asset_host}/javascripts/#{url}#{Lib_version}'></script>"
|
38
38
|
end
|
39
39
|
|
40
40
|
def lib_css url
|
41
|
-
return "<link rel='stylesheet' href='/stylesheets/#{url}#{Lib_version}' />"
|
41
|
+
return "<link rel='stylesheet' href='#{asset_host}/stylesheets/#{url}#{Lib_version}' />"
|
42
|
+
end
|
43
|
+
|
44
|
+
def asset_host
|
45
|
+
if defined? Rails
|
46
|
+
if Rails.configuration.action_controller.has_key? :asset_host
|
47
|
+
return Rails.configuration.action_controller[:asset_host] + (request.port == 80 ? '' : (':' << request.port.to_s))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
''
|
42
51
|
end
|
43
52
|
end
|
@@ -36,13 +36,14 @@ class Zfben_libjs::Css < Zfben_libjs::Source
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def change_images_url!
|
39
|
+
version = Time.now.strftime('?%s')
|
39
40
|
@source = @source.partition_all(REGEXP_REMOTE_IMAGE).map{ |line|
|
40
41
|
if REGEXP_REMOTE_IMAGE =~ line
|
41
42
|
path = line.match(REGEXP_REMOTE_IMAGE)[1]
|
42
43
|
filename = File.basename(path)
|
43
44
|
path = File.join(@options['src/images'], filename)
|
44
45
|
if File.exists?(path)
|
45
|
-
url = @options['url/images'] + '/' + filename
|
46
|
+
url = @options['url/images'] + '/' + filename + version
|
46
47
|
line = 'url("' << url << '")'
|
47
48
|
end
|
48
49
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>{{title}}</h1>
|
data/test/javascript/lib_test.js
CHANGED
@@ -55,7 +55,9 @@ test('lib.libs', 6, function(){
|
|
55
55
|
route_string: [ '/javascripts/route_string.js' ],
|
56
56
|
route_regexp: [ '/javascripts/route_regexp.js' ],
|
57
57
|
jquery: [ '/javascripts/jquery.js' ],
|
58
|
-
jqueryui: [ '/javascripts/jquery.js', '/stylesheets/jqueryui.css', '/javascripts/jqueryui.js' ]
|
58
|
+
jqueryui: [ '/javascripts/jquery.js', '/stylesheets/jqueryui.css', '/javascripts/jqueryui.js' ],
|
59
|
+
mustache: [ '/javascripts/mustache.js' ],
|
60
|
+
custom_filetype: [ '/javascripts/mustache.js', '/javascripts/custom_filetype.js' ]
|
59
61
|
}, 'lib.libs is ok');
|
60
62
|
|
61
63
|
equal(typeof lib.lazyload, 'function', 'lib.lazyload is a function');
|
@@ -72,6 +74,8 @@ test('lib.libs', 6, function(){
|
|
72
74
|
route_regexp: [ '/javascripts/route_regexp.js' ],
|
73
75
|
jquery: [ '/javascripts/jquery.js' ],
|
74
76
|
jqueryui: [ '/javascripts/jquery.js', '/stylesheets/jqueryui.css', '/javascripts/jqueryui.js' ],
|
77
|
+
mustache: [ '/javascripts/mustache.js' ],
|
78
|
+
custom_filetype: [ '/javascripts/mustache.js', '/javascripts/custom_filetype.js' ],
|
75
79
|
test: 'test'
|
76
80
|
}, "lib.libs({test: 'test'}) has been added");
|
77
81
|
|
@@ -88,7 +92,9 @@ test('lib.libs', 6, function(){
|
|
88
92
|
route_string: [ '/javascripts/route_string.js' ],
|
89
93
|
route_regexp: [ '/javascripts/route_regexp.js' ],
|
90
94
|
jquery: [ '/javascripts/jquery.js' ],
|
91
|
-
jqueryui: [ '/javascripts/jquery.js', '/stylesheets/jqueryui.css', '/javascripts/jqueryui.js' ]
|
95
|
+
jqueryui: [ '/javascripts/jquery.js', '/stylesheets/jqueryui.css', '/javascripts/jqueryui.js' ],
|
96
|
+
mustache: [ '/javascripts/mustache.js' ],
|
97
|
+
custom_filetype: [ '/javascripts/mustache.js', '/javascripts/custom_filetype.js' ]
|
92
98
|
}, "lib.libs({test: null}) has been deleted");
|
93
99
|
|
94
100
|
equal(typeof lib.test, 'undefined', 'lib.test is undefined');
|
@@ -157,3 +163,12 @@ asyncTest('RegExp route', 1, function(){
|
|
157
163
|
start();
|
158
164
|
}, 1000);
|
159
165
|
});
|
166
|
+
|
167
|
+
module('Custom Filetype');
|
168
|
+
|
169
|
+
asyncTest('mustache', 1, function(){
|
170
|
+
lib('custom_filetype', function(){
|
171
|
+
equal(custom_filetype({title: 'Hello'}), '<h1>Hello</h1>', 'Mustache is ok');
|
172
|
+
start();
|
173
|
+
});
|
174
|
+
});
|
data/test/mustache.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
class Zfben_libjs::Mustache < Zfben_libjs::Source
|
2
|
+
def after_initialize
|
3
|
+
@source = "this['#{File.basename(@filepath, '.mustache')}']=(data)->Mustache.to_html('''#{@source}''', data)"
|
4
|
+
end
|
5
|
+
|
6
|
+
def compile
|
7
|
+
Zfben_libjs::Coffee.new(:source => @source).compile
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_js
|
11
|
+
compile
|
12
|
+
end
|
13
|
+
|
14
|
+
def minify
|
15
|
+
@minified = Zfben_libjs::Js.new(:source => @source).minify
|
16
|
+
end
|
17
|
+
end
|
data/test.yml
CHANGED
@@ -4,6 +4,10 @@ config:
|
|
4
4
|
download: false # if file isn't exists, it will be downloaded always
|
5
5
|
changeImageUrl: true # change image urls in css
|
6
6
|
|
7
|
+
# Custom Filetypes
|
8
|
+
support_source:
|
9
|
+
- test/mustache.rb
|
10
|
+
|
7
11
|
# Files to be download and writen in lib.js
|
8
12
|
libs:
|
9
13
|
support_filetype: test/support_filetype/*
|
@@ -23,6 +27,11 @@ libs:
|
|
23
27
|
- https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js
|
24
28
|
- https://raw.github.com/jquery/jquery-ui/master/themes/base/jquery.ui.all.css
|
25
29
|
|
30
|
+
mustache: https://raw.github.com/janl/mustache.js/master/mustache.js
|
31
|
+
custom_filetype:
|
32
|
+
- mustache
|
33
|
+
- test/custom_filetype.mustache
|
34
|
+
|
26
35
|
routes:
|
27
36
|
"#Test_StringRoute": route_string
|
28
37
|
"/#Test_RegExpRoute/": route_regexp
|
data/zfben_libjs.gemspec
CHANGED
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.27
|
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-
|
12
|
+
date: 2011-10-27 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rainbow
|
16
|
-
requirement: &
|
16
|
+
requirement: &21486400 !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: *21486400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: json
|
27
|
-
requirement: &
|
27
|
+
requirement: &21485940 !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: *21485940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: compass
|
38
|
-
requirement: &
|
38
|
+
requirement: &21485520 !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: *21485520
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: coffee-script
|
49
|
-
requirement: &
|
49
|
+
requirement: &21485040 !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: *21485040
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: uglifier
|
60
|
-
requirement: &
|
60
|
+
requirement: &21484620 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *21484620
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
|
-
requirement: &
|
71
|
+
requirement: &21484020 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *21484020
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: zfben_hanoi
|
82
|
-
requirement: &
|
82
|
+
requirement: &21483480 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *21483480
|
91
91
|
description: ''
|
92
92
|
email:
|
93
93
|
- ben@zfben.com
|
@@ -97,7 +97,7 @@ extensions: []
|
|
97
97
|
extra_rdoc_files: []
|
98
98
|
files:
|
99
99
|
- .gitignore
|
100
|
-
- README.
|
100
|
+
- README.md
|
101
101
|
- Rakefile
|
102
102
|
- bin/libjs
|
103
103
|
- lib/zfben_libjs.rb
|
@@ -116,11 +116,13 @@ files:
|
|
116
116
|
- lib/zfben_libjs/support_source/sass.rb
|
117
117
|
- lib/zfben_libjs/support_source/scss.rb
|
118
118
|
- test.yml
|
119
|
+
- test/custom_filetype.mustache
|
119
120
|
- test/javascript/assets/callback.js
|
120
121
|
- test/javascript/fixtures/lib_fixtures.html
|
121
122
|
- test/javascript/lib_test.js
|
122
123
|
- test/javascript/templates/test_case.erb
|
123
124
|
- test/load_times.js
|
125
|
+
- test/mustache.rb
|
124
126
|
- test/route_regexp.js
|
125
127
|
- test/route_string.js
|
126
128
|
- test/ruby/build_test.rb
|
data/README.rdoc
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
= Lib.js
|
2
|
-
|
3
|
-
Lib.js = Frontend build tool + lazyload js tool
|
4
|
-
|
5
|
-
== Getting Started
|
6
|
-
|
7
|
-
1. Install zfben_libjs
|
8
|
-
|
9
|
-
gem install zfben_libjs
|
10
|
-
|
11
|
-
2. Create new libjs project
|
12
|
-
|
13
|
-
libjs new
|
14
|
-
|
15
|
-
== Feature:
|
16
|
-
|
17
|
-
lazyload css and js files (base on LazyLoad.js)
|
18
|
-
|
19
|
-
support css, js and images files
|
20
|
-
|
21
|
-
support sass, scss, compass and coffeescript files
|
22
|
-
|
23
|
-
support local files and remote files
|
24
|
-
|
25
|
-
support custom ruby script
|
26
|
-
|
27
|
-
support minify css and js files (base on sass and uglifier)
|
28
|
-
|
29
|
-
support before and after events
|
30
|
-
|
31
|
-
== Support Filetype:
|
32
|
-
|
33
|
-
.css - stylesheet
|
34
|
-
|
35
|
-
.js - javascript
|
36
|
-
|
37
|
-
.sass - sass
|
38
|
-
|
39
|
-
.scss - scss
|
40
|
-
|
41
|
-
.coffee - coffeescript
|
42
|
-
|
43
|
-
.rb - ruby
|
44
|
-
|
45
|
-
== Javascript Example
|
46
|
-
|
47
|
-
// load jquery
|
48
|
-
lib.jquery(function(){
|
49
|
-
// something use jquery to do
|
50
|
-
});
|
51
|
-
|
52
|
-
// load jqueryui and not duplicate load jquery
|
53
|
-
lib.jqueryui(function(){
|
54
|
-
// something use jqueryui to do
|
55
|
-
});
|
56
|
-
|
57
|
-
// and you can load like
|
58
|
-
lib('jquery', function(){
|
59
|
-
// use jquery to do sth.
|
60
|
-
});
|
61
|
-
|
62
|
-
lib('jquery underscore', function(){
|
63
|
-
// use jquery and underscore to do sth.
|
64
|
-
});
|
65
|
-
|
66
|
-
== Rails Example
|
67
|
-
|
68
|
-
# Gemfile
|
69
|
-
gem 'zfben_libjs'
|
70
|
-
|
71
|
-
# layout.html.erb
|
72
|
-
|
73
|
-
<%= lib %>
|
74
|
-
# => <script src="/javascripts/lib.js?12345678"></script>
|
75
|
-
|
76
|
-
<%= lib :home %>
|
77
|
-
# => <script src="/javascripts/lib.js?12345678"></script><script>lib('home')</script>
|
78
|
-
|
79
|
-
<%= lib 'home.css' %>
|
80
|
-
# => <link rel="stylesheet" href="/stylesheets/home.css?12345678" /><script src="/javascripts/lib.js?12345678"></script>
|
81
|
-
|
82
|
-
<%= lib 'home.js' %>
|
83
|
-
# => <script src="/javascripts/home.js?12345678"></script><script src="/javascripts/lib.js?12345678"></script>
|
84
|
-
|
85
|
-
== Sinatra
|
86
|
-
|
87
|
-
helpers Zfben_libjs::Helpers
|