nanoc 3.5.0 → 3.6.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 (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
@@ -10,7 +10,7 @@ class Nanoc::Filters::RubyPantsTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::RubyPants.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("Wait---what?")
13
+ result = filter.setup_and_run("Wait---what?")
14
14
  assert_equal("Wait&#8212;what?", result)
15
15
  end
16
16
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
10
10
  filter = create_filter({ :foo => 'bar' })
11
11
 
12
12
  # Run filter
13
- result = filter.run(".foo #bar\n color: #f00")
13
+ result = filter.setup_and_run(".foo #bar\n color: #f00")
14
14
  assert_match(/.foo\s+#bar\s*\{\s*color:\s+(red|#f00);?\s*\}/, result)
15
15
  end
16
16
  end
@@ -21,11 +21,11 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
21
21
  filter = create_filter({ :foo => 'bar' })
22
22
 
23
23
  # Check with compact
24
- result = filter.run(".foo #bar\n color: #f00", :style => 'compact')
24
+ result = filter.setup_and_run(".foo #bar\n color: #f00", :style => 'compact')
25
25
  assert_match(/^\.foo #bar[\s]*\{[\s]*color:\s*(red|#f00);?[\s]*\}/m, result)
26
26
 
27
27
  # Check with compressed
28
- result = filter.run(".foo #bar\n color: #f00", :style => 'compressed')
28
+ result = filter.setup_and_run(".foo #bar\n color: #f00", :style => 'compressed')
29
29
  assert_match(/^\.foo #bar[\s]*\{[\s]*color:\s*(red|#f00);?[\s]*\}/m, result)
30
30
  end
31
31
  end
@@ -38,7 +38,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
38
38
  # Run filter
39
39
  raised = false
40
40
  begin
41
- filter.run('$*#&!@($')
41
+ filter.setup_and_run('$*#&!@($')
42
42
  rescue Sass::SyntaxError => e
43
43
  assert_match ':1', e.backtrace[0]
44
44
  raised = true
@@ -56,7 +56,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
56
56
  File.open('moo.sass', 'w') { |io| io.write "body\n color: red" }
57
57
 
58
58
  # Run filter
59
- filter.run('@import moo')
59
+ filter.setup_and_run('@import moo')
60
60
  end
61
61
  end
62
62
 
@@ -71,7 +71,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
71
71
  File.open('subdir/relative.sass', 'w') { |io| io.write "body\n color: red" }
72
72
 
73
73
  # Run filter
74
- filter.run('@import moo')
74
+ filter.setup_and_run('@import moo')
75
75
  end
76
76
  end
77
77
 
@@ -84,7 +84,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
84
84
  File.open('moo.sass', 'w') { |io| io.write "body\n color: red" }
85
85
 
86
86
  # Run filter
87
- filter.run('@import moo')
87
+ filter.setup_and_run('@import moo')
88
88
  end
89
89
  end
90
90
 
@@ -94,7 +94,7 @@ class Nanoc::Filters::SassTest < MiniTest::Unit::TestCase
94
94
  filter = create_filter
95
95
 
96
96
  # Run filter
97
- filter.run('@import moo.css')
97
+ filter.setup_and_run('@import moo.css')
98
98
  end
99
99
  end
100
100
 
@@ -10,15 +10,15 @@ class Nanoc::Filters::SlimTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::Slim.new({ :rabbit => 'The rabbit is on the branch.' })
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 = rabbit')
17
+ result = filter.setup_and_run('p = rabbit')
18
18
  assert_equal("<p>The rabbit is on the branch.</p>", result)
19
19
 
20
20
  # Run filter (assigns with @)
21
- result = filter.run('p = @rabbit')
21
+ result = filter.setup_and_run('p = @rabbit')
22
22
  assert_equal("<p>The rabbit is on the branch.</p>", result)
23
23
  end
24
24
  end
@@ -27,7 +27,7 @@ class Nanoc::Filters::SlimTest < MiniTest::Unit::TestCase
27
27
  if_have 'slim' do
28
28
  filter = ::Nanoc::Filters::Slim.new({ :content => 'The rabbit is on the branch.' })
29
29
 
30
- result = filter.run('p = yield')
30
+ result = filter.setup_and_run('p = yield')
31
31
  assert_equal("<p>The rabbit is on the branch.</p>", result)
32
32
  end
33
33
  end
@@ -12,7 +12,7 @@ class Nanoc::Filters::TypogrubyTest < MiniTest::Unit::TestCase
12
12
  # Run filter
13
13
  a = '"Typogruby makes HTML look smarter &amp; better, don\'t you think?"'
14
14
  b = '<span class="dquo">&#8220;</span>Typogruby makes <span class="caps">HTML</span> look smarter <span class="amp">&amp;</span> better, don&#8217;t you&nbsp;think?&#8221;'
15
- result = filter.run(a)
15
+ result = filter.setup_and_run(a)
16
16
  assert_equal(b, result)
17
17
  end
18
18
  end
@@ -10,7 +10,7 @@ class Nanoc::Filters::UglifyJSTest < MiniTest::Unit::TestCase
10
10
  filter = ::Nanoc::Filters::UglifyJS.new
11
11
 
12
12
  # Run filter
13
- result = filter.run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)")
13
+ result = filter.setup_and_run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)")
14
14
  assert_match(/foo=1,function\((.)\){alert\(\1\)}\(foo\);/, result)
15
15
  end
16
16
  end
@@ -22,7 +22,7 @@ class Nanoc::Filters::UglifyJSTest < MiniTest::Unit::TestCase
22
22
  filter = ::Nanoc::Filters::UglifyJS.new
23
23
 
24
24
  # Run filter
25
- result = filter.run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)", :toplevel => true)
25
+ result = filter.setup_and_run("foo = 1; (function(bar) { if (true) alert(bar); })(foo)", :toplevel => true)
26
26
  assert_match(/foo=1,function\((.)\){alert\(\1\)}\(foo\);/, result)
27
27
  end
28
28
  end
@@ -83,7 +83,7 @@ EOS
83
83
  layout = Nanoc::Layout.new(SAMPLE_XSL, {}, '/layout/')
84
84
 
85
85
  filter = ::Nanoc::Filters::XSL.new(:layout => layout)
86
- result = filter.run(SAMPLE_XML_IN)
86
+ result = filter.setup_and_run(SAMPLE_XML_IN)
87
87
 
88
88
  assert_equal SAMPLE_XML_OUT, result
89
89
  end
@@ -94,7 +94,7 @@ EOS
94
94
  layout = Nanoc::Layout.new(SAMPLE_XSL_WITH_PARAMS, {}, '/layout/')
95
95
 
96
96
  filter = ::Nanoc::Filters::XSL.new(:layout => layout)
97
- result = filter.run(SAMPLE_XML_IN_WITH_PARAMS, :foo => 'bar')
97
+ result = filter.setup_and_run(SAMPLE_XML_IN_WITH_PARAMS, :foo => 'bar')
98
98
 
99
99
  assert_equal SAMPLE_XML_OUT_WITH_PARAMS, result
100
100
  end
@@ -18,10 +18,10 @@ class Nanoc::Filters::YUICompressorTest < MiniTest::Unit::TestCase
18
18
  }
