nanoc 4.0.0 → 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +31 -35
- data/NEWS.md +11 -0
- data/lib/nanoc/base/compilation/compiler.rb +8 -7
- data/lib/nanoc/base/compilation/compiler_dsl.rb +4 -2
- data/lib/nanoc/base/entities/document.rb +2 -5
- data/lib/nanoc/base/entities/identifier.rb +6 -1
- data/lib/nanoc/base/views/item_rep_view.rb +1 -1
- data/lib/nanoc/cli/commands/check.rb +4 -2
- data/lib/nanoc/cli/commands/create-site.rb +4 -2
- data/lib/nanoc/cli/commands/deploy.rb +2 -2
- data/lib/nanoc/cli/commands/show-plugins.rb +2 -2
- data/lib/nanoc/cli/error_handler.rb +6 -6
- data/lib/nanoc/cli/logger.rb +5 -2
- data/lib/nanoc/data_sources/filesystem.rb +1 -1
- data/lib/nanoc/extra/checking/checks/internal_links.rb +1 -1
- data/lib/nanoc/extra/deployers/fog.rb +1 -1
- data/lib/nanoc/extra/filesystem_tools.rb +4 -2
- data/lib/nanoc/filters/colorize_syntax.rb +3 -3
- data/lib/nanoc/filters/rdiscount.rb +1 -1
- data/lib/nanoc/filters/sass.rb +2 -2
- data/lib/nanoc/filters/slim.rb +1 -1
- data/lib/nanoc/helpers/link_to.rb +2 -2
- data/lib/nanoc/version.rb +1 -1
- data/tasks/rubocop.rake +1 -1
- data/test/base/test_directed_graph.rb +4 -4
- data/test/base/test_outdatedness_checker.rb +11 -22
- data/test/cli/commands/test_compile.rb +1 -2
- data/test/data_sources/test_filesystem.rb +1 -1
- data/test/data_sources/test_filesystem_unified.rb +2 -2
- data/test/extra/checking/checks/test_css.rb +5 -4
- data/test/extra/checking/checks/test_stale.rb +1 -1
- data/test/filters/test_erb.rb +2 -2
- data/test/filters/test_relativize_paths.rb +3 -2
- data/test/filters/test_xsl.rb +6 -18
- data/test/helper.rb +14 -6
- data/test/helpers/test_blogging.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4aaeac805ae4631f3075442c8fa2382ae42085a
|
4
|
+
data.tar.gz: d7b42a8044e1ff67765bb93383e1951963cc2593
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb371cfa1c4843698736980aac9b42a914732bc8e04c6af2e022548aa220c9071ff05223b47e83cf547af07d586ceffb264648aa6deec7fe232fcc852939c9c7
|
7
|
+
data.tar.gz: 4e55855d72a97dfc6bc7eaeb620e6139e9a5254ca68ab727a61244e7883f7bebd506ceb39addba87a078c47c439dcc510581cd5f5262235e3c0834876ffd4407
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nanoc (4.0.
|
4
|
+
nanoc (4.0.1)
|
5
5
|
cri (~> 2.3)
|
6
6
|
|
7
7
|
GEM
|
@@ -22,19 +22,20 @@ GEM
|
|
22
22
|
coffee-script (2.4.1)
|
23
23
|
coffee-script-source
|
24
24
|
execjs
|
25
|
-
coffee-script-source (1.
|
25
|
+
coffee-script-source (1.10.0)
|
26
26
|
colored (1.2)
|
27
27
|
commonjs (0.2.7)
|
28
28
|
compass (0.12.7)
|
29
29
|
chunky_png (~> 1.2)
|
30
30
|
fssm (>= 0.2.7)
|
31
31
|
sass (~> 3.2.19)
|
32
|
-
coveralls (0.8.
|
32
|
+
coveralls (0.8.9)
|
33
33
|
json (~> 1.8)
|
34
34
|
rest-client (>= 1.6.8, < 2)
|
35
35
|
simplecov (~> 0.10.0)
|
36
36
|
term-ansicolor (~> 1.3)
|
37
37
|
thor (~> 0.19.1)
|
38
|
+
tins (~> 1.6.0)
|
38
39
|
crack (0.4.2)
|
39
40
|
safe_yaml (~> 1.0.0)
|
40
41
|
cri (2.7.0)
|
@@ -49,15 +50,15 @@ GEM
|
|
49
50
|
ffi (1.9.10)
|
50
51
|
fission (0.5.0)
|
51
52
|
CFPropertyList (~> 2.2)
|
52
|
-
fog (1.
|
53
|
-
fog-aliyun
|
53
|
+
fog (1.36.0)
|
54
|
+
fog-aliyun (>= 0.1.0)
|
54
55
|
fog-atmos
|
55
56
|
fog-aws (>= 0.6.0)
|
56
57
|
fog-brightbox (~> 0.4)
|
57
58
|
fog-core (~> 1.32)
|
58
59
|
fog-dynect (~> 0.0.2)
|
59
60
|
fog-ecloud (~> 0.1)
|
60
|
-
fog-google (
|
61
|
+
fog-google (<= 0.1.0)
|
61
62
|
fog-json
|
62
63
|
fog-local
|
63
64
|
fog-powerdns (>= 0.1.1)
|
@@ -74,7 +75,7 @@ GEM
|
|
74
75
|
fog-xenserver
|
75
76
|
fog-xml (~> 0.1.1)
|
76
77
|
ipaddress (~> 0.5)
|
77
|
-
nokogiri
|
78
|
+
nokogiri (~> 1.5, >= 1.5.11)
|
78
79
|
fog-aliyun (0.1.0)
|
79
80
|
fog-core (~> 1.27)
|
80
81
|
fog-json (~> 1.0)
|
@@ -92,13 +93,10 @@ GEM
|
|
92
93
|
fog-core (~> 1.22)
|
93
94
|
fog-json
|
94
95
|
inflecto (~> 0.0.2)
|
95
|
-
fog-core (1.
|
96
|
+
fog-core (1.35.0)
|
96
97
|
builder
|
97
98
|
excon (~> 0.45)
|
98
99
|
formatador (~> 0.2)
|
99
|
-
mime-types
|
100
|
-
net-scp (~> 1.1)
|
101
|
-
net-ssh (>= 2.1.3)
|
102
100
|
fog-dynect (0.0.2)
|
103
101
|
fog-core
|
104
102
|
fog-json
|
@@ -106,7 +104,7 @@ GEM
|
|
106
104
|
fog-ecloud (0.3.0)
|
107
105
|
fog-core
|
108
106
|
fog-xml
|
109
|
-
fog-google (0.1.
|
107
|
+
fog-google (0.1.0)
|
110
108
|
fog-core
|
111
109
|
fog-json
|
112
110
|
fog-xml
|
@@ -131,7 +129,7 @@ GEM
|
|
131
129
|
fog-core
|
132
130
|
fog-json
|
133
131
|
fog-xml
|
134
|
-
fog-sakuracloud (1.
|
132
|
+
fog-sakuracloud (1.4.0)
|
135
133
|
fog-core
|
136
134
|
fog-json
|
137
135
|
fog-serverlove (0.1.2)
|
@@ -176,7 +174,7 @@ GEM
|
|
176
174
|
less (2.6.0)
|
177
175
|
commonjs (~> 0.2.7)
|
178
176
|
libv8 (3.16.14.13)
|
179
|
-
listen (3.0.
|
177
|
+
listen (3.0.5)
|
180
178
|
rb-fsevent (>= 0.9.3)
|
181
179
|
rb-inotify (>= 0.9)
|
182
180
|
markaby (0.8.0)
|
@@ -184,18 +182,15 @@ GEM
|
|
184
182
|
maruku (0.7.2)
|
185
183
|
metaclass (0.0.4)
|
186
184
|
method_source (0.8.2)
|
187
|
-
mime-types (2.
|
185
|
+
mime-types (2.99)
|
188
186
|
mini_portile (0.6.2)
|
189
|
-
minitest (5.8.
|
187
|
+
minitest (5.8.3)
|
190
188
|
mocha (1.1.0)
|
191
189
|
metaclass (~> 0.0.1)
|
192
190
|
multi_json (1.11.2)
|
193
191
|
mustache (1.0.2)
|
194
|
-
net-scp (1.2.1)
|
195
|
-
net-ssh (>= 2.6.5)
|
196
|
-
net-ssh (3.0.1)
|
197
192
|
netrc (0.11.0)
|
198
|
-
nokogiri (1.6.6.
|
193
|
+
nokogiri (1.6.6.4)
|
199
194
|
mini_portile (~> 0.6.0)
|
200
195
|
pandoc-ruby (1.0.0)
|
201
196
|
parser (2.2.3.0)
|
@@ -225,25 +220,26 @@ GEM
|
|
225
220
|
mime-types (>= 1.16, < 3.0)
|
226
221
|
netrc (~> 0.7)
|
227
222
|
rouge (1.10.1)
|
228
|
-
rspec (3.
|
229
|
-
rspec-core (~> 3.
|
230
|
-
rspec-expectations (~> 3.
|
231
|
-
rspec-mocks (~> 3.
|
232
|
-
rspec-core (3.
|
233
|
-
rspec-support (~> 3.
|
234
|
-
rspec-expectations (3.
|
223
|
+
rspec (3.4.0)
|
224
|
+
rspec-core (~> 3.4.0)
|
225
|
+
rspec-expectations (~> 3.4.0)
|
226
|
+
rspec-mocks (~> 3.4.0)
|
227
|
+
rspec-core (3.4.1)
|
228
|
+
rspec-support (~> 3.4.0)
|
229
|
+
rspec-expectations (3.4.0)
|
235
230
|
diff-lcs (>= 1.2.0, < 2.0)
|
236
|
-
rspec-support (~> 3.
|
237
|
-
rspec-mocks (3.
|
231
|
+
rspec-support (~> 3.4.0)
|
232
|
+
rspec-mocks (3.4.0)
|
238
233
|
diff-lcs (>= 1.2.0, < 2.0)
|
239
|
-
rspec-support (~> 3.
|
240
|
-
rspec-support (3.
|
241
|
-
rubocop (0.
|
234
|
+
rspec-support (~> 3.4.0)
|
235
|
+
rspec-support (3.4.1)
|
236
|
+
rubocop (0.35.1)
|
242
237
|
astrolabe (~> 1.3)
|
243
|
-
parser (>= 2.2.
|
238
|
+
parser (>= 2.2.3.0, < 3.0)
|
244
239
|
powerpack (~> 0.1)
|
245
240
|
rainbow (>= 1.99.1, < 3.0)
|
246
|
-
ruby-progressbar (~> 1.
|
241
|
+
ruby-progressbar (~> 1.7)
|
242
|
+
tins (<= 1.6.0)
|
247
243
|
ruby-progressbar (1.7.5)
|
248
244
|
rubypants (0.2.0)
|
249
245
|
safe_yaml (1.0.4)
|
@@ -326,7 +322,7 @@ DEPENDENCIES
|
|
326
322
|
redcarpet
|
327
323
|
rouge
|
328
324
|
rspec
|
329
|
-
rubocop
|
325
|
+
rubocop
|
330
326
|
rubypants
|
331
327
|
sass (~> 3.2.2)
|
332
328
|
simplecov
|
data/NEWS.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Nanoc news
|
2
2
|
|
3
|
+
## 4.0.1 (2015-11-28)
|
4
|
+
|
5
|
+
Fixes:
|
6
|
+
|
7
|
+
* Fixed params documentation for :rdiscount filter (#722)
|
8
|
+
* Fixed crash when comparing item rep views (#735, #738)
|
9
|
+
|
10
|
+
Enhancements:
|
11
|
+
|
12
|
+
* Lowered minimum required Ruby version from 2.2 to 2.1 (#732)
|
13
|
+
|
3
14
|
## 4.0.0 (2015-11-07)
|
4
15
|
|
5
16
|
Enhancements:
|
@@ -275,7 +275,7 @@ module Nanoc::Int
|
|
275
275
|
end
|
276
276
|
|
277
277
|
# TODO: Do not expose @site (necessary for captures store though…)
|
278
|
-
content_or_filename_assigns.merge(
|
278
|
+
content_or_filename_assigns.merge(
|
279
279
|
item: Nanoc::ItemView.new(rep.item),
|
280
280
|
rep: Nanoc::ItemRepView.new(rep),
|
281
281
|
item_rep: Nanoc::ItemRepView.new(rep),
|
@@ -283,7 +283,7 @@ module Nanoc::Int
|
|
283
283
|
layouts: Nanoc::LayoutCollectionView.new(site.layouts),
|
284
284
|
config: Nanoc::ConfigView.new(site.config),
|
285
285
|
site: Nanoc::SiteView.new(site),
|
286
|
-
|
286
|
+
)
|
287
287
|
end
|
288
288
|
|
289
289
|
# @return [Nanoc::Int::OutdatednessChecker] The outdatedness checker
|
@@ -291,7 +291,8 @@ module Nanoc::Int
|
|
291
291
|
Nanoc::Int::OutdatednessChecker.new(
|
292
292
|
site: @site,
|
293
293
|
checksum_store: checksum_store,
|
294
|
-
dependency_tracker: dependency_tracker
|
294
|
+
dependency_tracker: dependency_tracker,
|
295
|
+
)
|
295
296
|
end
|
296
297
|
memoize :outdatedness_checker
|
297
298
|
|
@@ -325,7 +326,7 @@ module Nanoc::Int
|
|
325
326
|
|
326
327
|
# Listen to processing start/stop
|
327
328
|
Nanoc::Int::NotificationCenter.on(:processing_started, self) { |obj| @stack.push(obj) }
|
328
|
-
Nanoc::Int::NotificationCenter.on(:processing_ended, self) { |_obj| @stack.pop
|
329
|
+
Nanoc::Int::NotificationCenter.on(:processing_ended, self) { |_obj| @stack.pop }
|
329
330
|
|
330
331
|
# Assign snapshots
|
331
332
|
reps.each do |rep|
|
@@ -402,7 +403,7 @@ module Nanoc::Int
|
|
402
403
|
Nanoc::Int::NotificationCenter.post(:compilation_failed, rep, e)
|
403
404
|
raise e
|
404
405
|
ensure
|
405
|
-
Nanoc::Int::NotificationCenter.post(:visit_ended,
|
406
|
+
Nanoc::Int::NotificationCenter.post(:visit_ended, rep.item)
|
406
407
|
end
|
407
408
|
|
408
409
|
# Clears the list of dependencies for items that will be recompiled.
|
@@ -421,11 +422,11 @@ module Nanoc::Int
|
|
421
422
|
|
422
423
|
# Returns a preprocessor context, creating one if none exists yet.
|
423
424
|
def preprocessor_context
|
424
|
-
Nanoc::Int::Context.new(
|
425
|
+
Nanoc::Int::Context.new(
|
425
426
|
config: Nanoc::MutableConfigView.new(@site.config),
|
426
427
|
items: Nanoc::MutableItemCollectionView.new(@site.items),
|
427
428
|
layouts: Nanoc::MutableLayoutCollectionView.new(@site.layouts),
|
428
|
-
|
429
|
+
)
|
429
430
|
end
|
430
431
|
memoize :preprocessor_context
|
431
432
|
|
@@ -266,8 +266,10 @@ module Nanoc::Int
|
|
266
266
|
when 'legacy'
|
267
267
|
Nanoc::Int::Pattern.from(identifier_to_regex(arg))
|
268
268
|
else
|
269
|
-
raise
|
270
|
-
|
269
|
+
raise(
|
270
|
+
Nanoc::Int::Errors::GenericTrivial,
|
271
|
+
"Invalid string_pattern_type: #{@config[:string_pattern_type]}",
|
272
|
+
)
|
271
273
|
end
|
272
274
|
end
|
273
275
|
|
@@ -44,13 +44,10 @@ module Nanoc
|
|
44
44
|
self.class.hash ^ identifier.hash
|
45
45
|
end
|
46
46
|
|
47
|
-
def eql?(other)
|
48
|
-
self.class == other.class && identifier == other.identifier
|
49
|
-
end
|
50
|
-
|
51
47
|
def ==(other)
|
52
|
-
|
48
|
+
other.respond_to?(:identifier) && identifier == other.identifier
|
53
49
|
end
|
50
|
+
alias_method :eql?, :==
|
54
51
|
end
|
55
52
|
end
|
56
53
|
end
|
@@ -39,8 +39,10 @@ module Nanoc::CLI::Commands
|
|
39
39
|
|
40
40
|
def validate_options_and_arguments
|
41
41
|
if arguments.empty? && !options[:all] && !options[:deploy] && !options[:list]
|
42
|
-
raise
|
43
|
-
|
42
|
+
raise(
|
43
|
+
Nanoc::Int::Errors::GenericTrivial,
|
44
|
+
'nothing to do (pass either --all, --deploy or --list or a list of checks)',
|
45
|
+
)
|
44
46
|
end
|
45
47
|
end
|
46
48
|
end
|
@@ -290,9 +290,11 @@ EOS
|
|
290
290
|
|
291
291
|
# Check whether site exists
|
292
292
|
if File.exist?(path) && (!File.directory?(path) || !(Dir.entries(path) - %w(. ..)).empty?) && !options[:force]
|
293
|
-
raise
|
293
|
+
raise(
|
294
|
+
Nanoc::Int::Errors::GenericTrivial,
|
294
295
|
"The site was not created because '#{path}' already exists. " \
|
295
|
-
'Re-run the command using --force to create the site anyway.'
|
296
|
+
'Re-run the command using --force to create the site anyway.',
|
297
|
+
)
|
296
298
|
end
|
297
299
|
|
298
300
|
# Setup notifications
|
@@ -4,11 +4,11 @@ description "
|
|
4
4
|
Deploys the compiled site. The compiled site contents in the output directory will be uploaded to the destination, which is specified using the `--target` option.
|
5
5
|
"
|
6
6
|
|
7
|
-
option :t, :target,
|
7
|
+
option :t, :target, 'specify the location to deploy to (default: `default`)', argument: :required
|
8
8
|
flag :C, :'no-check', 'do not run the issue checks marked for deployment'
|
9
9
|
flag :L, :list, 'list available locations to deploy to'
|
10
10
|
flag :D, :'list-deployers', 'list available deployers'
|
11
|
-
option :n, :'dry-run',
|
11
|
+
option :n, :'dry-run', 'show what would be deployed'
|
12
12
|
|
13
13
|
module Nanoc::CLI::Commands
|
14
14
|
class Deploy < ::Nanoc::CLI::CommandRunner
|
@@ -17,7 +17,7 @@ module Nanoc::CLI::Commands
|
|
17
17
|
# Get list of plugins (before and after)
|
18
18
|
plugins_before = Nanoc::Int::PluginRegistry.instance.all
|
19
19
|
site.code_snippets if site
|
20
|
-
plugins_after
|
20
|
+
plugins_after = Nanoc::Int::PluginRegistry.instance.all
|
21
21
|
|
22
22
|
# Divide list of plugins into builtin and custom
|
23
23
|
plugins_builtin = plugins_before
|
@@ -32,7 +32,7 @@ module Nanoc::CLI::Commands
|
|
32
32
|
PLUGIN_CLASS_ORDER.each do |superclass|
|
33
33
|
plugins_with_this_superclass = {
|
34
34
|
builtin: plugins_builtin.select { |p| p[:superclass] == superclass },
|
35
|
-
custom: plugins_custom.select
|
35
|
+
custom: plugins_custom.select { |p| p[:superclass] == superclass },
|
36
36
|
}
|
37
37
|
|
38
38
|
# Print kind
|
@@ -135,12 +135,12 @@ module Nanoc::CLI
|
|
135
135
|
write_error_message(stream, error, verbose: true)
|
136
136
|
write_compilation_stack(stream, error, verbose: true)
|
137
137
|
write_stack_trace(stream, error, verbose: true)
|
138
|
-
write_version_information(stream,
|
139
|
-
write_system_information(stream,
|
140
|
-
write_installed_gems(stream,
|
141
|
-
write_environment(stream,
|
142
|
-
write_gemfile_lock(stream,
|
143
|
-
write_load_paths(stream,
|
138
|
+
write_version_information(stream, verbose: true)
|
139
|
+
write_system_information(stream, verbose: true)
|
140
|
+
write_installed_gems(stream, verbose: true)
|
141
|
+
write_environment(stream, verbose: true)
|
142
|
+
write_gemfile_lock(stream, verbose: true)
|
143
|
+
write_load_paths(stream, verbose: true)
|
144
144
|
end
|
145
145
|
|
146
146
|
protected
|
data/lib/nanoc/cli/logger.rb
CHANGED
@@ -41,12 +41,15 @@ module Nanoc::CLI
|
|
41
41
|
def file(level, action, name, duration = nil)
|
42
42
|
log(
|
43
43
|
level,
|
44
|
-
format(
|
44
|
+
format(
|
45
|
+
'%s%12s%s %s%s',
|
45
46
|
ACTION_COLORS[action.to_sym],
|
46
47
|
action,
|
47
48
|
"\e[0m",
|
48
49
|
duration.nil? ? '' : format('[%2.2fs] ', duration),
|
49
|
-
name
|
50
|
+
name,
|
51
|
+
)
|
52
|
+
)
|
50
53
|
end
|
51
54
|
|
52
55
|
# Logs a message.
|
@@ -65,7 +65,7 @@ module Nanoc::Extra::Checking::Checks
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def excluded?(href)
|
68
|
-
excludes =
|
68
|
+
excludes = @config.fetch(:checks, {}).fetch(:internal_links, {}).fetch(:exclude, [])
|
69
69
|
excludes.any? { |pattern| Regexp.new(pattern).match(href) }
|
70
70
|
end
|
71
71
|
end
|
@@ -100,8 +100,10 @@ module Nanoc::Extra
|
|
100
100
|
when Array
|
101
101
|
patterns.concat(extra_files.map { |extra_file| "#{dir_name}/#{extra_file}" })
|
102
102
|
else
|
103
|
-
raise
|
104
|
-
|
103
|
+
raise(
|
104
|
+
Nanoc::Int::Errors::GenericTrivial,
|
105
|
+
"Do not know how to handle extra_files: #{extra_files.inspect}",
|
106
|
+
)
|
105
107
|
end
|
106
108
|
Dir.glob(patterns)
|
107
109
|
end
|
@@ -243,9 +243,9 @@ module Nanoc::Filters
|
|
243
243
|
end
|
244
244
|
|
245
245
|
SIMON_HIGHLIGHT_OPT_MAP = {
|
246
|
-
|
247
|
-
|
248
|
-
|
246
|
+
wrap: '-W',
|
247
|
+
include_style: '-I',
|
248
|
+
line_numbers: '-l',
|
249
249
|
}
|
250
250
|
|
251
251
|
# Runs the content through [Highlight](http://www.andre-simon.de/doku/highlight/en/highlight.html).
|
@@ -5,7 +5,7 @@ module Nanoc::Filters
|
|
5
5
|
|
6
6
|
# Runs the content through [RDiscount](http://github.com/rtomayko/rdiscount).
|
7
7
|
#
|
8
|
-
# @option params [Array] :
|
8
|
+
# @option params [Array] :extensions ([]) A list of RDiscount extensions
|
9
9
|
#
|
10
10
|
# @param [String] content The content to filter
|
11
11
|
#
|
data/lib/nanoc/filters/sass.rb
CHANGED
@@ -10,10 +10,10 @@ module Nanoc::Filters
|
|
10
10
|
#
|
11
11
|
# @return [String] The filtered content
|
12
12
|
def run(content, params = {})
|
13
|
-
options = params.merge(
|
13
|
+
options = params.merge(
|
14
14
|
nanoc_current_filter: self,
|
15
15
|
filename: @item && @item.raw_filename,
|
16
|
-
|
16
|
+
)
|
17
17
|
engine = ::Sass::Engine.new(content, options)
|
18
18
|
engine.render
|
19
19
|
end
|
data/lib/nanoc/filters/slim.rb
CHANGED
@@ -13,7 +13,7 @@ module Nanoc::Filters
|
|
13
13
|
# @return [String] The filtered content
|
14
14
|
def run(content, params = {})
|
15
15
|
params = {
|
16
|
-
disable_capture: true,
|
16
|
+
disable_capture: true, # Capture managed by Nanoc
|
17
17
|
buffer: '_erbout', # Force slim to output to the buffer used by Nanoc
|
18
18
|
}.merge params
|
19
19
|
|
@@ -128,11 +128,11 @@ module Nanoc::Helpers
|
|
128
128
|
end
|
129
129
|
|
130
130
|
# Get source and destination paths
|
131
|
-
dst_path
|
131
|
+
dst_path = Pathname.new(path)
|
132
132
|
if @item_rep.path.nil?
|
133
133
|
raise "Cannot get the relative path to #{path} because the current item representation, #{@item_rep.inspect}, is not outputted (its routing rule returns nil)"
|
134
134
|
end
|
135
|
-
src_path
|
135
|
+
src_path = Pathname.new(@item_rep.path)
|
136
136
|
|
137
137
|
# Calculate the relative path (method depends on whether destination is
|
138
138
|
# a directory or not).
|
data/lib/nanoc/version.rb
CHANGED
data/tasks/rubocop.rake
CHANGED
@@ -4,7 +4,7 @@ class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
|
|
4
4
|
graph.add_edge(1, 2)
|
5
5
|
graph.add_edge(2, 3)
|
6
6
|
|
7
|
-
assert_equal [],
|
7
|
+
assert_equal [], graph.direct_predecessors_of(1)
|
8
8
|
assert_equal [1], graph.direct_predecessors_of(2)
|
9
9
|
assert_equal [2], graph.direct_predecessors_of(3)
|
10
10
|
end
|
@@ -14,7 +14,7 @@ class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
|
|
14
14
|
graph.add_edge(1, 2)
|
15
15
|
graph.add_edge(2, 3)
|
16
16
|
|
17
|
-
assert_equal [],
|
17
|
+
assert_equal [], graph.predecessors_of(1).sort
|
18
18
|
assert_equal [1], graph.predecessors_of(2).sort
|
19
19
|
assert_equal [1, 2], graph.predecessors_of(3).sort
|
20
20
|
end
|
@@ -26,7 +26,7 @@ class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
|
|
26
26
|
|
27
27
|
assert_equal [2], graph.direct_successors_of(1)
|
28
28
|
assert_equal [3], graph.direct_successors_of(2)
|
29
|
-
assert_equal [],
|
29
|
+
assert_equal [], graph.direct_successors_of(3)
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_successors
|
@@ -36,7 +36,7 @@ class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
|
|
36
36
|
|
37
37
|
assert_equal [2, 3], graph.successors_of(1).sort
|
38
38
|
assert_equal [3], graph.successors_of(2).sort
|
39
|
-
assert_equal [],
|
39
|
+
assert_equal [], graph.successors_of(3).sort
|
40
40
|
end
|
41
41
|
|
42
42
|
def test_edges
|
@@ -40,8 +40,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
40
40
|
site.compiler.load
|
41
41
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
42
42
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
43
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::NotEnoughData,
|
44
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
43
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::NotEnoughData, outdatedness_checker.outdatedness_reason_for(rep)
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
@@ -66,8 +65,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
66
65
|
site.compiler.load
|
67
66
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
68
67
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
69
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::NotWritten,
|
70
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
68
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::NotWritten, outdatedness_checker.outdatedness_reason_for(rep)
|
71
69
|
end
|
72
70
|
end
|
73
71
|
|
@@ -93,8 +91,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
93
91
|
site.compiler.load
|
94
92
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
95
93
|
rep = site.items.find { |i| i.identifier == '/new/' }.reps[0]
|
96
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::SourceModified,
|
97
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
94
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::SourceModified, outdatedness_checker.outdatedness_reason_for(rep)
|
98
95
|
end
|
99
96
|
end
|
100
97
|
|
@@ -121,8 +118,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
121
118
|
|
122
119
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
123
120
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
124
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated,
|
125
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
121
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated, outdatedness_checker.outdatedness_reason_for(rep)
|
126
122
|
end
|
127
123
|
end
|
128
124
|
|
@@ -155,8 +151,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
155
151
|
|
156
152
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
157
153
|
rep = site.items.find { |i| i.identifier == '/a/' }.reps[0]
|
158
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated,
|
159
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
154
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated, outdatedness_checker.outdatedness_reason_for(rep)
|
160
155
|
end
|
161
156
|
end
|
162
157
|
|
@@ -192,8 +187,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
192
187
|
|
193
188
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
194
189
|
rep = site.items.find { |i| i.identifier == '/a/' }.reps[0]
|
195
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated,
|
196
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
190
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated, outdatedness_checker.outdatedness_reason_for(rep)
|
197
191
|
end
|
198
192
|
end
|
199
193
|
|
@@ -226,8 +220,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
226
220
|
|
227
221
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
228
222
|
rep = site.items.find { |i| i.identifier == '/a/' }.reps[0]
|
229
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated,
|
230
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
223
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated, outdatedness_checker.outdatedness_reason_for(rep)
|
231
224
|
end
|
232
225
|
end
|
233
226
|
|
@@ -262,8 +255,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
262
255
|
|
263
256
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
264
257
|
rep = site.items.find { |i| i.identifier == '/a/' }.reps[0]
|
265
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated,
|
266
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
258
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::DependenciesOutdated, outdatedness_checker.outdatedness_reason_for(rep)
|
267
259
|
end
|
268
260
|
end
|
269
261
|
|
@@ -289,8 +281,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
289
281
|
site.compiler.load
|
290
282
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
291
283
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
292
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::CodeSnippetsModified,
|
293
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
284
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::CodeSnippetsModified, outdatedness_checker.outdatedness_reason_for(rep)
|
294
285
|
end
|
295
286
|
end
|
296
287
|
|
@@ -321,8 +312,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
321
312
|
site.compiler.load
|
322
313
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
323
314
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
324
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::ConfigurationModified,
|
325
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
315
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::ConfigurationModified, outdatedness_checker.outdatedness_reason_for(rep)
|
326
316
|
end
|
327
317
|
end
|
328
318
|
|
@@ -389,8 +379,7 @@ class Nanoc::Int::OutdatednessCheckerTest < Nanoc::TestCase
|
|
389
379
|
site.compiler.load
|
390
380
|
outdatedness_checker = site.compiler.send :outdatedness_checker
|
391
381
|
rep = site.items.find { |i| i.identifier == '/' }.reps[0]
|
392
|
-
assert_equal ::Nanoc::Int::OutdatednessReasons::RulesModified,
|
393
|
-
outdatedness_checker.outdatedness_reason_for(rep)
|
382
|
+
assert_equal ::Nanoc::Int::OutdatednessReasons::RulesModified, outdatedness_checker.outdatedness_reason_for(rep)
|
394
383
|
end
|
395
384
|
end
|
396
385
|
|
@@ -121,8 +121,7 @@ class Nanoc::CLI::Commands::CompileTest < Nanoc::TestCase
|
|
121
121
|
assert File.file?('output/stray.html')
|
122
122
|
Nanoc::CLI.run %w( compile )
|
123
123
|
refute File.file?('output/stray.html')
|
124
|
-
assert File.directory?('output/excluded_dir'),
|
125
|
-
'excluded_dir should still be there'
|
124
|
+
assert File.directory?('output/excluded_dir'), 'excluded_dir should still be there'
|
126
125
|
end
|
127
126
|
end
|
128
127
|
|
@@ -449,7 +449,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
|
|
449
449
|
# Parse it
|
450
450
|
result = data_source.instance_eval { parse('test.html', 'test.yaml', 'foobar') }
|
451
451
|
assert_equal({ 'foo' => 'bar' }, result[0])
|
452
|
-
assert_equal('blah blah',
|
452
|
+
assert_equal('blah blah', result[1])
|
453
453
|
end
|
454
454
|
|
455
455
|
def test_parse_internal_bad_metadata
|
@@ -41,12 +41,12 @@ class Nanoc::DataSources::FilesystemUnifiedTest < Nanoc::TestCase
|
|
41
41
|
expected_out = [
|
42
42
|
klass.new(
|
43
43
|
'test 1',
|
44
|
-
{ 'num' => 1, :filename => 'foo/bar.html',
|
44
|
+
{ 'num' => 1, :filename => 'foo/bar.html', :extension => 'html', mtime: File.mtime('foo/bar.html') },
|
45
45
|
'/bar/',
|
46
46
|
),
|
47
47
|
klass.new(
|
48
48
|
'test 2',
|
49
|
-
{ 'num' => 2, :filename => 'foo/b.c.html',
|
49
|
+
{ 'num' => 2, :filename => 'foo/b.c.html', :extension => 'c.html', mtime: File.mtime('foo/b.c.html') },
|
50
50
|
'/b/',
|
51
51
|
),
|
52
52
|
klass.new(
|
@@ -32,8 +32,10 @@ class Nanoc::Extra::Checking::Checks::CSSTest < Nanoc::TestCase
|
|
32
32
|
# Check
|
33
33
|
refute check.issues.empty?
|
34
34
|
assert_equal 1, check.issues.size
|
35
|
-
assert_equal
|
36
|
-
|
35
|
+
assert_equal(
|
36
|
+
'line 1: Property coxlor doesn\'t exist: h1 { coxlor: rxed; }',
|
37
|
+
check.issues.to_a[0].description,
|
38
|
+
)
|
37
39
|
end
|
38
40
|
end
|
39
41
|
end
|
@@ -53,8 +55,7 @@ class Nanoc::Extra::Checking::Checks::CSSTest < Nanoc::TestCase
|
|
53
55
|
# Check
|
54
56
|
refute check.issues.empty?
|
55
57
|
assert_equal 1, check.issues.size
|
56
|
-
assert_equal 'line 1: Parse Error: h1 { ; {',
|
57
|
-
check.issues.to_a[0].description
|
58
|
+
assert_equal 'line 1: Parse Error: h1 { ; {', check.issues.to_a[0].description
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -6,7 +6,7 @@ class Nanoc::Extra::Checking::Checks::StaleTest < Nanoc::TestCase
|
|
6
6
|
def calc_issues
|
7
7
|
site = Nanoc::Int::SiteLoader.new.new_from_cwd
|
8
8
|
runner = Nanoc::Extra::Checking::Runner.new(site)
|
9
|
-
|
9
|
+
runner.run_checks([check_class])
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_run_ok
|
data/test/filters/test_erb.rb
CHANGED
@@ -25,11 +25,11 @@ class Nanoc::Filters::ERBTest < Nanoc::TestCase
|
|
25
25
|
item_rep.expect(:name, :quux)
|
26
26
|
|
27
27
|
# Create filter
|
28
|
-
filter = ::Nanoc::Filters::ERB.new(
|
28
|
+
filter = ::Nanoc::Filters::ERB.new(
|
29
29
|
item: item,
|
30
30
|
item_rep: item_rep,
|
31
31
|
location: 'a cheap motel',
|
32
|
-
|
32
|
+
)
|
33
33
|
|
34
34
|
# Run filter
|
35
35
|
raised = false
|
@@ -562,11 +562,12 @@ XML
|
|
562
562
|
</foo>
|
563
563
|
XML
|
564
564
|
|
565
|
-
|
565
|
+
options = {
|
566
566
|
type: :xml,
|
567
567
|
namespaces: { ex: 'http://example.org' },
|
568
568
|
select: ['ex:a/@href'],
|
569
|
-
}
|
569
|
+
}
|
570
|
+
actual_content = filter.setup_and_run(raw_content, options)
|
570
571
|
|
571
572
|
assert_match(/<foo xmlns="http:\/\/example.org">/, actual_content)
|
572
573
|
assert_match(/<bar><a href="..\/..">baz<\/a><\/bar>/, actual_content)
|
data/test/filters/test_xsl.rb
CHANGED
@@ -84,13 +84,9 @@ EOS
|
|
84
84
|
def test_filter_as_layout
|
85
85
|
if_have 'nokogiri' do
|
86
86
|
# Create our data objects
|
87
|
-
item = Nanoc::Int::Item.new(SAMPLE_XML_IN,
|
88
|
-
{},
|
89
|
-
'/content/')
|
87
|
+
item = Nanoc::Int::Item.new(SAMPLE_XML_IN, {}, '/content/')
|
90
88
|
item = Nanoc::ItemView.new(item)
|
91
|
-
layout = Nanoc::Int::Layout.new(SAMPLE_XSL,
|
92
|
-
{},
|
93
|
-
'/layout/')
|
89
|
+
layout = Nanoc::Int::Layout.new(SAMPLE_XSL, {}, '/layout/')
|
94
90
|
layout = Nanoc::LayoutView.new(layout)
|
95
91
|
|
96
92
|
# Create an instance of the filter
|
@@ -110,13 +106,9 @@ EOS
|
|
110
106
|
def test_filter_with_params
|
111
107
|
if_have 'nokogiri' do
|
112
108
|
# Create our data objects
|
113
|
-
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_PARAMS,
|
114
|
-
{},
|
115
|
-
'/content/')
|
109
|
+
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_PARAMS, {}, '/content/')
|
116
110
|
item = Nanoc::ItemView.new(item)
|
117
|
-
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_PARAMS,
|
118
|
-
{},
|
119
|
-
'/layout/')
|
111
|
+
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_PARAMS, {}, '/layout/')
|
120
112
|
layout = Nanoc::LayoutView.new(layout)
|
121
113
|
|
122
114
|
# Create an instance of the filter
|
@@ -137,13 +129,9 @@ EOS
|
|
137
129
|
def test_filter_with_omit_xml_decl
|
138
130
|
if_have 'nokogiri' do
|
139
131
|
# Create our data objects
|
140
|
-
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_OMIT_XML_DECL,
|
141
|
-
{},
|
142
|
-
'/content/')
|
132
|
+
item = Nanoc::Int::Item.new(SAMPLE_XML_IN_WITH_OMIT_XML_DECL, {}, '/content/')
|
143
133
|
item = Nanoc::ItemView.new(item)
|
144
|
-
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_OMIT_XML_DECL,
|
145
|
-
{},
|
146
|
-
'/layout/')
|
134
|
+
layout = Nanoc::Int::Layout.new(SAMPLE_XSL_WITH_OMIT_XML_DECL, {}, '/layout/')
|
147
135
|
layout = Nanoc::LayoutView.new(layout)
|
148
136
|
|
149
137
|
# Create an instance of the filter
|
data/test/helper.rb
CHANGED
@@ -199,22 +199,30 @@ EOS
|
|
199
199
|
actual_out = eval(pair.first, b)
|
200
200
|
expected_out = eval(pair.last.match(/# ?=>(.*)/)[1], b)
|
201
201
|
|
202
|
-
assert_equal
|
203
|
-
|
202
|
+
assert_equal(
|
203
|
+
expected_out,
|
204
|
+
actual_out,
|
205
|
+
"Incorrect example:\n#{pair.first}",
|
206
|
+
)
|
204
207
|
end
|
205
208
|
end
|
206
209
|
end
|
207
210
|
|
208
211
|
def assert_contains_exactly(expected, actual)
|
209
|
-
assert_equal
|
210
|
-
|
212
|
+
assert_equal(
|
213
|
+
expected.size,
|
214
|
+
actual.size,
|
215
|
+
format('Expected %s to be of same size as %s', actual.inspect, expected.inspect),
|
216
|
+
)
|
211
217
|
remaining = actual.dup.to_a
|
212
218
|
expected.each do |e|
|
213
219
|
index = remaining.index(e)
|
214
220
|
remaining.delete_at(index) if index
|
215
221
|
end
|
216
|
-
assert
|
217
|
-
|
222
|
+
assert(
|
223
|
+
remaining.empty?,
|
224
|
+
format('Expected %s to contain all the elements of %s', actual.inspect, expected.inspect),
|
225
|
+
)
|
218
226
|
end
|
219
227
|
|
220
228
|
def assert_raises_frozen_error
|
@@ -324,12 +324,12 @@ class Nanoc::Helpers::BloggingTest < Nanoc::TestCase
|
|
324
324
|
@items[1].expects(:compiled_content).with(snapshot: :pre).returns('asdf')
|
325
325
|
|
326
326
|
# Mock site
|
327
|
-
@config = Nanoc::ConfigView.new(
|
327
|
+
@config = Nanoc::ConfigView.new(
|
328
328
|
author_name: 'Bob',
|
329
329
|
author_uri: 'http://example.com/~bob/',
|
330
330
|
title: 'My Blog Or Something',
|
331
331
|
base_url: 'http://example.com',
|
332
|
-
|
332
|
+
)
|
333
333
|
|
334
334
|
# Create feed item
|
335
335
|
@item = mock
|
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.0.
|
4
|
+
version: 4.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cri
|
@@ -353,7 +353,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
353
353
|
version: '0'
|
354
354
|
requirements: []
|
355
355
|
rubyforge_project:
|
356
|
-
rubygems_version: 2.4.
|
356
|
+
rubygems_version: 2.4.5.1
|
357
357
|
signing_key:
|
358
358
|
specification_version: 4
|
359
359
|
summary: A static-site generator with a focus on flexibility.
|