jsrequire 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.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.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-05-26}
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.6}
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::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
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 |f|
170
- begin
171
- line = f.gets
172
- if line =~ /^\s*\/\*\s*(\w+)(.+)\*\/\s*$/
173
- action = $1.strip
174
- parameter = $2.strip
175
-
176
- # fire callbacks
177
- #
178
- action, parameter = exec_preprocessor(action, parameter)
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
- end while is_require
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
 
@@ -1,3 +1,4 @@
1
+ /* routes */
1
2
  /* js a */
2
3
  /* js b */
3
4
 
@@ -0,0 +1,2 @@
1
+ /* js .b */
2
+ /* js .sub.a */
File without changes
@@ -0,0 +1,2 @@
1
+ /* js .relative_namespace.a */
2
+
data/test/test_hooks.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper.rb'
1
+ require 'helper.rb'
2
2
 
3
3
  class TestHooks < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/helper.rb'
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
- - 1
9
- version: 0.1.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-05-26 00:00:00 +02:00
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.6
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