nanoc 4.1.1 → 4.1.2
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +16 -20
- data/LICENSE +1 -1
- data/NEWS.md +11 -0
- data/lib/nanoc.rb +1 -1
- data/lib/nanoc/base/compilation/compiler.rb +6 -5
- data/lib/nanoc/base/compilation/filter.rb +1 -1
- data/lib/nanoc/base/compilation/outdatedness_checker.rb +10 -2
- data/lib/nanoc/base/core_ext/array.rb +1 -1
- data/lib/nanoc/base/core_ext/hash.rb +1 -1
- data/lib/nanoc/base/entities/configuration.rb +5 -4
- data/lib/nanoc/base/entities/document.rb +1 -1
- data/lib/nanoc/base/entities/identifiable_collection.rb +2 -1
- data/lib/nanoc/base/entities/identifier.rb +1 -1
- data/lib/nanoc/base/entities/item_rep.rb +5 -5
- data/lib/nanoc/base/entities/rule_memory_action.rb +1 -1
- data/lib/nanoc/base/entities/rule_memory_actions/snapshot.rb +1 -1
- data/lib/nanoc/base/entities/site.rb +4 -3
- data/lib/nanoc/base/repos/site_loader.rb +5 -5
- data/lib/nanoc/base/services/executor.rb +6 -5
- data/lib/nanoc/base/services/item_rep_writer.rb +1 -1
- data/lib/nanoc/base/views/config_view.rb +1 -1
- data/lib/nanoc/base/views/item_rep_view.rb +1 -1
- data/lib/nanoc/base/views/item_without_reps_view.rb +1 -1
- data/lib/nanoc/base/views/mixins/document_view_mixin.rb +7 -9
- data/lib/nanoc/base/views/view.rb +14 -0
- data/lib/nanoc/cli.rb +2 -2
- data/lib/nanoc/cli/ansi_string_colorizer.rb +1 -1
- data/lib/nanoc/cli/cleaning_stream.rb +1 -1
- data/lib/nanoc/cli/command_runner.rb +7 -14
- data/lib/nanoc/cli/commands/check.rb +1 -1
- data/lib/nanoc/cli/commands/create-site.rb +5 -5
- data/lib/nanoc/cli/commands/shell.rb +1 -1
- data/lib/nanoc/cli/commands/show-plugins.rb +2 -2
- data/lib/nanoc/cli/commands/show-rules.rb +1 -1
- data/lib/nanoc/cli/commands/view.rb +1 -1
- data/lib/nanoc/cli/error_handler.rb +3 -11
- data/lib/nanoc/cli/logger.rb +2 -2
- data/lib/nanoc/data_sources/filesystem_unified.rb +6 -5
- data/lib/nanoc/extra/checking/checks/external_links.rb +7 -6
- data/lib/nanoc/extra/checking/checks/internal_links.rb +7 -6
- data/lib/nanoc/extra/checking/checks/mixed_content.rb +1 -1
- data/lib/nanoc/extra/checking/runner.rb +8 -7
- data/lib/nanoc/extra/deployer.rb +1 -1
- data/lib/nanoc/extra/deployers/fog.rb +2 -2
- data/lib/nanoc/extra/deployers/rsync.rb +1 -1
- data/lib/nanoc/extra/jruby_nokogiri_warner.rb +1 -1
- data/lib/nanoc/extra/link_collector.rb +1 -1
- data/lib/nanoc/filters/colorize_syntax.rb +3 -3
- data/lib/nanoc/filters/less.rb +1 -1
- data/lib/nanoc/filters/redcarpet.rb +6 -5
- data/lib/nanoc/filters/relativize_paths.rb +2 -2
- data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +1 -1
- data/lib/nanoc/helpers/capturing.rb +1 -1
- data/lib/nanoc/helpers/html_escape.rb +3 -2
- data/lib/nanoc/helpers/link_to.rb +7 -6
- data/lib/nanoc/rule_dsl/compiler_dsl.rb +1 -1
- data/lib/nanoc/version.rb +1 -1
- data/nanoc.gemspec +3 -3
- data/tasks/test.rake +1 -1
- data/test/cli/test_cli.rb +2 -2
- data/test/extra/checking/checks/test_mixed_content.rb +7 -7
- data/test/filters/test_colorize_syntax.rb +2 -2
- data/test/filters/test_redcarpet.rb +6 -5
- data/test/filters/test_redcloth.rb +1 -1
- data/test/filters/test_xsl.rb +6 -6
- metadata +2 -2
data/lib/nanoc/extra/deployer.rb
CHANGED
@@ -18,7 +18,7 @@ module Nanoc::Extra
|
|
18
18
|
# @return [Boolean] true if the deployer should only show what would be
|
19
19
|
# deployed instead of doing the actual deployment
|
20
20
|
attr_reader :dry_run
|
21
|
-
|
21
|
+
alias dry_run? dry_run
|
22
22
|
|
23
23
|
# @param [String] source_path The path to the directory that contains the
|
24
24
|
# files to upload. It should not have a trailing slash.
|
@@ -37,7 +37,7 @@ module Nanoc::Extra::Deployers
|
|
37
37
|
error 'The path requires no trailing slash' if path && path[-1, 1] == '/'
|
38
38
|
|
39
39
|
# Mock if necessary
|
40
|
-
if
|
40
|
+
if dry_run?
|
41
41
|
puts 'Dry run - simulation'
|
42
42
|
::Fog.mock!
|
43
43
|
end
|
@@ -95,7 +95,7 @@ module Nanoc::Extra::Deployers
|
|
95
95
|
keys_to_invalidate.concat(keys_to_destroy)
|
96
96
|
cdn = ::Fog::CDN.new(config)
|
97
97
|
# fog cannot mock CDN requests
|
98
|
-
unless
|
98
|
+
unless dry_run?
|
99
99
|
distribution = cdn.get_distribution(cdn_id)
|
100
100
|
# usual limit per invalidation: 1000 objects
|
101
101
|
keys_to_invalidate.each_slice(1000) do |paths|
|
@@ -246,7 +246,7 @@ module Nanoc::Filters
|
|
246
246
|
wrap: '-W',
|
247
247
|
include_style: '-I',
|
248
248
|
line_numbers: '-l',
|
249
|
-
}
|
249
|
+
}.freeze
|
250
250
|
|
251
251
|
# Runs the content through [Highlight](http://www.andre-simon.de/doku/highlight/en/highlight.html).
|
252
252
|
#
|
@@ -347,7 +347,7 @@ module Nanoc::Filters
|
|
347
347
|
|
348
348
|
protected
|
349
349
|
|
350
|
-
KNOWN_COLORIZERS = [:coderay, :dummy, :pygmentize, :pygmentsrb, :simon_highlight, :rouge]
|
350
|
+
KNOWN_COLORIZERS = [:coderay, :dummy, :pygmentize, :pygmentsrb, :simon_highlight, :rouge].freeze
|
351
351
|
|
352
352
|
# Removes the first blank lines and any whitespace at the end.
|
353
353
|
def strip(s)
|
@@ -367,7 +367,7 @@ module Nanoc::Filters
|
|
367
367
|
colorizer = @colorizers[language.to_sym]
|
368
368
|
if KNOWN_COLORIZERS.include?(colorizer)
|
369
369
|
sym = (colorizer.to_s + '_postprocess').to_sym
|
370
|
-
if
|
370
|
+
if respond_to?(sym)
|
371
371
|
send(sym, language, element)
|
372
372
|
end
|
373
373
|
else
|
data/lib/nanoc/filters/less.rb
CHANGED
@@ -15,7 +15,7 @@ module Nanoc::Filters
|
|
15
15
|
imports.concat(content.scan(/^@import\s+(["'])([^\1]+?)\1;/))
|
16
16
|
imports.concat(content.scan(/^@import\s+url\((["']?)([^)]+?)\1\);/))
|
17
17
|
imported_filenames = imports.map do |i|
|
18
|
-
i[1]
|
18
|
+
i[1] =~ /\.(less|css)$/ ? i[1] : i[1] + '.less'
|
19
19
|
end
|
20
20
|
|
21
21
|
# Convert to items
|
@@ -62,11 +62,12 @@ module Nanoc::Filters
|
|
62
62
|
end
|
63
63
|
|
64
64
|
# Create renderer
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
65
|
+
renderer =
|
66
|
+
if renderer_class == ::Redcarpet::Render::HTML_TOC
|
67
|
+
renderer_class.new
|
68
|
+
else
|
69
|
+
renderer_class.new(renderer_options)
|
70
|
+
end
|
70
71
|
|
71
72
|
# Render
|
72
73
|
if with_toc
|
@@ -4,7 +4,7 @@ module Nanoc::Filters
|
|
4
4
|
require 'nanoc/helpers/link_to'
|
5
5
|
include Nanoc::Helpers::LinkTo
|
6
6
|
|
7
|
-
SELECTORS = ['*/@href', '*/@src', 'object/@data', 'param[@name="movie"]/@content', 'comment()']
|
7
|
+
SELECTORS = ['*/@href', '*/@src', 'object/@data', 'param[@name="movie"]/@content', 'comment()'].freeze
|
8
8
|
|
9
9
|
# Relativizes all paths in the given content, which can be HTML, XHTML, XML
|
10
10
|
# or CSS. This filter is quite useful if a site needs to be hosted in a
|
@@ -89,7 +89,7 @@ module Nanoc::Filters
|
|
89
89
|
doc.xpath(selector, namespaces).each do |node|
|
90
90
|
if node.name == 'comment'
|
91
91
|
nokogiri_process_comment(node, doc, selectors, namespaces, klass, type)
|
92
|
-
elsif
|
92
|
+
elsif path_is_relativizable?(node.content)
|
93
93
|
node.content = relative_path_to(node.content)
|
94
94
|
end
|
95
95
|
end
|
@@ -34,7 +34,8 @@ module Nanoc::Helpers
|
|
34
34
|
buffer = eval('_erbout', block.binding)
|
35
35
|
buffer << escaped_data
|
36
36
|
elsif string
|
37
|
-
string
|
37
|
+
string
|
38
|
+
.gsub('&', '&')
|
38
39
|
.gsub('<', '<')
|
39
40
|
.gsub('>', '>')
|
40
41
|
.gsub('"', '"')
|
@@ -44,6 +45,6 @@ module Nanoc::Helpers
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
|
48
|
+
alias h html_escape
|
48
49
|
end
|
49
50
|
end
|
@@ -123,7 +123,7 @@ module Nanoc::Helpers
|
|
123
123
|
end
|
124
124
|
|
125
125
|
# Handle Windows network (UNC) paths
|
126
|
-
if path.start_with?('//'
|
126
|
+
if path.start_with?('//', '\\\\')
|
127
127
|
return path
|
128
128
|
end
|
129
129
|
|
@@ -136,11 +136,12 @@ module Nanoc::Helpers
|
|
136
136
|
|
137
137
|
# Calculate the relative path (method depends on whether destination is
|
138
138
|
# a directory or not).
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
139
|
+
relative_path =
|
140
|
+
if src_path.to_s[-1, 1] != '/'
|
141
|
+
dst_path.relative_path_from(src_path.dirname).to_s
|
142
|
+
else
|
143
|
+
dst_path.relative_path_from(src_path).to_s
|
144
|
+
end
|
144
145
|
|
145
146
|
# Add trailing slash if necessary
|
146
147
|
if dst_path.to_s[-1, 1] == '/'
|
@@ -232,7 +232,7 @@ module Nanoc::RuleDSL
|
|
232
232
|
# include_rules 'rules/assets'
|
233
233
|
# include_rules 'rules/content'
|
234
234
|
def include_rules(name)
|
235
|
-
filename = [
|
235
|
+
filename = [name.to_s, "#{name}.rb", "./#{name}", "./#{name}.rb"].find { |f| File.file?(f) }
|
236
236
|
raise Nanoc::Int::Errors::NoRulesFileFound.new if filename.nil?
|
237
237
|
|
238
238
|
Nanoc::RuleDSL::RulesLoader.new(@config, @rules_collection).parse(filename)
|
data/lib/nanoc/version.rb
CHANGED
data/nanoc.gemspec
CHANGED
@@ -13,9 +13,9 @@ Gem::Specification.new do |s|
|
|
13
13
|
|
14
14
|
s.files =
|
15
15
|
Dir['[A-Z]*'] +
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
Dir['doc/yardoc_{templates,handlers}/**/*'] +
|
17
|
+
Dir['{bin,lib,tasks,test}/**/*'] +
|
18
|
+
['nanoc.gemspec']
|
19
19
|
s.executables = ['nanoc']
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
data/tasks/test.rake
CHANGED
data/test/cli/test_cli.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Nanoc::CLITest < Nanoc::TestCase
|
2
|
-
COMMAND_CODE = <<EOS
|
2
|
+
COMMAND_CODE = <<EOS.freeze
|
3
3
|
usage '_test [options]'
|
4
4
|
summary 'meh'
|
5
5
|
description 'longer meh'
|
@@ -9,7 +9,7 @@ run do |opts, args, cmd|
|
|
9
9
|
end
|
10
10
|
EOS
|
11
11
|
|
12
|
-
SUBCOMMAND_CODE = <<EOS
|
12
|
+
SUBCOMMAND_CODE = <<EOS.freeze
|
13
13
|
usage '_sub [options]'
|
14
14
|
summary 'meh sub'
|
15
15
|
description 'longer meh sub'
|
@@ -25,7 +25,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
25
25
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
26
26
|
check.run
|
27
27
|
|
28
|
-
|
28
|
+
assert_empty check.issues
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -43,7 +43,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
43
43
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
44
44
|
check.run
|
45
45
|
|
46
|
-
|
46
|
+
assert_empty check.issues
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
@@ -61,7 +61,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
61
61
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
62
62
|
check.run
|
63
63
|
|
64
|
-
|
64
|
+
assert_empty check.issues
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -79,7 +79,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
79
79
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
80
80
|
check.run
|
81
81
|
|
82
|
-
|
82
|
+
assert_empty check.issues
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -97,7 +97,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
97
97
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
98
98
|
check.run
|
99
99
|
|
100
|
-
|
100
|
+
assert_empty check.issues
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -115,7 +115,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
115
115
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
116
116
|
check.run
|
117
117
|
|
118
|
-
|
118
|
+
assert_empty check.issues
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
@@ -180,7 +180,7 @@ class Nanoc::Extra::Checking::Checks::MixedContentTest < Nanoc::TestCase
|
|
180
180
|
check = Nanoc::Extra::Checking::Checks::MixedContent.create(site)
|
181
181
|
check.run
|
182
182
|
|
183
|
-
|
183
|
+
assert_empty check.issues
|
184
184
|
end
|
185
185
|
end
|
186
186
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
class Nanoc::Filters::ColorizeSyntaxTest < Nanoc::TestCase
|
2
|
-
CODERAY_PRE = '<div class="CodeRay"><div class="code">'
|
3
|
-
CODERAY_POST = '</div></div>'
|
2
|
+
CODERAY_PRE = '<div class="CodeRay"><div class="code">'.freeze
|
3
|
+
CODERAY_POST = '</div></div>'.freeze
|
4
4
|
|
5
5
|
def test_coderay_simple
|
6
6
|
if_have 'coderay', 'nokogiri' do
|
@@ -56,11 +56,12 @@ class Nanoc::Filters::RedcarpetTest < Nanoc::TestCase
|
|
56
56
|
# Run filter
|
57
57
|
input = ""
|
58
58
|
output_expected = %r{<img src="/path/to/img" alt="Alt" title="Title"/>}
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
output_actual =
|
60
|
+
if ::Redcarpet::VERSION > '2'
|
61
|
+
filter.setup_and_run(input, renderer_options: { xhtml: true })
|
62
|
+
else
|
63
|
+
filter.setup_and_run(input, options: [:xhtml])
|
64
|
+
end
|
64
65
|
assert_match(output_expected, output_actual)
|
65
66
|
end
|
66
67
|
end
|
@@ -17,7 +17,7 @@ class Nanoc::Filters::RedClothTest < Nanoc::TestCase
|
|
17
17
|
|
18
18
|
# Run filter without options
|
19
19
|
result = filter.setup_and_run('I am a member of SPECTRE.')
|
20
|
-
assert_equal(
|
20
|
+
assert_equal('<p>I am a member of <span class="caps">SPECTRE</span>.</p>', result)
|
21
21
|
|
22
22
|
# Run filter with options
|
23
23
|
result = filter.setup_and_run('I am a member of SPECTRE.', no_span_caps: true)
|
data/test/filters/test_xsl.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'tempfile'
|
2
2
|
|
3
3
|
class Nanoc::Filters::XSLTest < Nanoc::TestCase
|
4
|
-
SAMPLE_XSL = <<-EOS
|
4
|
+
SAMPLE_XSL = <<-EOS.freeze
|
5
5
|
<?xml version="1.0" encoding="utf-8"?>
|
6
6
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
7
7
|
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
|
@@ -18,7 +18,7 @@ class Nanoc::Filters::XSLTest < Nanoc::TestCase
|
|
18
18
|
</xsl:stylesheet>
|
19
19
|
EOS
|
20
20
|
|
21
|
-
SAMPLE_XML_IN = <<-EOS
|
21
|
+
SAMPLE_XML_IN = <<-EOS.freeze
|
22
22
|
<?xml version="1.0" encoding="utf-8"?>
|
23
23
|
<report>
|
24
24
|
<title>My Report</title>
|
@@ -27,7 +27,7 @@ EOS
|
|
27
27
|
|
28
28
|
SAMPLE_XML_OUT = %r{\A<\?xml version="1.0" encoding="utf-8"\?>\s*<html>\s*<head>\s*<title>My Report</title>\s*</head>\s*<body>\s*<h1>My Report</h1>\s*</body>\s*</html>\s*\Z}m
|
29
29
|
|
30
|
-
SAMPLE_XSL_WITH_PARAMS = <<-EOS
|
30
|
+
SAMPLE_XSL_WITH_PARAMS = <<-EOS.freeze
|
31
31
|
<?xml version="1.0" encoding="utf-8"?>
|
32
32
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
33
33
|
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
|
@@ -45,7 +45,7 @@ EOS
|
|
45
45
|
</xsl:stylesheet>
|
46
46
|
EOS
|
47
47
|
|
48
|
-
SAMPLE_XML_IN_WITH_PARAMS = <<-EOS
|
48
|
+
SAMPLE_XML_IN_WITH_PARAMS = <<-EOS.freeze
|
49
49
|
<?xml version="1.0" encoding="utf-8"?>
|
50
50
|
<report>
|
51
51
|
<title>My Report</title>
|
@@ -54,7 +54,7 @@ EOS
|
|
54
54
|
|
55
55
|
SAMPLE_XML_OUT_WITH_PARAMS = %r{\A<\?xml version="1.0" encoding="utf-8"\?>\s*<html>\s*<head>\s*<title>My Report</title>\s*</head>\s*<body>\s*<h1>bar</h1>\s*</body>\s*</html>\s*\Z}m
|
56
56
|
|
57
|
-
SAMPLE_XSL_WITH_OMIT_XML_DECL = <<-EOS
|
57
|
+
SAMPLE_XSL_WITH_OMIT_XML_DECL = <<-EOS.freeze
|
58
58
|
<?xml version="1.0" encoding="utf-8"?>
|
59
59
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
60
60
|
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"
|
@@ -72,7 +72,7 @@ EOS
|
|
72
72
|
</xsl:stylesheet>
|
73
73
|
EOS
|
74
74
|
|
75
|
-
SAMPLE_XML_IN_WITH_OMIT_XML_DECL = <<-EOS
|
75
|
+
SAMPLE_XML_IN_WITH_OMIT_XML_DECL = <<-EOS.freeze
|
76
76
|
<?xml version="1.0" encoding="utf-8"?>
|
77
77
|
<report>
|
78
78
|
<title>My Report</title>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cri
|