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
@@ -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