jsrequire 0.1.2 → 0.1.3

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 CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.3
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jsrequire}
8
- s.version = "0.1.2"
8
+ s.version = "0.1.3"
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-07-28}
12
+ s.date = %q{2010-08-10}
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 = [
@@ -28,8 +28,12 @@ Gem::Specification.new do |s|
28
28
  "test/fixtures/different-place/b.js",
29
29
  "test/fixtures/javascripts/a.js",
30
30
  "test/fixtures/javascripts/c.js",
31
+ "test/fixtures/javascripts/coffee/coke.coffee",
32
+ "test/fixtures/javascripts/coffee/other.coffee",
33
+ "test/fixtures/javascripts/coffee/tea.js",
31
34
  "test/fixtures/javascripts/file.with.dot.js",
32
35
  "test/fixtures/javascripts/hook.js",
36
+ "test/fixtures/javascripts/i_can_cook.coffee",
33
37
  "test/fixtures/javascripts/namespace/a.js",
34
38
  "test/fixtures/javascripts/namespace/json_reader.js",
35
39
  "test/fixtures/javascripts/namespace/norequire.js",
@@ -1,4 +1,5 @@
1
1
  class JsRequire
2
+ ALLOWED_EXTENSIONS = %w(coffee js)
2
3
 
3
4
  class FileNotFoundInLoadpath < ArgumentError; end
4
5
 
@@ -128,7 +129,7 @@ class JsRequire
128
129
  end
129
130
 
130
131
 
131
- def find_file(filename, current_dir = nil)
132
+ def find_file_with_extension(filename, current_dir = nil)
132
133
  return filename if is_file?(filename)
133
134
 
134
135
  loadpaths = @extract_loadpaths + @additional_loadpaths
@@ -147,7 +148,21 @@ class JsRequire
147
148
  end
148
149
  end
149
150
 
150
- raise FileNotFoundInLoadpath, "File '#{filename}' not found in loadpaths '#{loadpaths.join("', '")}'."
151
+ false
152
+ end
153
+
154
+ def find_file(filename, current_dir = nil)
155
+ file = false
156
+
157
+ file = find_file_with_extension(filename, current_dir)
158
+ return file unless file == false
159
+
160
+ ALLOWED_EXTENSIONS.each do |extension|
161
+ file = find_file_with_extension("#{filename}.#{extension}", current_dir)
162
+ return file unless file == false
163
+ end
164
+
165
+ raise FileNotFoundInLoadpath, "File '#{filename}' not found in loadpaths '#{(@extract_loadpaths + @additional_loadpaths).join("', '")}'."
151
166
  end
152
167
 
153
168
  def exec_preprocessor(action, parameter)
@@ -167,21 +182,12 @@ class JsRequire
167
182
  js = []
168
183
 
169
184
  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
179
-
185
+ if val = parse_line(line)
180
186
  # fire callbacks
181
- action, parameter = exec_preprocessor(action, parameter)
187
+ action, parameter = exec_preprocessor(val[0], val[1])
182
188
 
183
189
  case action
184
- when "js" then js << "#{parameter}.js"
190
+ when "js" then js << parameter
185
191
  end
186
192
  else
187
193
  break
@@ -191,6 +197,28 @@ class JsRequire
191
197
  js.uniq.map { |f| find_file(f, File.dirname(filename)) }
192
198
  end
193
199
 
200
+ def parse_line(line)
201
+ case line
202
+ when /^
203
+ \s* # optional leading whitespace
204
+ \/\*\s* # opening comment
205
+ (\w+)\s+ # action
206
+ (.*) # parameter
207
+ \*\/\s*$ # closing comment
208
+ /x then
209
+ [$1, $2.strip]
210
+ when /^
211
+ \s* # optional leading whitespace
212
+ \#\s* # opening comment
213
+ (\w+)\s+ # action
214
+ (.*)$ # parameter
215
+ /x then
216
+ [$1, $2.strip]
217
+ else
218
+ nil
219
+ end
220
+ end
221
+
194
222
 
195
223
  def extract_dependencies_recursive(files, included_files = [])
196
224
  js = []
@@ -0,0 +1,3 @@
1
+ # js coffee/tea
2
+
3
+
@@ -0,0 +1 @@
1
+ /* js .coke */
@@ -0,0 +1,2 @@
1
+ # js coffee.other
2
+
@@ -117,6 +117,10 @@ class TestJsRequire < Test::Unit::TestCase
117
117
  assert_equal additional_loadpaths, @jsrequire.instance_eval("@additional_loadpaths")
118
118
  end
119
119
 
120
+ should "work with CoffeeScript files, too" do
121
+ assert_requires("i_can_cook.coffee", ["coffee/other.coffee", "coffee/tea.js", "coffee/coke.coffee"])
122
+ end
123
+
120
124
  end
121
125
 
122
126
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsrequire
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - aekym
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-28 00:00:00 +02:00
18
+ date: 2010-08-10 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -40,8 +40,12 @@ files:
40
40
  - test/fixtures/different-place/b.js
41
41
  - test/fixtures/javascripts/a.js
42
42
  - test/fixtures/javascripts/c.js
43
+ - test/fixtures/javascripts/coffee/coke.coffee
44
+ - test/fixtures/javascripts/coffee/other.coffee
45
+ - test/fixtures/javascripts/coffee/tea.js
43
46
  - test/fixtures/javascripts/file.with.dot.js
44
47
  - test/fixtures/javascripts/hook.js
48
+ - test/fixtures/javascripts/i_can_cook.coffee
45
49
  - test/fixtures/javascripts/namespace/a.js
46
50
  - test/fixtures/javascripts/namespace/json_reader.js
47
51
  - test/fixtures/javascripts/namespace/norequire.js