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