19
19
  JAVASCRIPT
20
20
 
21
- result = filter.run(sample_js, { :type => 'js', :munge => true })
21
+ result = filter.setup_and_run(sample_js, { :type => 'js', :munge => true })
22
22
  assert_match "function factorial(c){var a=1;for(var b=2;b<=c;b++){a*=b}return a};", result
23
23
 
24
- result = filter.run(sample_js, { :type => 'js', :munge => false })
24
+ result = filter.setup_and_run(sample_js, { :type => 'js', :munge => false })
25
25
  assert_match "function factorial(n){var result=1;for(var i=2;i<=n;i++){result*=i}return result};", result
26
26
  end
27
27
  end
@@ -36,7 +36,7 @@ class Nanoc::Filters::YUICompressorTest < MiniTest::Unit::TestCase
36
36
  }
37
37
  CSS
38
38
 
39
- result = filter.run(sample_css, { :type => 'css' })
39
+ result = filter.setup_and_run(sample_css, { :type => 'css' })
40
40
  assert_match "*{margin:0}", result
41
41
  end
42
42
  end
@@ -89,7 +89,7 @@ EOS
89
89
  end
90
90
  end
91
91
 
92
- File.open('config.yaml', 'w') { |io| io.write('stuff: 12345') }
92
+ File.open('nanoc.yaml', 'w') { |io| io.write('stuff: 12345') }
93
93
  File.open('Rules', 'w') { |io| io.write(rules_content) }
