codependency 2.3.0 → 2.3.1

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/Rakefile CHANGED
@@ -4,3 +4,4 @@ require 'rspec/core/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new :spec
6
6
 
7
+ task :default => :spec
@@ -10,15 +10,29 @@ module Codependency
10
10
  # Any dependent files will also be recursively added to this
11
11
  # graph.
12
12
  def require( string )
13
- file = path_to( string ).to_path
13
+ file = path_to string
14
+
15
+ return if key?( file )
14
16
 
15
17
  self[ file ] ||= parser.parse( file ).map do |short|
16
- path_to( path[ short ] ).to_path
18
+ path_to path[ short ]
19
+ end
20
+ self[ file ].each do |dependency|
21
+ self.require dependency
17
22
  end
18
- self[ file ].each { |f| self.require( f ) unless key?( f ) }
19
23
  end
20
24
  alias :<< :require
21
25
 
26
+ ##
27
+ # Parses all of the files in the given glob and adds their
28
+ # dependencies to the graph. A file in this glob is not added
29
+ # to the graph unless another file in the glob depends on it.
30
+ def scan( glob )
31
+ Dir[ glob ].map { |file| parser.parse( file ) }.flatten.uniq.each do |short|
32
+ self.require path[ short ]
33
+ end
34
+ end
35
+
22
36
  ##
23
37
  # Returns the sorted list of files as determined by this graph,
24
38
  # relative to the calling file.
@@ -60,18 +74,14 @@ module Codependency
60
74
  end
61
75
 
62
76
  ##
63
- # Calculates the relative path from one path the `#root` path. Accepts
64
- # a string, returns a Pathname object populated with the relative path.
77
+ # Returns the given path, relative to the `#root` path.
65
78
  def path_to( string )
66
79
  path = Pathname( string )
67
- path = path.expand_path
68
- path = path.relative_path_from( root )
80
+ .expand_path
81
+ .relative_path_from( root )
82
+ .to_path
69
83
 
70
- if path.to_path.start_with?( '.' )
71
- path
72
- else
73
- Pathname( File.join( '.', path.to_path ) )
74
- end
84
+ path.start_with?( '.' ) ? path : File.join( '.', path )
75
85
  end
76
86
  end
77
87
  end
@@ -1,3 +1,3 @@
1
1
  module Codependency
2
- VERSION = '2.3.0'
2
+ VERSION = '2.3.1'
3
3
  end
@@ -9,6 +9,8 @@ describe Codependency::Graph do
9
9
  end
10
10
 
11
11
  describe '#require', :fixtures => true do
12
+ before { subject.require file }
13
+
12
14
  describe 'solar_system' do
13
15
  example( 'body.rb' ){ verify { subject } }
14
16
  example( 'earth.rb' ){ verify { subject } }
@@ -36,6 +38,8 @@ describe Codependency::Graph do
36
38
  end
37
39
 
38
40
  describe '#tsort', :fixtures => true do
41
+ before { subject.require file }
42
+
39
43
  describe 'solar_system' do
40
44
  example( 'body.rb' ){ verify { subject.tsort } }
41
45
  example( 'earth.rb' ){ verify { subject.tsort } }
@@ -63,6 +67,8 @@ describe Codependency::Graph do
63
67
  end
64
68
 
65
69
  describe '#files', :fixtures => true do
70
+ before { subject.require file }
71
+
66
72
  describe 'solar_system' do
67
73
  example( 'body.rb' ){ verify { subject.files } }
68
74
  example( 'earth.rb' ){ verify { subject.files } }
@@ -77,9 +83,9 @@ describe Codependency::Graph do
77
83
  example( 'toast.js' ){ verify { subject.files } }
78
84
  end
79
85
  describe 'lox' do
80
- example( 'money.rb' ){ expect { subject.tsort }.to raise_error( TSort::Cyclic ) }
81
- example( 'power.rb' ){ expect { subject.tsort }.to raise_error( TSort::Cyclic ) }
82
- example( 'respect.rb' ){ expect { subject.tsort }.to raise_error( TSort::Cyclic ) }
86
+ example( 'money.rb' ){ expect { subject.files }.to raise_error( TSort::Cyclic ) }
87
+ example( 'power.rb' ){ expect { subject.files }.to raise_error( TSort::Cyclic ) }
88
+ example( 'respect.rb' ){ expect { subject.files }.to raise_error( TSort::Cyclic ) }
83
89
  end
