nanoc 3.5.0 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. data/Gemfile +1 -0
  2. data/Gemfile.lock +20 -12
  3. data/NEWS.md +23 -0
  4. data/README.md +6 -3
  5. data/doc/yardoc_templates/default/layout/html/footer.erb +16 -7
  6. data/lib/nanoc.rb +1 -1
  7. data/lib/nanoc/base.rb +1 -0
  8. data/lib/nanoc/base/compilation/compiler_dsl.rb +31 -0
  9. data/lib/nanoc/base/compilation/filter.rb +34 -0
  10. data/lib/nanoc/base/result_data/item_rep.rb +3 -3
  11. data/lib/nanoc/base/source_data/code_snippet.rb +1 -1
  12. data/lib/nanoc/base/source_data/data_source.rb +12 -0
  13. data/lib/nanoc/base/source_data/item.rb +1 -1
  14. data/lib/nanoc/base/source_data/item_array.rb +62 -0
  15. data/lib/nanoc/base/source_data/layout.rb +1 -1
  16. data/lib/nanoc/base/source_data/site.rb +24 -3
  17. data/lib/nanoc/cli/cleaning_stream.rb +10 -0
  18. data/lib/nanoc/cli/command_runner.rb +25 -12
  19. data/lib/nanoc/cli/commands/autocompile.rb +5 -3
  20. data/lib/nanoc/cli/commands/check.rb +9 -1
  21. data/lib/nanoc/cli/commands/compile.rb +1 -1
  22. data/lib/nanoc/cli/commands/create-site.rb +5 -5
  23. data/lib/nanoc/cli/commands/prune.rb +1 -1
  24. data/lib/nanoc/cli/commands/shell.rb +37 -0
  25. data/lib/nanoc/cli/commands/show-data.rb +1 -1
  26. data/lib/nanoc/cli/commands/sync.rb +34 -0
  27. data/lib/nanoc/cli/error_handler.rb +11 -2
  28. data/lib/nanoc/extra/checking/checks/stale.rb +10 -2
  29. data/lib/nanoc/extra/pruner.rb +14 -11
  30. data/lib/nanoc/filters/asciidoc.rb +2 -2
  31. data/lib/nanoc/filters/bluecloth.rb +2 -2
  32. data/lib/nanoc/filters/coderay.rb +2 -2
  33. data/lib/nanoc/filters/coffeescript.rb +2 -2
  34. data/lib/nanoc/filters/colorize_syntax.rb +2 -4
  35. data/lib/nanoc/filters/erb.rb +2 -2
  36. data/lib/nanoc/filters/erubis.rb +2 -2
  37. data/lib/nanoc/filters/haml.rb +2 -2
  38. data/lib/nanoc/filters/handlebars.rb +2 -2
  39. data/lib/nanoc/filters/kramdown.rb +2 -2
  40. data/lib/nanoc/filters/less.rb +2 -2
  41. data/lib/nanoc/filters/markaby.rb +2 -2
  42. data/lib/nanoc/filters/maruku.rb +2 -2
  43. data/lib/nanoc/filters/mustache.rb +2 -2
  44. data/lib/nanoc/filters/pandoc.rb +2 -2
  45. data/lib/nanoc/filters/rainpress.rb +2 -2
  46. data/lib/nanoc/filters/rdiscount.rb +2 -2
  47. data/lib/nanoc/filters/rdoc.rb +3 -17
  48. data/lib/nanoc/filters/redcarpet.rb +7 -3
  49. data/lib/nanoc/filters/redcloth.rb +2 -2
  50. data/lib/nanoc/filters/rubypants.rb +2 -2
  51. data/lib/nanoc/filters/sass.rb +2 -3
  52. data/lib/nanoc/filters/slim.rb +2 -2
  53. data/lib/nanoc/filters/typogruby.rb +2 -2
  54. data/lib/nanoc/filters/uglify_js.rb +2 -2
  55. data/lib/nanoc/filters/xsl.rb +2 -1
  56. data/lib/nanoc/filters/yui_compressor.rb +2 -2
  57. data/lib/nanoc/helpers/blogging.rb +1 -1
  58. data/lib/nanoc/helpers/filtering.rb +1 -1
  59. data/lib/nanoc/helpers/rendering.rb +1 -1
  60. data/nanoc.gemspec +2 -2
  61. data/test/base/core_ext/array_spec.rb +4 -12
  62. data/test/base/core_ext/hash_spec.rb +4 -12
  63. data/test/base/test_compiler_dsl.rb +63 -0
  64. data/test/base/test_item.rb +3 -18
  65. data/test/base/test_item_array.rb +336 -0
  66. data/test/base/test_item_rep.rb +2 -12
  67. data/test/base/test_layout.rb +1 -6
  68. data/test/base/test_outdatedness_checker.rb +1 -1
  69. data/test/base/test_site.rb +9 -3
  70. data/test/cli/commands/test_check.rb +22 -0
  71. data/test/cli/commands/test_compile.rb +2 -2
  72. data/test/cli/commands/test_deploy.rb +6 -6
  73. data/test/cli/commands/test_prune.rb +23 -4
  74. data/test/cli/commands/test_sync.rb +31 -0
  75. data/test/cli/test_error_handler.rb +16 -11
  76. data/test/extra/checking/checks/test_stale.rb +24 -1
  77. data/test/extra/test_auto_compiler.rb +4 -4
  78. data/test/filters/test_asciidoc.rb +1 -1
  79. data/test/filters/test_bluecloth.rb +1 -1
  80. data/test/filters/test_coderay.rb +3 -3
  81. data/test/filters/test_coffeescript.rb +1 -1
  82. data/test/filters/test_colorize_syntax.rb +20 -20
  83. data/test/filters/test_erb.rb +10 -10
  84. data/test/filters/test_erubis.rb +6 -6
  85. data/test/filters/test_haml.rb +10 -10
  86. data/test/filters/test_handlebars.rb +3 -3
  87. data/test/filters/test_kramdown.rb +1 -1
  88. data/test/filters/test_less.rb +4 -4
  89. data/test/filters/test_markaby.rb +1 -1
  90. data/test/filters/test_maruku.rb +1 -1
  91. data/test/filters/test_mustache.rb +2 -2
  92. data/test/filters/test_pandoc.rb +1 -1
  93. data/test/filters/test_rainpress.rb +2 -2
  94. data/test/filters/test_rdiscount.rb +2 -2
  95. data/test/filters/test_rdoc.rb +1 -1
  96. data/test/filters/test_redcarpet.rb +21 -6
  97. data/test/filters/test_redcloth.rb +3 -3
  98. data/test/filters/test_relativize_paths.rb +27 -27
  99. data/test/filters/test_rubypants.rb +1 -1
  100. data/test/filters/test_sass.rb +8 -8
  101. data/test/filters/test_slim.rb +4 -4
  102. data/test/filters/test_typogruby.rb +1 -1
  103. data/test/filters/test_uglify_js.rb +2 -2
  104. data/test/filters/test_xsl.rb +2 -2
  105. data/test/filters/test_yui_compressor.rb +3 -3
  106. data/test/helper.rb +6 -1
  107. metadata +12 -6
