jsdm 0.2.20 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/jsdm.rb +15 -4
- data/lib/jsdm/errors.rb +5 -2
- metadata +3 -3
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ spec = Gem::Specification.new do |s|
|
|
12
12
|
s.require_path = "lib"
|
13
13
|
s.has_rdoc = true
|
14
14
|
s.homepage = "http://www.borderstylo.com/#{s.name}"
|
15
|
-
s.version = "0.2
|
15
|
+
s.version = "0.3.2"
|
16
16
|
s.summary = "Javascript dependency manager"
|
17
17
|
s.description = "Use #require statements to declare dependencies"
|
18
18
|
end
|
data/lib/jsdm.rb
CHANGED
@@ -4,15 +4,21 @@ require 'jsdm/errors'
|
|
4
4
|
require 'jsdm/preprocessor'
|
5
5
|
|
6
6
|
class JSDM
|
7
|
-
attr_accessor :load_path,
|
7
|
+
attr_accessor :load_path,
|
8
|
+
:sources,
|
9
|
+
:requires,
|
10
|
+
:preprocessor,
|
11
|
+
:manager,
|
12
|
+
:resolver,
|
13
|
+
:ext
|
8
14
|
|
9
|
-
def initialize(load_path = [])
|
15
|
+
def initialize(load_path = [], options = {})
|
10
16
|
self.load_path = load_path
|
11
17
|
self.sources = []
|
12
18
|
self.preprocessor = nil
|
13
19
|
self.manager = nil
|
14
20
|
self.resolver = nil
|
15
|
-
self.ext = 'js'
|
21
|
+
self.ext = options[:ext].nil? ? 'js' : options[:ext]
|
16
22
|
process!
|
17
23
|
end
|
18
24
|
|
@@ -24,9 +30,10 @@ class JSDM
|
|
24
30
|
self.preprocessor = Preprocessor.new sources
|
25
31
|
self.manager = DependencyManager.new sources
|
26
32
|
self.resolver = DependencyResolver.new load_path
|
33
|
+
self.requires = preprocessor.process
|
27
34
|
begin
|
28
35
|
source = nil
|
29
|
-
|
36
|
+
requires.each do |element|
|
30
37
|
source = element.first
|
31
38
|
dependencies = resolver.process element.last
|
32
39
|
dependencies.each do |dependency|
|
@@ -46,6 +53,10 @@ class JSDM
|
|
46
53
|
ds
|
47
54
|
end
|
48
55
|
|
56
|
+
def requires_for(source)
|
57
|
+
requires.select { |r| r.first == source }.first.last
|
58
|
+
end
|
59
|
+
|
49
60
|
def dependencies
|
50
61
|
manager.dependencies
|
51
62
|
end
|
data/lib/jsdm/errors.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'pp'
|
2
|
+
|
1
3
|
class JSDM
|
2
4
|
class CircularDependencyError < StandardError
|
3
5
|
attr_accessor :deps
|
@@ -5,8 +7,9 @@ class JSDM
|
|
5
7
|
|
6
8
|
def initialize(deps)
|
7
9
|
msg = 'The following sets of files are involved in circular ' +
|
8
|
-
'dependencies: '
|
9
|
-
|
10
|
+
'dependencies: '
|
11
|
+
s = ''
|
12
|
+
deps.each { |d| msg += PP.pp(d, s) }
|
10
13
|
self.deps = deps
|
11
14
|
super(msg)
|
12
15
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
+
- 3
|
7
8
|
- 2
|
8
|
-
|
9
|
-
version: 0.2.20
|
9
|
+
version: 0.3.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Min Huang
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-30 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|