confluence 0.2.0 → 1.0.0

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 (56) hide show
  1. data/Gemfile +6 -0
  2. data/Gemfile.lock +86 -0
  3. data/VERSION +1 -1
  4. data/confluence.gemspec +64 -6
  5. data/lib/confluence.rb +6 -3
  6. data/lib/confluence/railtie.rb +14 -0
  7. data/lib/confluence/railties/resolver.rb +78 -0
  8. data/lib/confluence/templates/%project_name%.cabal.tt +4 -4
  9. data/lib/confluence/templates/Rakefile.tt +4 -4
  10. data/spec/confluence/railtie_spec.rb +7 -0
  11. data/spec/confluence/railties/resolver_spec.rb +160 -0
  12. data/spec/confluence/welcome_controller_spec.rb +37 -0
  13. data/spec/confluence_spec.rb +15 -2
  14. data/spec/fixture/.gitignore +15 -0
  15. data/spec/fixture/README.rdoc +261 -0
  16. data/spec/fixture/Rakefile +7 -0
  17. data/spec/fixture/app/assets/images/rails.png +0 -0
  18. data/spec/fixture/app/assets/javascripts/application.js +13 -0
  19. data/spec/fixture/app/assets/stylesheets/application.css +13 -0
  20. data/spec/fixture/app/controllers/application_controller.rb +3 -0
  21. data/spec/fixture/app/controllers/welcome_controller.rb +3 -0
  22. data/spec/fixture/app/views/layouts/application.html.erb +14 -0
  23. data/spec/fixture/app/views/welcome/index.html.haml +1 -0
  24. data/spec/fixture/config.ru +4 -0
  25. data/spec/fixture/config/application.rb +66 -0
  26. data/spec/fixture/config/boot.rb +6 -0
  27. data/spec/fixture/config/environment.rb +5 -0
  28. data/spec/fixture/config/environments/development.rb +26 -0
  29. data/spec/fixture/config/environments/production.rb +51 -0
  30. data/spec/fixture/config/environments/test.rb +35 -0
  31. data/spec/fixture/config/initializers/backtrace_silencers.rb +7 -0
  32. data/spec/fixture/config/initializers/inflections.rb +15 -0
  33. data/spec/fixture/config/initializers/mime_types.rb +5 -0
  34. data/spec/fixture/config/initializers/secret_token.rb +7 -0
  35. data/spec/fixture/config/initializers/session_store.rb +8 -0
  36. data/spec/fixture/config/initializers/wrap_parameters.rb +10 -0
  37. data/spec/fixture/config/locales/en.yml +5 -0
  38. data/spec/fixture/config/routes.rb +58 -0
  39. data/spec/fixture/lib/assets/.gitkeep +0 -0
  40. data/spec/fixture/lib/tasks/.gitkeep +0 -0
  41. data/spec/fixture/log/.gitkeep +0 -0
  42. data/spec/fixture/public/404.html +26 -0
  43. data/spec/fixture/public/422.html +26 -0
  44. data/spec/fixture/public/500.html +25 -0
  45. data/spec/fixture/public/favicon.ico +0 -0
  46. data/spec/fixture/public/index.html +241 -0
  47. data/spec/fixture/public/robots.txt +5 -0
  48. data/spec/fixture/script/rails +6 -0
  49. data/spec/fixture/vendor/assets/javascripts/.gitkeep +0 -0
  50. data/spec/fixture/vendor/assets/stylesheets/.gitkeep +0 -0
  51. data/spec/fixture/vendor/plugins/.gitkeep +0 -0
  52. data/spec/spec_helper.rb +7 -0
  53. metadata +142 -6
  54. data/lib/confluence/navigator.rb +0 -67
  55. data/spec/confluence/navigator_spec.rb +0 -68
  56. data/spec/support/file_sytem/navigator.rb +0 -9