@@ -9,7 +9,7 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
9
9
  filter = ::Nanoc::Filters::ERB.new({ :location => 'a cheap motel' })
10
10
 
11
11
  # Run filter
12
- result = filter.run('<%= "I was hiding in #{@location}." %>')
12
+ result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>')
13
13
  assert_equal('I was hiding in a cheap motel.', result)
14
14
  end
15
15
 
@@ -18,7 +18,7 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
18
18
  filter = ::Nanoc::Filters::ERB.new({ :location => 'a cheap motel' })
19
19
 
20
20
  # Run filter
21
- result = filter.run('<%= "I was hiding in #{location}." %>')
21
+ result = filter.setup_and_run('<%= "I was hiding in #{location}." %>')
22
22
  assert_equal('I was hiding in a cheap motel.', result)
23
23
  end
24
24
 
@@ -39,7 +39,7 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
39
39
  # Run filter
40
40
  raised = false
41
41
  begin
42
- filter.run('<%= this isn\'t really ruby so it\'ll break, muahaha %>')
42
+ filter.setup_and_run('<%= this isn\'t really ruby so it\'ll break, muahaha %>')
43
43
  rescue SyntaxError => e
44
44
  e.message =~ /(.+?):\d+: /
45
45
  assert_match 'item /foo/bar/baz/ (rep quux)', $1
@@ -53,7 +53,7 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
53
53
  filter = ::Nanoc::Filters::ERB.new({ :content => 'a cheap motel' })
54
54
 
55
55
  # Run filter
56
- result = filter.run('<%= "I was hiding in #{yield}." %>')
56
+ result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
57
57
  assert_equal('I was hiding in a cheap motel.', result)
58
58
  end
59
59
 
@@ -63,7 +63,7 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
63
63
 
64
64
  # Run filter
65
65
  assert_raises LocalJumpError do
66
- filter.run('<%= "I was hiding in #{yield}." %>')
66
+ filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
67
67
  end
68
68
  end
69
69
 
@@ -73,12 +73,12 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
73
73
  File.open('moo', 'w') { |io| io.write("one miiillion dollars") }
74
74
 
75
75
  # Without