94
94
  end
95
95
  end
@@ -200,6 +200,11 @@ EOS
200
200
  'Expected %s to contain all the elements of %s' % [actual.inspect, expected.inspect]
201
201
  end
202
202
 
203
+ def assert_raises_frozen_error
204
+ error = assert_raises(RuntimeError, TypeError) { yield }
205
+ assert_match(/(^can't modify frozen |^unable to modify frozen object$)/, error.message)
206
+ end
207
+
203
208
  end
204
209
 
205
210
  # Unexpected system exit is unexpected
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.6.0
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-01-27 00:00:00.000000000 Z
12
+ date: 2013-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cri
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '2.2'
21
+ version: '2.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '2.2'
29
+ version: '2.3'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: minitest
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +164,7 @@ files:
164
164
  - lib/nanoc/base/source_data/configuration.rb
165
165
  - lib/nanoc/base/source_data/data_source.rb
166
166
  - lib/nanoc/base/source_data/item.rb
167
+ - lib/nanoc/base/source_data/item_array.rb
167
168
  - lib/nanoc/base/source_data/layout.rb
168
169
  - lib/nanoc/base/source_data/site.rb
169
170
  - lib/nanoc/base/store.rb
@@ -180,9 +181,11 @@ files:
180
181
  - lib/nanoc/cli/commands/deploy.rb
181
182
  - lib/nanoc/cli/commands/nanoc.rb
182
183
  - lib/nanoc/cli/commands/prune.rb
184
+ - lib/nanoc/cli/commands/shell.rb
183
185
  - lib/nanoc/cli/commands/show-data.rb
184
186
  - lib/nanoc/cli/commands/show-plugins.rb
185
187
  - lib/nanoc/cli/commands/show-rules.rb
188
+ - lib/nanoc/cli/commands/sync.rb
186
189
  - lib/nanoc/cli/commands/update.rb
187
190
  - lib/nanoc/cli/commands/validate-css.rb
188
191
  - lib/nanoc/cli/commands/validate-html.rb
@@ -305,6 +308,7 @@ files:
305
308
  - test/base/test_directed_graph.rb
306
309
  - test/base/test_filter.rb
307
310
  - test/base/test_item.rb
311
+ - test/base/test_item_array.rb
308
312
  - test/base/test_item_rep.rb
309
313
  - test/base/test_layout.rb
310
314
  - test/base/test_memoization.rb
@@ -314,6 +318,7 @@ files:
314
318
  - test/base/test_rule.rb
315
319
  - test/base/test_rule_context.rb
316
320
  - test/base/test_site.rb
321
+ - test/cli/commands/test_check.rb
317
322
  - test/cli/commands/test_compile.rb
318
323
  - test/cli/commands/test_create_item.rb
319
324
  - test/cli/commands/test_create_layout.rb
@@ -322,6 +327,7 @@ files:
322
327
  - test/cli/commands/test_help.rb
323
328
  - test/cli/commands/test_info.rb
324
329
  - test/cli/commands/test_prune.rb
330
+ - test/cli/commands/test_sync.rb
325
331
  - test/cli/commands/test_update.rb
326
332
  - test/cli/commands/test_watch.rb
327
333
  - test/cli/test_cleaning_stream.rb
@@ -394,7 +400,7 @@ files:
394
400
  - test/tasks/test_clean.rb
395
401
  - test/test_gem.rb
396
402
  - nanoc.gemspec
397
- homepage: http://nanoc.stoneship.org/
403
+ homepage: http://nanoc.ws/
398
404
  licenses: []
399
405
  post_install_message:
400
406
  rdoc_options:
@@ -416,7 +422,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
416
422
  version: '0'
417
423
  requirements: []
418
424
  rubyforge_project:
419
- rubygems_version: 1.8.23
425
+ rubygems_version: 1.8.25
420
426
  signing_key:
421
427
  specification_version: 3
422
428
  summary: a web publishing system written in Ruby for building small to medium-sized