84
90
  describe 'assets' do
85
91
  example( 'templates/account.js' ){ verify { subject.files } }
@@ -88,4 +94,19 @@ describe Codependency::Graph do
88
94
  example( 'application.js' ){ verify { subject.files } }
89
95
  end
90
96
  end
97
+
98
+ describe '#scan', :fixtures => true do
99
+ before { subject.scan file }
100
+
101
+ describe 'solar_system' do
102
+ example( '*.rb' ){ verify { subject.files } }
103
+ end
104
+ describe 'breakfast' do
105
+ example( '*.js' ){ verify { subject.files } }
106
+ end
107
+ describe 'assets' do
108
+ example( '*.js' ){ verify { subject.files } }
109
+ example( 'templates/*.js' ){ verify { subject.files } }
110
+ end
111
+ end
91
112
  end
@@ -0,0 +1,5 @@
1
+ [
2
+ [0] "./spec/fixtures/assets/templates/history.js",
3
+ [1] "./spec/fixtures/assets/templates/account.js",
4
+ [2] "./spec/fixtures/assets/templates/user.js"
5
+ ]
@@ -0,0 +1,4 @@
1
+ [
2
+ [0] "./spec/fixtures/assets/templates/history.js",
3
+ [1] "./spec/fixtures/assets/templates/account.js"
4
+ ]
@@ -0,0 +1,5 @@
1
+ [
2
+ [0] "./spec/fixtures/breakfast/butter.js",
3
+ [1] "./spec/fixtures/breakfast/egg.js",
4
+ [2] "./spec/fixtures/breakfast/toast.js"
5
+ ]
@@ -0,0 +1,5 @@
1
+ [
2
+ [0] "./spec/fixtures/solar_system/body.rb",
3
+ [1] "./spec/fixtures/solar_system/planet.rb",
4
+ [2] "./spec/fixtures/solar_system/mars.rb"
5
+ ]
@@ -1,5 +1,9 @@
1
1
  require 'rspec/approvals'
2
2
 
3
+ module Approvals
4
+
5
+ end
6
+
3
7
  ##
4
8
  # Simple shared context for allowing fixture-based examples to be
5
9
  # declared by using the example and example group names.
@@ -10,5 +14,4 @@ shared_context 'fixtures', :fixtures => true do
10
14
  let( :file ){ File.join './spec/fixtures', dirname, basename }
11
15
 
12
16
  before { subject.path << './spec/fixtures' }
13
- before { subject.require file }
14
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codependency
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-24 00:00:00.000000000 Z
12
+ date: 2013-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -125,6 +125,10 @@ files:
125
125
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/mars_rb.txt
126
126
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/phobos_rb.txt
127
127
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/planet_rb.txt
128
+ - spec/codependency/graph_spec/codependency_graph/scan/assets/js.txt
129
+ - spec/codependency/graph_spec/codependency_graph/scan/assets/templates_js.txt
130
+ - spec/codependency/graph_spec/codependency_graph/scan/breakfast/js.txt
131
+ - spec/codependency/graph_spec/codependency_graph/scan/solar_system/rb.txt
128
132
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/application_js.txt
129
133
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/templates_account_js.txt
130
134
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/templates_history_js.txt
@@ -214,6 +218,10 @@ test_files:
214
218
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/mars_rb.txt
215
219
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/phobos_rb.txt
216
220
  - spec/codependency/graph_spec/codependency_graph/require/solar_system/planet_rb.txt
221
+ - spec/codependency/graph_spec/codependency_graph/scan/assets/js.txt
222
+ - spec/codependency/graph_spec/codependency_graph/scan/assets/templates_js.txt
223
+ - spec/codependency/graph_spec/codependency_graph/scan/breakfast/js.txt
224
+ - spec/codependency/graph_spec/codependency_graph/scan/solar_system/rb.txt
217
225
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/application_js.txt
218
226
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/templates_account_js.txt
219
227
  - spec/codependency/graph_spec/codependency_graph/tsort/assets/templates_history_js.txt