76
- res = filter.run('<%= File.read("moo") %>', :safe_level => nil)
76
+ res = filter.setup_and_run('<%= File.read("moo") %>', :safe_level => nil)
77
77
  assert_equal 'one miiillion dollars', res
78
78
 
79
79
  # With
80
80
  assert_raises(SecurityError) do
81
- res = filter.run('<%= File.read("moo") %>', :safe_level => 4)
81
+ res = filter.setup_and_run('<%= File.read("moo") %>', :safe_level => 4)
82
82
  end
83
83
  end
84
84
 
@@ -88,17 +88,17 @@ class Nanoc::Filters::ERBTest < MiniTest::Unit::TestCase
88
88
  $trim_mode_works = false
89
89
 
90
90
  # Without
91
- filter.run('% $trim_mode_works = true')
91
+ filter.setup_and_run('% $trim_mode_works = true')
92
92
  refute $trim_mode_works
93
93
 
94
94
  # With
95
- filter.run('% $trim_mode_works = true', :trim_mode => '%')
95
+ filter.setup_and_run('% $trim_mode_works = true', :trim_mode => '%')
96
96
  assert $trim_mode_works
97
97
  end
98
98
 
99
99
  def test_locals
100
100
  filter = ::Nanoc::Filters::ERB.new
101
- result = filter.run('<%= @local %>', :locals => { :local => 123 })
101
+ result = filter.setup_and_run('<%= @local %>', :locals => { :local => 123 })
102
102
  assert_equal '123', result
103
103
  end
104
104
 
@@ -10,7 +10,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Erubis.new({ :location => 'a cheap motel' })
11
11
 
12
12
  # Run filter
13
- result = filter.run('<%= "I was hiding in #{@location}." %>')
13
+ result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>')
14
14
  assert_equal('I was hiding in a cheap motel.', result)
15
15
  end
16
16
  end
@@ -21,7 +21,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
21
21
  filter = ::Nanoc::Filters::Erubis.new({ :location => 'a cheap motel' })
22
22
 
23
23
  # Run filter
24
- result = filter.run('<%= "I was hiding in #{location}." %>')
24
+ result = filter.setup_and_run('<%= "I was hiding in #{location}." %>')
25
25
  assert_equal('I was hiding in a cheap motel.', result)
26
26
  end
27
27
  end
@@ -34,7 +34,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
34
34
  # Run filter
35
35
  raised = false
36
36
  begin
37
- filter.run('<%= this isn\'t really ruby so it\'ll break, muahaha %>')
37
+ filter.setup_and_run('<%= this isn\'t really ruby so it\'ll break, muahaha %>')
38
38
  rescue SyntaxError => e
39
39
  e.message =~ /(.+?):\d+: /
40
40
  assert_match '?', $1
@@ -50,7 +50,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
50
50
  filter = ::Nanoc::Filters::Erubis.new({ :content => 'a cheap motel' })
51
51
 
52
52
  # Run filter
53
- result = filter.run('<%= "I was hiding in #{yield}." %>')
53
+ result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
54
54
  assert_equal('I was hiding in a cheap motel.', result)
55
55
  end
56
56
  end
@@ -62,7 +62,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
62
62
 
63
63
  # Run filter
64
64
  assert_raises LocalJumpError do
65
- filter.run('<%= "I was hiding in #{yield}." %>')
65
+ filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
66
66
  end
67
67
  end
68
68
  end
@@ -70,7 +70,7 @@ class Nanoc::Filters::ErubisTest < MiniTest::Unit::TestCase
70
70
  def test_filter_with_erbout
71
71
  if_have 'erubis' do
72
72
  filter = ::Nanoc::Filters::Erubis.new
73
- result = filter.run('stuff<% _erbout << _erbout %>')
73
+ result = filter.setup_and_run('stuff<% _erbout << _erbout %>')
74
74
  assert_equal 'stuffstuff', result
75
75
  end
76
76
  end
@@ -10,15 +10,15 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Haml.new({ :question => 'Is this the Payne residence?' })
11
11
 
12
12
  # Run filter (no assigns)
13
- result = filter.run('%html')
13
+ result = filter.setup_and_run('%html')
14
14
  assert_match(/<html>.*<\/html>/, result)
15
15
 
16
16
  # Run filter (assigns without @)
17
- result = filter.run('%p= question')
17
+ result = filter.setup_and_run('%p= question')
18
18
  assert_equal("<p>Is this the Payne residence?</p>\n", result)
19
19
 
20
20
  # Run filter (assigns with @)
21
- result = filter.run('%p= @question')
21
+ result = filter.setup_and_run('%p= @question')
22
22
  assert_equal("<p>Is this the Payne residence?</p>\n", result)
23
23
  end
24
24
  end
