jsrequire 0.1.1 → 0.1.2
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/VERSION +1 -1
- data/jsrequire.gemspec +8 -4
- data/lib/jsrequire.rb +25 -24
- data/test/fixtures/javascripts/c.js +1 -0
- data/test/fixtures/javascripts/relative_namespace/a.js +2 -0
- data/test/fixtures/javascripts/relative_namespace/b.js +0 -0
- data/test/fixtures/javascripts/relative_namespace/sub/a.js +0 -0
- data/test/fixtures/javascripts/require_relative_namespaced_file.js +2 -0
- data/test/test_hooks.rb +1 -1
- data/test/test_jsrequire.rb +5 -1
- metadata +13 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/jsrequire.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{jsrequire}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["aekym"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-07-28}
|
13
13
|
s.description = %q{Organizes requirements of assets in JavaScript files, resolved dependencies of js files and helps include depending css files.}
|
14
14
|
s.email = %q{me@aekym.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,10 +35,14 @@ Gem::Specification.new do |s|
|
|
35
35
|
"test/fixtures/javascripts/namespace/norequire.js",
|
36
36
|
"test/fixtures/javascripts/norequire.js",
|
37
37
|
"test/fixtures/javascripts/norequire.with.dot.in.name.js",
|
38
|
+
"test/fixtures/javascripts/relative_namespace/a.js",
|
39
|
+
"test/fixtures/javascripts/relative_namespace/b.js",
|
40
|
+
"test/fixtures/javascripts/relative_namespace/sub/a.js",
|
38
41
|
"test/fixtures/javascripts/require_filename_with_dot.js",
|
39
42
|
"test/fixtures/javascripts/require_filename_with_js.js",
|
40
43
|
"test/fixtures/javascripts/require_namespaced_file.js",
|
41
44
|
"test/fixtures/javascripts/require_non_existing_file.js",
|
45
|
+
"test/fixtures/javascripts/require_relative_namespaced_file.js",
|
42
46
|
"test/fixtures/javascripts/requirecss.js",
|
43
47
|
"test/fixtures/stylesheets/style.css",
|
44
48
|
"test/helper.rb",
|
@@ -48,7 +52,7 @@ Gem::Specification.new do |s|
|
|
48
52
|
s.homepage = %q{http://github.com/aekym/jsrequire}
|
49
53
|
s.rdoc_options = ["--charset=UTF-8"]
|
50
54
|
s.require_paths = ["lib"]
|
51
|
-
s.rubygems_version = %q{1.3.
|
55
|
+
s.rubygems_version = %q{1.3.7}
|
52
56
|
s.summary = %q{Organizes requirements of assets in JavaScript files}
|
53
57
|
s.test_files = [
|
54
58
|
"test/helper.rb",
|
@@ -60,7 +64,7 @@ Gem::Specification.new do |s|
|
|
60
64
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
61
65
|
s.specification_version = 3
|
62
66
|
|
63
|
-
if Gem::Version.new(Gem::
|
67
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
64
68
|
else
|
65
69
|
end
|
66
70
|
else
|
data/lib/jsrequire.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
-
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
-
|
4
1
|
class JsRequire
|
5
2
|
|
6
3
|
class FileNotFoundInLoadpath < ArgumentError; end
|
@@ -45,6 +42,8 @@ class JsRequire
|
|
45
42
|
# }
|
46
43
|
#
|
47
44
|
def resolve_dependencies(files)
|
45
|
+
files = [files] unless files.is_a?(Enumerable)
|
46
|
+
|
48
47
|
@css = []
|
49
48
|
@extract_loadpaths = extract_loadpaths(files)
|
50
49
|
|
@@ -129,10 +128,11 @@ class JsRequire
|
|
129
128
|
end
|
130
129
|
|
131
130
|
|
132
|
-
def find_file(filename)
|
131
|
+
def find_file(filename, current_dir = nil)
|
133
132
|
return filename if is_file?(filename)
|
134
133
|
|
135
134
|
loadpaths = @extract_loadpaths + @additional_loadpaths
|
135
|
+
loadpaths.unshift(current_dir) if current_dir && filename =~ /^\./
|
136
136
|
loadpaths.each do |path|
|
137
137
|
file = File.expand_path(filename, path)
|
138
138
|
return file if is_file?(file)
|
@@ -142,7 +142,7 @@ class JsRequire
|
|
142
142
|
if filename =~ /\./
|
143
143
|
loadpaths.each do |path|
|
144
144
|
ext = File.extname(filename)
|
145
|
-
file = File.expand_path(filename.gsub(/#{ext}$/, '').gsub('.', '/') + ext, path)
|
145
|
+
file = File.expand_path(filename.gsub(/#{ext}$/, '').gsub(/^\./, '').gsub('.', '/') + ext, path)
|
146
146
|
return file if is_file?(file)
|
147
147
|
end
|
148
148
|
end
|
@@ -166,28 +166,29 @@ class JsRequire
|
|
166
166
|
is_require = true
|
167
167
|
js = []
|
168
168
|
|
169
|
-
File.open(filename, "r") do |
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
action
|
174
|
-
parameter
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
case action
|
181
|
-
when "js" then js << "#{parameter}.js"
|
182
|
-
end
|
183
|
-
else
|
184
|
-
is_require = false
|
185
|
-
end
|
169
|
+
File.open(filename, "r").each_line do |line|
|
170
|
+
if line =~ /^
|
171
|
+
\s* # optional leading whitespace
|
172
|
+
\/\*\s* # opening comment
|
173
|
+
(\w+)\s+ # action
|
174
|
+
(.*) # parameter
|
175
|
+
\*\/\s*$/x # closing comment
|
176
|
+
|
177
|
+
action = $1
|
178
|
+
parameter = $2.strip
|
186
179
|
|
187
|
-
|
180
|
+
# fire callbacks
|
181
|
+
action, parameter = exec_preprocessor(action, parameter)
|
182
|
+
|
183
|
+
case action
|
184
|
+
when "js" then js << "#{parameter}.js"
|
185
|
+
end
|
186
|
+
else
|
187
|
+
break
|
188
|
+
end
|
188
189
|
end
|
189
190
|
|
190
|
-
js.uniq.map { |f| find_file(f) }
|
191
|
+
js.uniq.map { |f| find_file(f, File.dirname(filename)) }
|
191
192
|
end
|
192
193
|
|
193
194
|
|
File without changes
|
File without changes
|
data/test/test_hooks.rb
CHANGED
data/test/test_jsrequire.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'helper.rb'
|
2
2
|
|
3
3
|
class TestJsRequire < Test::Unit::TestCase
|
4
4
|
|
@@ -91,6 +91,10 @@ class TestJsRequire < Test::Unit::TestCase
|
|
91
91
|
assert_requires("require_namespaced_file.js", "namespace/a.js")
|
92
92
|
end
|
93
93
|
|
94
|
+
should "be able to require a file via relative namespaces" do
|
95
|
+
assert_requires("require_relative_namespaced_file.js", ["relative_namespace/a.js", "relative_namespace/b.js", "relative_namespace/sub/a.js"])
|
96
|
+
end
|
97
|
+
|
94
98
|
should "be able to require a file with dots in filename" do
|
95
99
|
assert_requires("require_filename_with_dot.js", "file.with.dot.js")
|
96
100
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsrequire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- aekym
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-07-28 00:00:00 +02:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
@@ -46,10 +47,14 @@ files:
|
|
46
47
|
- test/fixtures/javascripts/namespace/norequire.js
|
47
48
|
- test/fixtures/javascripts/norequire.js
|
48
49
|
- test/fixtures/javascripts/norequire.with.dot.in.name.js
|
50
|
+
- test/fixtures/javascripts/relative_namespace/a.js
|
51
|
+
- test/fixtures/javascripts/relative_namespace/b.js
|
52
|
+
- test/fixtures/javascripts/relative_namespace/sub/a.js
|
49
53
|
- test/fixtures/javascripts/require_filename_with_dot.js
|
50
54
|
- test/fixtures/javascripts/require_filename_with_js.js
|
51
55
|
- test/fixtures/javascripts/require_namespaced_file.js
|
52
56
|
- test/fixtures/javascripts/require_non_existing_file.js
|
57
|
+
- test/fixtures/javascripts/require_relative_namespaced_file.js
|
53
58
|
- test/fixtures/javascripts/requirecss.js
|
54
59
|
- test/fixtures/stylesheets/style.css
|
55
60
|
- test/helper.rb
|
@@ -65,23 +70,27 @@ rdoc_options:
|
|
65
70
|
require_paths:
|
66
71
|
- lib
|
67
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
68
74
|
requirements:
|
69
75
|
- - ">="
|
70
76
|
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
71
78
|
segments:
|
72
79
|
- 0
|
73
80
|
version: "0"
|
74
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
75
83
|
requirements:
|
76
84
|
- - ">="
|
77
85
|
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
78
87
|
segments:
|
79
88
|
- 0
|
80
89
|
version: "0"
|
81
90
|
requirements: []
|
82
91
|
|
83
92
|
rubyforge_project:
|
84
|
-
rubygems_version: 1.3.
|
93
|
+
rubygems_version: 1.3.7
|
85
94
|
signing_key:
|
86
95
|
specification_version: 3
|
87
96
|
summary: Organizes requirements of assets in JavaScript files
|