jsdm 0.2.20 → 0.3.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.
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