@@ -29,11 +29,11 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
29
29
  filter = ::Nanoc::Filters::Haml.new({ :foo => 'bar' })
30
30
 
31
31
  # Check with HTML5
32
- result = filter.run('%img', :format => :html5)
32
+ result = filter.setup_and_run('%img', :format => :html5)
33
33
  assert_match(/<img>/, result)
34
34
 
35
35
  # Check with XHTML
36
- result = filter.run('%img', :format => :xhtml)
36
+ result = filter.setup_and_run('%img', :format => :xhtml)
37
37
  assert_match(/<img\s*\/>/, result)
38
38
  end
39
39
  end
@@ -46,8 +46,8 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
46
46
  # Run filter
47
47
  raised = false
48
48
  begin
49
- filter.run('%p= this isn\'t really ruby so it\'ll break, muahaha')
50
- rescue SyntaxError => e
49
+ filter.setup_and_run('%p= this isn\'t really ruby so it\'ll break, muahaha')
50
+ rescue SyntaxError, Haml::SyntaxError => e
51
51
  e.message =~ /(.+?):\d+: /
52
52
  assert_match '?', $1
53
53
  raised = true
@@ -62,7 +62,7 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
62
62
  filter = ::Nanoc::Filters::Haml.new({ :content => 'Is this the Payne residence?' })
63
63
 
64
64
  # Run filter
65
- result = filter.run('%p= yield')
65
+ result = filter.setup_and_run('%p= yield')
66
66
  assert_equal("<p>Is this the Payne residence?</p>\n", result)
67
67
  end
68
68
  end
@@ -74,7 +74,7 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
74
74
 
75
75
  # Run filter
76
76
  assert_raises LocalJumpError do
77
- filter.run('%p= yield')
77
+ filter.setup_and_run('%p= yield')
78
78
  end
79
79
  end
80
80
  end
@@ -88,7 +88,7 @@ class Nanoc::Filters::HamlTest < MiniTest::Unit::TestCase
88
88
 
89
89
  # Run filter
90
90
  filter = ::Nanoc::Filters::Haml.new
91
- result = filter.run("%body\n ~ File.read('stuff')")
91
+ result = filter.setup_and_run("%body\n ~ File.read('stuff')")
92
92
  assert_match(/Max Payne&#x000A;Mona Sax/, result)
93
93
  end
94
94
  end
@@ -27,11 +27,11 @@ class Nanoc::Filters::HandlebarsTest < MiniTest::Unit::TestCase
27
27
  filter = ::Nanoc::Filters::Handlebars.new(assigns)
28
28
 
29
29
  # Run filter
30
- result = filter.run('{{protagonist}} says: {{yield}}.')
30
+ result = filter.setup_and_run('{{protagonist}} says: {{yield}}.')
31
31
  assert_equal('Max Payne says: No Payne No Gayne.', result)
32
- result = filter.run('We can’t stop {{item.location}}! This is the {{layout.name}} layout!')
32
+ result = filter.setup_and_run('We can’t stop {{item.location}}! This is the {{layout.name}} layout!')
33
33
  assert_equal('We can’t stop here! This is the Max Payne layout!', result)
34
- result = filter.run('It’s raining {{config.animals}} here!')
34
+ result = filter.setup_and_run('It’s raining {{config.animals}} here!')
35
35
  assert_equal('It’s raining cats and dogs here!', result)
36
36
  end
37
37
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::KramdownTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Kramdown.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("This is _so_ **cool**!")
13
+ result = filter.setup_and_run("This is _so_ **cool**!")
14
14
  assert_equal("<p>This is <em>so</em> <strong>cool</strong>!</p>\n", result)
15
15
  end
16
16
  end
@@ -13,7 +13,7 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
13
13
  filter = ::Nanoc::Filters::Less.new(:item => @item, :items => [ @item ])
14
14
 
15
15
  # Run filter
16
- result = filter.run('.foo { bar: 1 + 1 }')
16
+ result = filter.setup_and_run('.foo { bar: 1 + 1 }')
17
17
  assert_match(/\.foo\s*\{\s*bar:\s*2;?\s*\}/, result)
18
18
  end
19
19
  end
@@ -31,7 +31,7 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
31
31
  filter = ::Nanoc::Filters::Less.new(:item => @item, :items => [ @item ])
32
32
 
33
33
  # Run filter
34
- result = filter.run('@import "content/foo/bar/imported_file.less";')
34
+ result = filter.setup_and_run('@import "content/foo/bar/imported_file.less";')
35
35
  assert_match(/p\s*\{\s*color:\s*red;?\s*\}/, result)
36
36
  end
37
37
  end
@@ -50,7 +50,7 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
50
50
  filter = ::Nanoc::Filters::Less.new(:item => @item, :items => [ @item ])
51
51
 
52
52
  # Run filter
53
- result = filter.run('@import "bar/imported_file.less";')
53
+ result = filter.setup_and_run('@import "bar/imported_file.less";')
54
54
  assert_match(/p\s*\{\s*color:\s*red;?\s*\}/, result)
55
55
  end
56
56
  end
@@ -119,7 +119,7 @@ class Nanoc::Filters::LessTest < MiniTest::Unit::TestCase
119
119
  filter = ::Nanoc::Filters::Less.new(:item => @item, :items => [ @item ])
120
120
 
121
121
  # Run filter with compress option
122
- result = filter.run('.foo { bar: a; } .bar { foo: b; }', :compress => true)
122
+ result = filter.setup_and_run('.foo { bar: a; } .bar { foo: b; }', :compress => true)
123
123
  assert_match(/^\.foo{bar:a;}\n\.bar{foo:b;}/, result)
124
124
  end
125
125
  end
@@ -16,7 +16,7 @@ class Nanoc::Filters::MarkabyTest < MiniTest::Unit::TestCase
16
16
  filter = ::Nanoc::Filters::Markaby.new
17
17
 
18
18
  # Run filter
19
- result = filter.run("html do\nend")
19
+ result = filter.setup_and_run("html do\nend")
20
20
  assert_equal("<html></html>", result)
21
21
  end
22
22
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::MarukuTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Maruku.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("This is _so_ *cool*!")
13
+ result = filter.setup_and_run("This is _so_ *cool*!")
14
14
  assert_equal("<p>This is <em>so</em> <em>cool</em>!</p>", result)
15
15
  end
16
16
  end
@@ -17,7 +17,7 @@ class Nanoc::Filters::MustacheTest < MiniTest::Unit::TestCase
17
17
  filter = ::Nanoc::Filters::Mustache.new({ :item => item })
18
18
 
19
19
  # Run filter
20
- result = filter.run('The protagonist of {{title}} is {{protagonist}}.')
20
+ result = filter.setup_and_run('The protagonist of {{title}} is {{protagonist}}.')
21
21
  assert_equal('The protagonist of Max Payne is Max Payne.', result)
22
22
  end
23
23
  end
@@ -36,7 +36,7 @@ class Nanoc::Filters::MustacheTest < MiniTest::Unit::TestCase
36
36
  { :content => 'No Payne No Gayne', :item => item })