@@ -1,67 +0,0 @@
1
- module Confluence
2
- class Navigator
3
- class Node
4
- def self.from_filepath(filepath)
5
- new filepath
6
- end
7
- attr_accessor :filepath
8
-
9
- def initialize(filepath)
10
- @filepath = filepath
11
- end
12
-
13
- def directory?
14
- File.directory?(filepath)
15
- end
16
-
17
- def expand_path
18
- entries = Dir.entries(filepath).select { |s| !(s == ".." || s == ".") }
19
- nodes = entries.map { |entry| Node.from_filepath File.join(filepath, entry ) }
20
- end
21
- end
22
-
23
- attr_accessor :start_path
24
- attr_reader :callbacks
25
-
26
- def initialize(start_path)
27
- @start_path = start_path
28
- @callbacks ||= {}
29
- end
30
-
31
- def on_encounter(type=:file, &block)
32
- throw :NoBlockGivenError unless block_given?
33
- throw :BadTypeError unless type == :directory || type == :file
34
- (@callbacks[type] ||= []) << lambda(&block)
35
- self
36
- end
37
-
38
- def run
39
- _bfs_start(start_path)
40
- end
41
-
42
- private
43
-
44
- # lol this is actually dfs. sorry
45
- def _bfs_start(start_path)
46
- # step 0: get a context
47
- node_context = Node.from_filepath start_path
48
-
49
- # step 1: expand node
50
- nodes = node_context.expand_path
51
-
52
- # step 2: filter nodes
53
- node_hash = {}
54
- node_hash[:directory] = nodes.select { |node| node.directory? } || []
55
- node_hash[:file] = nodes.select { |node| !node.directory? } || []
56
-
57
- # step 3: use the callback on all file nodes
58
- callbacks.each do |key, cbs|
59
- node_hash[key].each { |node| cbs.each {|cb| cb.call node.filepath } }
60
- end
61
-
62
- # step 4: recurse with the rest of the d_nodes
63
- node_hash[:directory].each { |node| _bfs_start node.filepath }
64
- end
65
-
66
- end
67
- end
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Confluence::Navigator do
4
-
5
- describe Confluence::Navigator::Node do
6
-
7
- context "class method" do
8
-
9
- describe "#from_filepath" do
10
- let(:node) { Confluence::Navigator::Node.from_filepath RSpec.root }
11
-
12
- it "should give me a node" do
13
- node.should be_a Confluence::Navigator::Node
14
- end
15
-
16
- describe "#directory?" do
17
- specify { node.should be_directory }
18
- end
19
-
20
- describe "#expand_path" do
21
- it "should contain all the junk in the spec file path" do
22
- node.expand_path.map(&:filepath).sort.should eq ["confluence", "confluence_spec.rb", "spec_helper.rb", "support"].map { |entry| File.join(RSpec.root, entry)}
23
- end
24
-
25
- end
26
-
27
- end
28
- end
29
- end
30
-
31
- describe "api" do
32
- let(:nav) { Confluence::Navigator.new RSpec.root }
33
-
34
- describe "#on_encounter" do
35
- it "should complain if no block is give" do
36
- expect { nav.on_encounter }.to throw_symbol :NoBlockGivenError
37
- end
38
-
39
- it "should complain if a bad type is given" do
40
- expect { nav.on_encounter(:dog) { } }.to throw_symbol :BadTypeError
41
- end
42
-
43
- end
44
- end
45
-
46
- describe "usage" do
47
- let(:nav) { Confluence::Navigator.new RSpec.root }
48
- before :each do
49
- push_bfs = lambda { |a| (@bfs_results ||= []) << a }
50
- nav.on_encounter do |filepath|
51
- push_bfs.call filepath
52
- end
53
- nav.run
54
- end
55
-
56
- describe "#run" do
57
- it "a successful should spit out all the files in this very spec folder" do
58
- @bfs_results.should_not be_empty
59
- end
60
- ["spec_helper.rb", "confluence_spec.rb"].each do |file|
61
- it "should at least contain the basic #{file} file" do
62
- @bfs_results.should include File.join(RSpec.root, file)
63
- end
64
- end
65
- end
66
- end
67
-
68
- end
@@ -1,9 +0,0 @@
1
- module Navigator
2
- def self.setup( path )
3
-
4
- end
5
-
6
- def self.cleanup( path )
7
- Dir.unlink File.join(RSpec.root, path)
8
- end
9
- end