jsdm 0.2.20 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/Rakefile +1 -1
  2. data/lib/jsdm.rb +15 -4
  3. data/lib/jsdm/errors.rb +5 -2
  4. 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.20"
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
@@ -4,15 +4,21 @@ require 'jsdm/errors'
4
4
  require 'jsdm/preprocessor'
5
5
 
6
6
  class JSDM
7
- attr_accessor :load_path, :sources, :preprocessor, :manager, :resolver, :ext
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
- preprocessor.process.each do |element|
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
@@ -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
- deps.inspect
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
- - 20
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-31 00:00:00 -07:00
17
+ date: 2010-05-30 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies: []
20
20