37
37
 
38
38
  # Run filter
39
- result = filter.run('Max says: {{yield}}.')
39
+ result = filter.setup_and_run('Max says: {{yield}}.')
40
40
  assert_equal('Max says: No Payne No Gayne.', result)
41
41
  end
42
42
  end
@@ -14,7 +14,7 @@ class Nanoc::Filters::PandocTest < MiniTest::Unit::TestCase
14
14
  filter = ::Nanoc::Filters::Pandoc.new
15
15
 
16
16
  # Run filter
17
- result = filter.run("# Heading\n")
17
+ result = filter.setup_and_run("# Heading\n")
18
18
  assert_equal("<h1 id=\"heading\">Heading</h1>", result)
19
19
  end
20
20
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::RainpressTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Rainpress.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("body { color: black; }")
13
+ result = filter.setup_and_run("body { color: black; }")
14
14
  assert_equal("body{color:#000}", result)
15
15
  end
16
16
  end
@@ -21,7 +21,7 @@ class Nanoc::Filters::RainpressTest < MiniTest::Unit::TestCase
21
21
  filter = ::Nanoc::Filters::Rainpress.new
22
22
 
23
23
  # Run filter
24
- result = filter.run("body { color: #aabbcc; }", :colors => false)
24
+ result = filter.setup_and_run("body { color: #aabbcc; }", :colors => false)
25
25
  assert_equal("body{color:#aabbcc}", result)
26
26
  end
27
27
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::RDiscountTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::RDiscount.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("> Quote")
13
+ result = filter.setup_and_run("> Quote")
14
14
  assert_match(/<blockquote>\s*<p>Quote<\/p>\s*<\/blockquote>/, result)
15
15
  end
16
16
  end
@@ -23,7 +23,7 @@ class Nanoc::Filters::RDiscountTest < MiniTest::Unit::TestCase
23
23
  # Run filter
24
24
  input = "The quotation 'marks' sure make this look sarcastic!"
25
25
  output_expected = /The quotation &lsquo;marks&rsquo; sure make this look sarcastic!/
26
- output_actual = filter.run(input, :extensions => [ :smart ])
26
+ output_actual = filter.setup_and_run(input, :extensions => [ :smart ])
27
27
  assert_match(output_expected, output_actual)
28
28
  end
29
29
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::RDocTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::RDoc.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("= Foo")
13
+ result = filter.setup_and_run("= Foo")
14
14
  assert_match(%r{<h1( id="label-Foo")?>Foo</h1>\Z}, result)
15
15
  end
16
16
  end
@@ -16,7 +16,7 @@ class Nanoc::Filters::RedcarpetTest < MiniTest::Unit::TestCase
16
16
  filter = ::Nanoc::Filters::Redcarpet.new
17
17
 
18
18
  # Run filter
19
- result = filter.run("> Quote")
19
+ result = filter.setup_and_run("> Quote")
20
20
  assert_match(/<blockquote>\s*<p>Quote<\/p>\s*<\/blockquote>/, result)
21
21
  end
22
22
  end
@@ -30,11 +30,11 @@ class Nanoc::Filters::RedcarpetTest < MiniTest::Unit::TestCase
30
30
  if ::Redcarpet::VERSION > '2'
31
31
  input = "this is ~~good~~ bad"
32
32
  output_expected = /this is <del>good<\/del> bad/
33
- output_actual = filter.run(input, :options => { :strikethrough => true })
33
+ output_actual = filter.setup_and_run(input, :options => { :strikethrough => true })
34
34
  else
35
35
  input = "The quotation 'marks' sure make this look sarcastic!"
36
36
  output_expected = /The quotation &lsquo;marks&rsquo; sure make this look sarcastic!/
37
- output_actual = filter.run(input, :options => [ :smart ])
37
+ output_actual = filter.setup_and_run(input, :options => [ :smart ])
38
38
  end
39
39
  assert_match(output_expected, output_actual)
40
40
  end
@@ -48,7 +48,7 @@ class Nanoc::Filters::RedcarpetTest < MiniTest::Unit::TestCase
48
48
  # Run filter
49
49
  input = "![Alt](/path/to/img 'Title')"
50
50
  output_expected = %r{<img src="/path/to/img" alt="Alt" title="Title">}
51
- output_actual = filter.run(input)
51
+ output_actual = filter.setup_and_run(input)
52
52
  assert_match(output_expected, output_actual)
53
53
  end
54
54
  end
@@ -62,12 +62,27 @@ class Nanoc::Filters::RedcarpetTest < MiniTest::Unit::TestCase
62
62
  input = "![Alt](/path/to/img 'Title')"
63
63
  output_expected = %r{<img src="/path/to/img" alt="Alt" title="Title"/>}
64
64
  if ::Redcarpet::VERSION > '2'
65
- output_actual = filter.run(input, :renderer_options => { :xhtml => true })
65
+ output_actual = filter.setup_and_run(input, :renderer_options => { :xhtml => true })
66
66
  else
67
- output_actual = filter.run(input, :options => [ :xhtml ])
67
+ output_actual = filter.setup_and_run(input, :options => [ :xhtml ])
68
68
  end
69
69
  assert_match(output_expected, output_actual)
70
70
  end
71
71
  end
72
72
 
73
+ def test_html_toc
74
+ if_have 'redcarpet' do
75
+ unless ::Redcarpet::VERSION > '2'
76
+ skip "Requires Redcarpet >= 2"
77
+ end
78
+
79
+ # Create filter
80
+ filter = ::Nanoc::Filters::Redcarpet.new
81
+
82
+ # Run filter
83
+ input = "# Heading 1\n## Heading 2\n"
84
+ filter.run(input, :renderer => Redcarpet::Render::HTML_TOC)
85
+ end
86
+ end
87
+
73
88
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::RedClothTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::RedCloth.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("h1. Foo")
13
+ result = filter.setup_and_run("h1. Foo")
14
14
  assert_equal("<h1>Foo</h1>", result)
15
15
  end
16
16
  end
@@ -21,11 +21,11 @@ class Nanoc::Filters::RedClothTest < MiniTest::Unit::TestCase
21
21
  filter = ::Nanoc::Filters::RedCloth.new
22
22
 
23
23
  # Run filter without options
24
- result = filter.run("I am a member of SPECTRE.")
24
+ result = filter.setup_and_run("I am a member of SPECTRE.")
25
25
  assert_equal("<p>I am a member of <span class=\"caps\">SPECTRE</span>.</p>", result)
26
26
 
27
27
  # Run filter with options
28
- result = filter.run("I am a member of SPECTRE.", :no_span_caps => true)
28
+ result = filter.setup_and_run("I am a member of SPECTRE.", :no_span_caps => true)
29
29
  assert_equal("<p>I am a member of SPECTRE.</p>", result)
30
30
  end
31
31
  end
@@ -25,7 +25,7 @@ class Nanoc::Filters::RelativizePathsTest < MiniTest::Unit::TestCase
25
25
  expected_content = %[<a href="../..">foo</a>]
26
26
 
27
27
  # Test
28
- actual_content = filter.run(raw_content, :type => :html)
28
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
29
29
  assert_equal(expected_content, actual_content)
30
30
  end
31
31
 
@@ -49,7 +49,7 @@ class Nanoc::Filters::RelativizePathsTest < MiniTest::Unit::TestCase
49
49
  expected_content = %[<a href="../..">foo</a>]
50
50
 
51
51
  # Test
52
- actual_content = filter.run(raw_content, :type => :html)
52
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
53
53
  assert_equal(expected_content, actual_content)
54
54
  end
55
55
 
@@ -73,7 +73,7 @@ class Nanoc::Filters::RelativizePathsTest < MiniTest::Unit::TestCase
73
73
  expected_content = %[<a href="../..">foo</a>]
74
74
 
75
75
  # Test
76
- actual_content = filter.run(raw_content, :type => :html)
76
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
77
77
  assert_equal(expected_content, actual_content)
78
78
  end
79
79
 
@@ -108,7 +108,7 @@ EOS
108
108
  expected_match_1 = %r{^<!DOCTYPE html>\s*<html>\s*<head>(.|\s)*<title>Hello</title>\s*</head>\s*<body>\s*<a href="../..">foo</a>\s*</body>\s*</html>\s*$}
109
109
 
110
110
  # Test
111
- actual_content = filter.run(raw_content, :type => :html)
111
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
112
112
  assert_match(expected_match_0, actual_content)
113
113
  assert_match(expected_match_1, actual_content)
114
114
  end
@@ -133,7 +133,7 @@ EOS
133
133
  expected_content = %[<a href="../..">foo</a> <a href="../../../bar">bar</a>]
134
134
 
135
135
  # Test
136
- actual_content = filter.run(raw_content, :type => :html)
136
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
137
137
  assert_equal(expected_content, actual_content)
138
138
  end
139
139
 
@@ -157,7 +157,7 @@ EOS
157
157
  expected_content = %[<a href="../../../"><img src="../../../bar.png"></a>]
158
158
 
159
159
  # Test
160
- actual_content = filter.run(raw_content, :type => :html)
160
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
161
161
  assert_equal(expected_content, actual_content)
162
162
  end
163
163
 
@@ -181,7 +181,7 @@ EOS
181
181
  expected_content = %[stuff href="/foo" more stuff]
182
182
 
183
183
  # Test
184
- actual_content = filter.run(raw_content, :type => :html)
184
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
185
185
  assert_equal(expected_content, actual_content)
186
186
  end
187
187
 
@@ -205,7 +205,7 @@ EOS
205
205
  expected_content = %[<a href="../../">foo</a>]
206
206
 
207
207
  # Test
208
- actual_content = filter.run(raw_content, :type => :html)
208
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
209
209
  assert_equal(expected_content, actual_content)
210
210
  end
211
211
 
@@ -229,7 +229,7 @@ EOS
229
229
  expected_content = %[<a href="//example.com/">example.com</a>]
230
230
 
231
231
  # Test
232
- actual_content = filter.run(raw_content, :type => :html)
232
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
233
233
  assert_equal(expected_content, actual_content)
234
234
  end
235
235
 
@@ -253,7 +253,7 @@ EOS
253
253
  expected_content = %[<a href="#max-payne">Max Payne</a>]
254
254
 
255
255
  # Test
256
- actual_content = filter.run(raw_content, :type => :html)
256
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
257
257
  assert_equal(expected_content, actual_content)
258
258
  end
259
259
 
@@ -277,7 +277,7 @@ EOS
277
277
  expected_content = %[<a href="http://example.com/">Example</a>]
278
278
 
279
279
  # Test
280
- actual_content = filter.run(raw_content, :type => :html)
280
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
281
281
  assert_equal(expected_content, actual_content)
282
282
  end
283
283
 
@@ -301,7 +301,7 @@ EOS
301
301
  expected_content = %[<a href="example">Example</a>]
302
302
 
303
303
  # Test
304
- actual_content = filter.run(raw_content, :type => :html)
304
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
305
305
  assert_equal(expected_content, actual_content)
306
306
  end
307
307
 
@@ -326,7 +326,7 @@ EOS
326
326
  expected_content = %[<object data="../../example"><param name="movie" content="../../example"></object>]
327
327
 
328
328
  # Test
329
- actual_content = filter.run(raw_content, :type => :html)
329
+ actual_content = filter.setup_and_run(raw_content, :type => :html)
330
330
  assert_equal(expected_content, actual_content)
331
331
  end
332
332
 
@@ -337,7 +337,7 @@ EOS
337
337
 
338
338
  # Test
339
339
  assert_raises(RuntimeError) do
340
- filter.run("moo")
340
+ filter.setup_and_run("moo")
341
341
  end
342
342
  end
343
343
 
@@ -361,7 +361,7 @@ EOS
361
361
  expected_content = %[background: url("../background.png");]
362
362
 
363
363
  # Test
364
- actual_content = filter.run(raw_content, :type => :css)
364
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
365
365
  assert_equal(expected_content, actual_content)
366
366
  end
367
367
 
@@ -385,7 +385,7 @@ EOS
385
385
  expected_content = %[background: url('../background.png');]
386
386
 
387
387
  # Test
388
- actual_content = filter.run(raw_content, :type => :css)
388
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
389
389
  assert_equal(expected_content, actual_content)
390
390
  end
391
391
 
@@ -409,7 +409,7 @@ EOS
409
409
  expected_content = %[background: url(../background.png);]
410
410
 
411
411
  # Test
412
- actual_content = filter.run(raw_content, :type => :css)
412
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
413
413
  assert_equal(expected_content, actual_content)
414
414
  end
415
415
 
@@ -433,7 +433,7 @@ EOS
433
433
  expected_content = %[background: url(../a.png) url(../b.png);]
434
434
 
435
435
  # Test
436
- actual_content = filter.run(raw_content, :type => :css)
436
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
437
437
  assert_equal(expected_content, actual_content)
438
438
  end
439
439
 
@@ -460,7 +460,7 @@ EOS
460
460
  expected_content = %[background: url(../../);]
461
461
 
462
462
  # Test
463
- actual_content = filter.run(raw_content, :type => :css)
463
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
464
464
  assert_equal(expected_content, actual_content)
465
465
  end
466
466
 
@@ -484,7 +484,7 @@ EOS
484
484
  expected_content = %[background: url(//example.com);]
485
485
 
486
486
  # Test
487
- actual_content = filter.run(raw_content, :type => :css)
487
+ actual_content = filter.setup_and_run(raw_content, :type => :css)
488
488
  assert_equal(expected_content, actual_content)
489
489
  end
490
490
 
@@ -520,7 +520,7 @@ XML
520
520
  XML
521
521
 
522
522
  # Test
523
- actual_content = filter.run(raw_content, :type => :xml, :select => ['*/@boo'])
523
+ actual_content = filter.setup_and_run(raw_content, :type => :xml, :select => ['*/@boo'])
524
524
  assert_equal(expected_content, actual_content)
525
525
  end
526
526
  end
@@ -555,7 +555,7 @@ XML
555
555
  XML
556
556
 
557
557
  # Test
558
- actual_content = filter.run(raw_content, :type => :xml, :select => ['far/@href'])
558
+ actual_content = filter.setup_and_run(raw_content, :type => :xml, :select => ['far/@href'])
559
559
  assert_equal(expected_content, actual_content)
560
560
  end
561
561
  end
@@ -590,7 +590,7 @@ XML
590
590
  XML
591
591
 
592
592
  # Test
593
- actual_content = filter.run(raw_content, {
593
+ actual_content = filter.setup_and_run(raw_content, {
594
594
  :type => :xml,
595
595
  :namespaces => {:ex => 'http://example.org'},
596
596
  :select => ['ex:a/@href']
@@ -643,7 +643,7 @@ XML
643
643
  </html>}
644
644
 
645
645
  # Test
646
- actual_content = filter.run(raw_content, :type => :xhtml)
646
+ actual_content = filter.setup_and_run(raw_content, :type => :xhtml)
647
647
  assert_match expected_match, actual_content
648
648
  end
649
649
  end
@@ -680,7 +680,7 @@ XML
680
680
  XML
681
681
 
682
682
  # Test
683
- actual_content = filter.run(raw_content.freeze, :type => :xhtml)
683
+ actual_content = filter.setup_and_run(raw_content.freeze, :type => :xhtml)
684
684
  assert_equal(expected_content, actual_content)
685
685
  end
686
686
  end
@@ -717,7 +717,7 @@ XML
717
717
  ]
718
718
 
719
719
  # Test
720
- actual_content = filter.run(raw_content.freeze, :type => :xhtml)
720
+ actual_content = filter.setup_and_run(raw_content.freeze, :type => :xhtml)
721
721
  assert_equal(expected_content, actual_content)
722
722
  end
723
723
  end
@@ -752,7 +752,7 @@ XML
752
752
  <![endif]-->]
753
753
 
754
754
  # Test
755
- actual_content = filter.run(raw_content.freeze, :type => :html)
755
+ actual_content = filter.setup_and_run(raw_content.freeze, :type => :html)
756
756
  assert_equal(expected_content, actual_content)
757
757
  end
758
758
  end