nanoc 3.7.4 → 3.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +19 -18
- data/LICENSE +1 -1
- data/NEWS.md +14 -0
- data/Rakefile +1 -1
- data/doc/yardoc_handlers/identifier.rb +1 -5
- data/lib/nanoc.rb +1 -3
- data/lib/nanoc/base.rb +1 -4
- data/lib/nanoc/base/checksummer.rb +10 -12
- data/lib/nanoc/base/compilation/checksum_store.rb +0 -4
- data/lib/nanoc/base/compilation/compiled_content_cache.rb +0 -4
- data/lib/nanoc/base/compilation/compiler.rb +27 -31
- data/lib/nanoc/base/compilation/compiler_dsl.rb +3 -7
- data/lib/nanoc/base/compilation/dependency_tracker.rb +2 -6
- data/lib/nanoc/base/compilation/filter.rb +1 -7
- data/lib/nanoc/base/compilation/item_rep_proxy.rb +0 -4
- data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +0 -4
- data/lib/nanoc/base/compilation/outdatedness_checker.rb +0 -4
- data/lib/nanoc/base/compilation/outdatedness_reasons.rb +0 -6
- data/lib/nanoc/base/compilation/rule.rb +1 -5
- data/lib/nanoc/base/compilation/rule_context.rb +7 -11
- data/lib/nanoc/base/compilation/rule_memory_calculator.rb +0 -4
- data/lib/nanoc/base/compilation/rule_memory_store.rb +0 -4
- data/lib/nanoc/base/compilation/rules_collection.rb +5 -9
- data/lib/nanoc/base/context.rb +0 -3
- data/lib/nanoc/base/core_ext.rb +0 -1
- data/lib/nanoc/base/core_ext/array.rb +0 -2
- data/lib/nanoc/base/core_ext/hash.rb +0 -2
- data/lib/nanoc/base/core_ext/pathname.rb +0 -2
- data/lib/nanoc/base/core_ext/string.rb +0 -2
- data/lib/nanoc/base/directed_graph.rb +0 -4
- data/lib/nanoc/base/errors.rb +1 -39
- data/lib/nanoc/base/memoization.rb +0 -4
- data/lib/nanoc/base/notification_center.rb +1 -7
- data/lib/nanoc/base/plugin_registry.rb +4 -10
- data/lib/nanoc/base/result_data/item_rep.rb +8 -16
- data/lib/nanoc/base/source_data/code_snippet.rb +1 -5
- data/lib/nanoc/base/source_data/configuration.rb +0 -4
- data/lib/nanoc/base/source_data/data_source.rb +2 -5
- data/lib/nanoc/base/source_data/item.rb +3 -7
- data/lib/nanoc/base/source_data/item_array.rb +1 -5
- data/lib/nanoc/base/source_data/layout.rb +2 -6
- data/lib/nanoc/base/source_data/site.rb +20 -23
- data/lib/nanoc/base/store.rb +1 -5
- data/lib/nanoc/base/temp_filename_factory.rb +0 -4
- data/lib/nanoc/cli.rb +3 -5
- data/lib/nanoc/cli/ansi_string_colorizer.rb +6 -10
- data/lib/nanoc/cli/cleaning_stream.rb +2 -6
- data/lib/nanoc/cli/command_runner.rb +1 -5
- data/lib/nanoc/cli/commands/autocompile.rb +2 -6
- data/lib/nanoc/cli/commands/check.rb +0 -4
- data/lib/nanoc/cli/commands/compile.rb +12 -27
- data/lib/nanoc/cli/commands/create-item.rb +1 -5
- data/lib/nanoc/cli/commands/create-layout.rb +0 -4
- data/lib/nanoc/cli/commands/create-site.rb +2 -8
- data/lib/nanoc/cli/commands/deploy.rb +3 -7
- data/lib/nanoc/cli/commands/prune.rb +2 -6
- data/lib/nanoc/cli/commands/shell.rb +4 -8
- data/lib/nanoc/cli/commands/show-data.rb +3 -7
- data/lib/nanoc/cli/commands/show-plugins.rb +3 -7
- data/lib/nanoc/cli/commands/show-rules.rb +11 -15
- data/lib/nanoc/cli/commands/sync.rb +0 -4
- data/lib/nanoc/cli/commands/update.rb +1 -7
- data/lib/nanoc/cli/commands/validate-css.rb +0 -4
- data/lib/nanoc/cli/commands/validate-html.rb +0 -4
- data/lib/nanoc/cli/commands/validate-links.rb +0 -4
- data/lib/nanoc/cli/commands/view.rb +3 -7
- data/lib/nanoc/cli/commands/watch.rb +4 -10
- data/lib/nanoc/cli/error_handler.rb +9 -13
- data/lib/nanoc/cli/logger.rb +8 -12
- data/lib/nanoc/cli/stream_cleaners.rb +0 -4
- data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -5
- data/lib/nanoc/cli/stream_cleaners/ansi_colors.rb +0 -4
- data/lib/nanoc/cli/stream_cleaners/utf8.rb +1 -5
- data/lib/nanoc/data_sources.rb +2 -4
- data/lib/nanoc/data_sources/deprecated/delicious.rb +6 -10
- data/lib/nanoc/data_sources/deprecated/last_fm.rb +7 -11
- data/lib/nanoc/data_sources/deprecated/twitter.rb +2 -6
- data/lib/nanoc/data_sources/filesystem.rb +10 -13
- data/lib/nanoc/data_sources/filesystem_unified.rb +0 -4
- data/lib/nanoc/data_sources/filesystem_verbose.rb +0 -4
- data/lib/nanoc/data_sources/static.rb +4 -8
- data/lib/nanoc/extra.rb +2 -4
- data/lib/nanoc/extra/auto_compiler.rb +2 -6
- data/lib/nanoc/extra/checking.rb +0 -4
- data/lib/nanoc/extra/checking/check.rb +0 -4
- data/lib/nanoc/extra/checking/checks.rb +0 -2
- data/lib/nanoc/extra/checking/checks/css.rb +6 -6
- data/lib/nanoc/extra/checking/checks/external_links.rb +3 -11
- data/lib/nanoc/extra/checking/checks/html.rb +6 -6
- data/lib/nanoc/extra/checking/checks/internal_links.rb +3 -7
- data/lib/nanoc/extra/checking/checks/stale.rb +3 -7
- data/lib/nanoc/extra/checking/dsl.rb +0 -4
- data/lib/nanoc/extra/checking/issue.rb +0 -4
- data/lib/nanoc/extra/checking/runner.rb +4 -7
- data/lib/nanoc/extra/chick.rb +7 -17
- data/lib/nanoc/extra/core_ext.rb +0 -1
- data/lib/nanoc/extra/core_ext/pathname.rb +0 -4
- data/lib/nanoc/extra/core_ext/time.rb +0 -2
- data/lib/nanoc/extra/deployer.rb +0 -4
- data/lib/nanoc/extra/deployers.rb +0 -4
- data/lib/nanoc/extra/deployers/fog.rb +7 -11
- data/lib/nanoc/extra/deployers/rsync.rb +1 -5
- data/lib/nanoc/extra/file_proxy.rb +1 -5
- data/lib/nanoc/extra/filesystem_tools.rb +37 -12
- data/lib/nanoc/extra/jruby_nokogiri_warner.rb +0 -4
- data/lib/nanoc/extra/link_collector.rb +3 -7
- data/lib/nanoc/extra/piper.rb +0 -6
- data/lib/nanoc/extra/pruner.rb +1 -7
- data/lib/nanoc/extra/validators.rb +0 -4
- data/lib/nanoc/extra/validators/links.rb +0 -4
- data/lib/nanoc/extra/validators/w3c.rb +0 -4
- data/lib/nanoc/extra/vcs.rb +3 -7
- data/lib/nanoc/extra/vcses.rb +0 -2
- data/lib/nanoc/extra/vcses/bazaar.rb +0 -4
- data/lib/nanoc/extra/vcses/dummy.rb +0 -4
- data/lib/nanoc/extra/vcses/git.rb +0 -4
- data/lib/nanoc/extra/vcses/mercurial.rb +0 -4
- data/lib/nanoc/extra/vcses/subversion.rb +0 -4
- data/lib/nanoc/filters.rb +0 -2
- data/lib/nanoc/filters/asciidoc.rb +1 -5
- data/lib/nanoc/filters/bluecloth.rb +0 -2
- data/lib/nanoc/filters/coderay.rb +0 -2
- data/lib/nanoc/filters/coffeescript.rb +0 -4
- data/lib/nanoc/filters/colorize_syntax.rb +17 -15
- data/lib/nanoc/filters/erb.rb +1 -3
- data/lib/nanoc/filters/erubis.rb +2 -4
- data/lib/nanoc/filters/haml.rb +2 -4
- data/lib/nanoc/filters/handlebars.rb +0 -4
- data/lib/nanoc/filters/kramdown.rb +7 -4
- data/lib/nanoc/filters/less.rb +1 -3
- data/lib/nanoc/filters/markaby.rb +0 -2
- data/lib/nanoc/filters/maruku.rb +0 -2
- data/lib/nanoc/filters/mustache.rb +1 -5
- data/lib/nanoc/filters/pandoc.rb +0 -2
- data/lib/nanoc/filters/rainpress.rb +0 -2
- data/lib/nanoc/filters/rdiscount.rb +0 -2
- data/lib/nanoc/filters/rdoc.rb +0 -2
- data/lib/nanoc/filters/redcarpet.rb +0 -4
- data/lib/nanoc/filters/redcloth.rb +0 -2
- data/lib/nanoc/filters/relativize_paths.rb +2 -4
- data/lib/nanoc/filters/rubypants.rb +0 -2
- data/lib/nanoc/filters/sass.rb +2 -4
- data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +0 -2
- data/lib/nanoc/filters/slim.rb +2 -6
- data/lib/nanoc/filters/typogruby.rb +0 -4
- data/lib/nanoc/filters/uglify_js.rb +0 -2
- data/lib/nanoc/filters/xsl.rb +1 -5
- data/lib/nanoc/filters/yui_compressor.rb +0 -4
- data/lib/nanoc/helpers.rb +0 -2
- data/lib/nanoc/helpers/blogging.rb +12 -20
- data/lib/nanoc/helpers/breadcrumbs.rb +0 -4
- data/lib/nanoc/helpers/capturing.rb +2 -10
- data/lib/nanoc/helpers/filtering.rb +0 -4
- data/lib/nanoc/helpers/html_escape.rb +3 -7
- data/lib/nanoc/helpers/link_to.rb +0 -4
- data/lib/nanoc/helpers/rendering.rb +8 -12
- data/lib/nanoc/helpers/tagging.rb +0 -4
- data/lib/nanoc/helpers/text.rb +1 -5
- data/lib/nanoc/helpers/xml_sitemap.rb +3 -7
- data/lib/nanoc/tasks/clean.rb +1 -7
- data/lib/nanoc/tasks/deploy/rsync.rake +0 -2
- data/lib/nanoc/tasks/validate.rake +0 -4
- data/lib/nanoc/version.rb +1 -3
- data/nanoc.gemspec +12 -9
- data/tasks/rubocop.rake +1 -1
- data/tasks/test.rake +6 -7
- data/test/base/checksummer_spec.rb +28 -44
- data/test/base/core_ext/array_spec.rb +1 -9
- data/test/base/core_ext/hash_spec.rb +7 -19
- data/test/base/core_ext/pathname_spec.rb +2 -4
- data/test/base/core_ext/string_spec.rb +0 -4
- data/test/base/temp_filename_factory_spec.rb +0 -8
- data/test/base/test_checksum_store.rb +0 -2
- data/test/base/test_code_snippet.rb +0 -2
- data/test/base/test_compiler.rb +15 -17
- data/test/base/test_compiler_dsl.rb +7 -9
- data/test/base/test_context.rb +2 -4
- data/test/base/test_data_source.rb +0 -2
- data/test/base/test_dependency_tracker.rb +0 -2
- data/test/base/test_directed_graph.rb +2 -4
- data/test/base/test_filter.rb +5 -7
- data/test/base/test_item.rb +17 -13
- data/test/base/test_item_array.rb +2 -4
- data/test/base/test_item_rep.rb +79 -73
- data/test/base/test_layout.rb +3 -5
- data/test/base/test_memoization.rb +13 -21
- data/test/base/test_notification_center.rb +0 -2
- data/test/base/test_outdatedness_checker.rb +34 -36
- data/test/base/test_plugin.rb +0 -2
- data/test/base/test_rule.rb +3 -5
- data/test/base/test_rule_context.rb +4 -6
- data/test/base/test_site.rb +9 -17
- data/test/base/test_store.rb +2 -6
- data/test/cli/commands/test_check.rb +1 -3
- data/test/cli/commands/test_compile.rb +24 -15
- data/test/cli/commands/test_create_item.rb +1 -3
- data/test/cli/commands/test_create_layout.rb +0 -2
- data/test/cli/commands/test_create_site.rb +0 -3
- data/test/cli/commands/test_deploy.rb +9 -11
- data/test/cli/commands/test_help.rb +0 -2
- data/test/cli/commands/test_info.rb +0 -2
- data/test/cli/commands/test_prune.rb +6 -8
- data/test/cli/commands/test_sync.rb +0 -2
- data/test/cli/commands/test_update.rb +0 -2
- data/test/cli/commands/test_watch.rb +4 -6
- data/test/cli/test_cleaning_stream.rb +4 -6
- data/test/cli/test_cli.rb +9 -5
- data/test/cli/test_error_handler.rb +9 -7
- data/test/cli/test_logger.rb +0 -2
- data/test/data_sources/test_filesystem.rb +8 -10
- data/test/data_sources/test_filesystem_unified.rb +35 -34
- data/test/data_sources/test_filesystem_verbose.rb +31 -33
- data/test/data_sources/test_static.rb +20 -21
- data/test/extra/checking/checks/test_css.rb +23 -2
- data/test/extra/checking/checks/test_external_links.rb +2 -4
- data/test/extra/checking/checks/test_html.rb +4 -3
- data/test/extra/checking/checks/test_internal_links.rb +1 -3
- data/test/extra/checking/checks/test_stale.rb +4 -6
- data/test/extra/checking/test_check.rb +0 -2
- data/test/extra/checking/test_dsl.rb +1 -3
- data/test/extra/checking/test_runner.rb +0 -2
- data/test/extra/core_ext/test_pathname.rb +0 -3
- data/test/extra/core_ext/test_time.rb +0 -2
- data/test/extra/deployers/test_fog.rb +13 -15
- data/test/extra/deployers/test_rsync.rb +4 -6
- data/test/extra/test_auto_compiler.rb +47 -25
- data/test/extra/test_file_proxy.rb +1 -3
- data/test/extra/test_filesystem_tools.rb +47 -7
- data/test/extra/test_link_collector.rb +0 -2
- data/test/extra/test_piper.rb +3 -5
- data/test/extra/test_vcs.rb +0 -2
- data/test/extra/validators/test_links.rb +0 -1
- data/test/extra/validators/test_w3c.rb +2 -4
- data/test/filters/test_asciidoc.rb +0 -2
- data/test/filters/test_bluecloth.rb +0 -2
- data/test/filters/test_coderay.rb +2 -4
- data/test/filters/test_coffeescript.rb +0 -2
- data/test/filters/test_colorize_syntax.rb +16 -18
- data/test/filters/test_erb.rb +12 -14
- data/test/filters/test_erubis.rb +4 -6
- data/test/filters/test_haml.rb +7 -9
- data/test/filters/test_handlebars.rb +10 -12
- data/test/filters/test_kramdown.rb +13 -1
- data/test/filters/test_less.rb +9 -11
- data/test/filters/test_markaby.rb +0 -2
- data/test/filters/test_maruku.rb +0 -2
- data/test/filters/test_mustache.rb +4 -6
- data/test/filters/test_pandoc.rb +1 -3
- data/test/filters/test_rainpress.rb +1 -3
- data/test/filters/test_rdiscount.rb +1 -3
- data/test/filters/test_rdoc.rb +0 -2
- data/test/filters/test_redcarpet.rb +6 -8
- data/test/filters/test_redcloth.rb +1 -3
- data/test/filters/test_relativize_paths.rb +29 -34
- data/test/filters/test_rubypants.rb +0 -2
- data/test/filters/test_sass.rb +8 -10
- data/test/filters/test_slim.rb +2 -4
- data/test/filters/test_typogruby.rb +0 -3
- data/test/filters/test_uglify_js.rb +2 -4
- data/test/filters/test_xsl.rb +16 -18
- data/test/filters/test_yui_compressor.rb +3 -5
- data/test/fixtures/vcr_cassettes/css_run_parse_error.yml +65 -0
- data/test/gem_loader.rb +1 -1
- data/test/helper.rb +11 -15
- data/test/helpers/test_blogging.rb +61 -63
- data/test/helpers/test_breadcrumbs.rb +0 -2
- data/test/helpers/test_capturing.rb +4 -6
- data/test/helpers/test_filtering.rb +2 -4
- data/test/helpers/test_html_escape.rb +0 -2
- data/test/helpers/test_link_to.rb +5 -6
- data/test/helpers/test_rendering.rb +2 -4
- data/test/helpers/test_tagging.rb +9 -11
- data/test/helpers/test_text.rb +6 -8
- data/test/helpers/test_xml_sitemap.rb +11 -13
- data/test/tasks/test_clean.rb +0 -2
- data/test/test_gem.rb +1 -3
- metadata +15 -14
- data/Gemfile.lock +0 -252
- data/lib/nanoc/base/core_ext/date.rb +0 -29
- data/lib/nanoc/base/ordered_hash.rb +0 -228
- data/lib/nanoc/extra/core_ext/enumerable.rb +0 -33
- data/test/base/core_ext/date_spec.rb +0 -15
- data/test/extra/core_ext/test_enumerable.rb +0 -28
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Checking::Checks
|
4
|
-
|
5
4
|
autoload 'CSS', 'nanoc/extra/checking/checks/css'
|
6
5
|
autoload 'ExternalLinks', 'nanoc/extra/checking/checks/external_links'
|
7
6
|
autoload 'HTML', 'nanoc/extra/checking/checks/html'
|
@@ -15,5 +14,4 @@ module Nanoc::Extra::Checking::Checks
|
|
15
14
|
Nanoc::Extra::Checking::Check.register '::Nanoc::Extra::Checking::Checks::InternalLinks', :internal_links
|
16
15
|
Nanoc::Extra::Checking::Check.register '::Nanoc::Extra::Checking::Checks::InternalLinks', :ilinks
|
17
16
|
Nanoc::Extra::Checking::Check.register '::Nanoc::Extra::Checking::Checks::Stale', :stale
|
18
|
-
|
19
17
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module ::Nanoc::Extra::Checking::Checks
|
4
|
-
|
5
4
|
class CSS < ::Nanoc::Extra::Checking::Check
|
6
|
-
|
7
5
|
identifier :css
|
8
6
|
|
9
7
|
def run
|
@@ -11,13 +9,15 @@ module ::Nanoc::Extra::Checking::Checks
|
|
11
9
|
|
12
10
|
Dir[site.config[:output_dir] + '/**/*.css'].each do |filename|
|
13
11
|
results = ::W3CValidators::CSSValidator.new.validate_file(filename)
|
12
|
+
lines = File.readlines(filename)
|
14
13
|
results.errors.each do |e|
|
15
|
-
|
16
|
-
|
14
|
+
line_num = e.line.to_i - 1
|
15
|
+
line = lines[line_num]
|
16
|
+
message = e.message.gsub(%r{\s+}, ' ').strip.sub(/\s+:$/, '')
|
17
|
+
desc = "line #{line_num + 1}: #{message}: #{line}"
|
18
|
+
add_issue(desc, subject: filename)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
20
|
-
|
21
22
|
end
|
22
|
-
|
23
23
|
end
|
@@ -7,15 +7,13 @@ require 'timeout'
|
|
7
7
|
require 'uri'
|
8
8
|
|
9
9
|
module ::Nanoc::Extra::Checking::Checks
|
10
|
-
|
11
10
|
# A validator that verifies that all external links point to a location that exists.
|
12
11
|
class ExternalLinks < ::Nanoc::Extra::Checking::Check
|
13
|
-
|
14
12
|
identifiers :external_links, :elinks
|
15
13
|
|
16
14
|
def run
|
17
15
|
# Find all broken external hrefs
|
18
|
-
# TODO de-duplicate this (duplicated in internal links check)
|
16
|
+
# TODO: de-duplicate this (duplicated in internal links check)
|
19
17
|
filenames = output_filenames.select { |f| File.extname(f) == '.html' }
|
20
18
|
hrefs_with_filenames = ::Nanoc::Extra::LinkCollector.new(filenames, :external).filenames_per_href
|
21
19
|
results = select_invalid(hrefs_with_filenames.keys)
|
@@ -26,13 +24,12 @@ module ::Nanoc::Extra::Checking::Checks
|
|
26
24
|
filenames.each do |filename|
|
27
25
|
add_issue(
|
28
26
|
"broken reference to #{res.href}: #{res.explanation}",
|
29
|
-
:
|
27
|
+
subject: filename)
|
30
28
|
end
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
32
|
class Result
|
35
|
-
|
36
33
|
attr_reader :href
|
37
34
|
attr_reader :explanation
|
38
35
|
|
@@ -40,11 +37,9 @@ module ::Nanoc::Extra::Checking::Checks
|
|
40
37
|
@href = href
|
41
38
|
@explanation = explanation
|
42
39
|
end
|
43
|
-
|
44
40
|
end
|
45
41
|
|
46
42
|
class ArrayEnumerator
|
47
|
-
|
48
43
|
def initialize(array)
|
49
44
|
@array = array
|
50
45
|
@index = 0
|
@@ -57,7 +52,6 @@ module ::Nanoc::Extra::Checking::Checks
|
|
57
52
|
return @array[@index - 1]
|
58
53
|
end
|
59
54
|
end
|
60
|
-
|
61
55
|
end
|
62
56
|
|
63
57
|
def select_invalid(hrefs)
|
@@ -81,7 +75,7 @@ module ::Nanoc::Extra::Checking::Checks
|
|
81
75
|
end
|
82
76
|
end
|
83
77
|
end
|
84
|
-
threads.each
|
78
|
+
threads.each(&:join)
|
85
79
|
|
86
80
|
invalid
|
87
81
|
end
|
@@ -167,7 +161,5 @@ module ::Nanoc::Extra::Checking::Checks
|
|
167
161
|
end
|
168
162
|
http.request(req)
|
169
163
|
end
|
170
|
-
|
171
164
|
end
|
172
|
-
|
173
165
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module ::Nanoc::Extra::Checking::Checks
|
4
|
-
|
5
4
|
class HTML < ::Nanoc::Extra::Checking::Check
|
6
|
-
|
7
5
|
identifier :html
|
8
6
|
|
9
7
|
def run
|
@@ -11,13 +9,15 @@ module ::Nanoc::Extra::Checking::Checks
|
|
11
9
|
|
12
10
|
Dir[site.config[:output_dir] + '/**/*.{htm,html}'].each do |filename|
|
13
11
|
results = ::W3CValidators::MarkupValidator.new.validate_file(filename)
|
12
|
+
lines = File.readlines(filename)
|
14
13
|
results.errors.each do |e|
|
15
|
-
|
16
|
-
|
14
|
+
line_num = e.line.to_i - 1
|
15
|
+
line = lines[line_num]
|
16
|
+
message = e.message.gsub(%r{\s+}, ' ').strip.sub(/\s+:$/, '')
|
17
|
+
desc = "line #{line_num + 1}: #{message}: #{line}"
|
18
|
+
add_issue(desc, subject: filename)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
20
|
-
|
21
22
|
end
|
22
|
-
|
23
23
|
end
|
@@ -3,10 +3,8 @@
|
|
3
3
|
require 'uri'
|
4
4
|
|
5
5
|
module Nanoc::Extra::Checking::Checks
|
6
|
-
|
7
6
|
# A check that verifies that all internal links point to a location that exists.
|
8
7
|
class InternalLinks < ::Nanoc::Extra::Checking::Check
|
9
|
-
|
10
8
|
# Starts the validator. The results will be printed to stdout.
|
11
9
|
#
|
12
10
|
# Internal links that match a regexp pattern in `@config[:checks][:internal_links][:exclude]` will
|
@@ -14,7 +12,7 @@ module Nanoc::Extra::Checking::Checks
|
|
14
12
|
#
|
15
13
|
# @return [void]
|
16
14
|
def run
|
17
|
-
# TODO de-duplicate this (duplicated in external links check)
|
15
|
+
# TODO: de-duplicate this (duplicated in external links check)
|
18
16
|
filenames = output_filenames.select { |f| File.extname(f) == '.html' }
|
19
17
|
hrefs_with_filenames = ::Nanoc::Extra::LinkCollector.new(filenames, :internal).filenames_per_href
|
20
18
|
hrefs_with_filenames.each_pair do |href, fns|
|
@@ -23,7 +21,7 @@ module Nanoc::Extra::Checking::Checks
|
|
23
21
|
|
24
22
|
add_issue(
|
25
23
|
"broken reference to #{href}",
|
26
|
-
:
|
24
|
+
subject: filename)
|
27
25
|
end
|
28
26
|
end
|
29
27
|
end
|
@@ -32,7 +30,7 @@ module Nanoc::Extra::Checking::Checks
|
|
32
30
|
|
33
31
|
def valid?(href, origin)
|
34
32
|
# Skip hrefs that point to self
|
35
|
-
# FIXME this is ugly and won’t always be correct
|
33
|
+
# FIXME: this is ugly and won’t always be correct
|
36
34
|
return true if href == '.'
|
37
35
|
|
38
36
|
# Skip hrefs that are specified in the exclude configuration
|
@@ -70,7 +68,5 @@ module Nanoc::Extra::Checking::Checks
|
|
70
68
|
excludes = @site.config.fetch(:checks, {}).fetch(:internal_links, {}).fetch(:exclude, [])
|
71
69
|
excludes.any? { |pattern| Regexp.new(pattern).match(href) }
|
72
70
|
end
|
73
|
-
|
74
71
|
end
|
75
|
-
|
76
72
|
end
|
@@ -1,13 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Checking::Checks
|
4
|
-
|
5
4
|
class Stale < ::Nanoc::Extra::Checking::Check
|
6
|
-
|
7
5
|
def run
|
8
6
|
require 'set'
|
9
7
|
|
10
|
-
item_rep_paths = Set.new(@site.items.map
|
8
|
+
item_rep_paths = Set.new(@site.items.map(&:reps).flatten.map(&:raw_path))
|
11
9
|
|
12
10
|
output_filenames.each do |f|
|
13
11
|
next if pruner.filename_excluded?(f)
|
@@ -15,7 +13,7 @@ module Nanoc::Extra::Checking::Checks
|
|
15
13
|
|
16
14
|
add_issue(
|
17
15
|
'file without matching item',
|
18
|
-
:
|
16
|
+
subject: f)
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
@@ -23,9 +21,7 @@ module Nanoc::Extra::Checking::Checks
|
|
23
21
|
|
24
22
|
def pruner
|
25
23
|
exclude_config = @site.config.fetch(:prune, {}).fetch(:exclude, [])
|
26
|
-
@pruner ||= Nanoc::Extra::Pruner.new(@site, :
|
24
|
+
@pruner ||= Nanoc::Extra::Pruner.new(@site, exclude: exclude_config)
|
27
25
|
end
|
28
|
-
|
29
26
|
end
|
30
|
-
|
31
27
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Checking
|
4
|
-
|
5
4
|
class DSL
|
6
|
-
|
7
5
|
attr_reader :deploy_checks
|
8
6
|
|
9
7
|
def self.from_file(filename)
|
@@ -25,7 +23,5 @@ module Nanoc::Extra::Checking
|
|
25
23
|
def deploy_check(*identifiers)
|
26
24
|
identifiers.each { |i| @deploy_checks << i }
|
27
25
|
end
|
28
|
-
|
29
26
|
end
|
30
|
-
|
31
27
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Checking
|
4
|
-
|
5
4
|
class Issue
|
6
|
-
|
7
5
|
attr_reader :description
|
8
6
|
attr_reader :subject
|
9
7
|
attr_reader :check_class
|
@@ -13,7 +11,5 @@ module Nanoc::Extra::Checking
|
|
13
11
|
@subject = subject
|
14
12
|
@check_class = check_class
|
15
13
|
end
|
16
|
-
|
17
14
|
end
|
18
|
-
|
19
15
|
end
|
@@ -1,12 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::Checking
|
4
|
-
|
5
4
|
# Runner is reponsible for running issue checks.
|
6
5
|
#
|
7
6
|
# @api private
|
8
7
|
class Runner
|
9
|
-
|
10
8
|
CHECKS_FILENAMES = ['Checks', 'Checks.rb', 'checks', 'checks.rb']
|
11
9
|
|
12
10
|
# @param [Nanoc::Site] site The nanoc site this runner is for
|
@@ -14,7 +12,7 @@ module Nanoc::Extra::Checking
|
|
14
12
|
@site = site
|
15
13
|
end
|
16
14
|
|
17
|
-
# @
|
15
|
+
# @return [String] The name of the Checks file
|
18
16
|
def checks_filename
|
19
17
|
@_checks_filename ||= CHECKS_FILENAMES.find { |f| File.file?(f) }
|
20
18
|
end
|
@@ -98,7 +96,7 @@ module Nanoc::Extra::Checking
|
|
98
96
|
end
|
99
97
|
|
100
98
|
def all_check_classes
|
101
|
-
Nanoc::Extra::Checking::Check.all.map
|
99
|
+
Nanoc::Extra::Checking::Check.all.map(&:last).uniq
|
102
100
|
end
|
103
101
|
|
104
102
|
def check_classes_named(n)
|
@@ -124,7 +122,7 @@ module Nanoc::Extra::Checking
|
|
124
122
|
checks << check
|
125
123
|
issues.merge(check.issues)
|
126
124
|
|
127
|
-
# TODO report progress
|
125
|
+
# TODO: report progress
|
128
126
|
|
129
127
|
puts check.issues.empty? ? 'ok'.green : 'error'.red
|
130
128
|
end
|
@@ -136,7 +134,7 @@ module Nanoc::Extra::Checking
|
|
136
134
|
|
137
135
|
return if issues.empty?
|
138
136
|
puts 'Issues found!'
|
139
|
-
issues.group_by
|
137
|
+
issues.group_by(&:subject).to_a.sort_by(&:first).each do |pair|
|
140
138
|
subject = pair.first
|
141
139
|
issues = pair.last
|
142
140
|
next if issues.empty?
|
@@ -148,5 +146,4 @@ module Nanoc::Extra::Checking
|
|
148
146
|
end
|
149
147
|
end
|
150
148
|
end
|
151
|
-
|
152
149
|
end
|
data/lib/nanoc/extra/chick.rb
CHANGED
@@ -5,24 +5,21 @@ require 'rack'
|
|
5
5
|
require 'rack/cache'
|
6
6
|
|
7
7
|
module Nanoc::Extra
|
8
|
-
|
9
8
|
# @deprecated Use a HTTP library such as
|
10
9
|
# [Net::HTTP](http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/) or
|
11
10
|
# [Curb](https://github.com/taf2/curb) instead.
|
12
11
|
module CHiCk
|
13
|
-
|
14
12
|
# @deprecated Use a HTTP library such as
|
15
13
|
# [Net::HTTP](http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/) or
|
16
14
|
# [Curb](https://github.com/taf2/curb) instead.
|
17
15
|
class Client
|
18
|
-
|
19
16
|
DEFAULT_OPTIONS = {
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
17
|
+
cache: {
|
18
|
+
metastore: 'file:tmp/rack/cache.meta',
|
19
|
+
entitystore: 'file:tmp/rack/cache.body'
|
23
20
|
},
|
24
|
-
:
|
25
|
-
:
|
21
|
+
cache_controller: {
|
22
|
+
max_age: 60
|
26
23
|
}
|
27
24
|
}
|
28
25
|
|
@@ -37,13 +34,13 @@ module Nanoc::Extra
|
|
37
34
|
# Build app
|
38
35
|
options = @options
|
39
36
|
@app ||= Rack::Builder.new do
|
40
|
-
use Rack::Cache, options[:cache].merge(:
|
37
|
+
use Rack::Cache, options[:cache].merge(verbose: true)
|
41
38
|
use Nanoc::Extra::CHiCk::CacheController, options[:cache_controller]
|
42
39
|
run Nanoc::Extra::CHiCk::RackClient
|
43
40
|
end
|
44
41
|
|
45
42
|
# Build environment for request
|
46
|
-
env = Rack::MockRequest.env_for(url, :
|
43
|
+
env = Rack::MockRequest.env_for(url, method: 'GET')
|
47
44
|
|
48
45
|
# Fetch
|
49
46
|
puts "[CHiCk] Fetching #{url}..." if $DEBUG
|
@@ -57,14 +54,12 @@ module Nanoc::Extra
|
|
57
54
|
# Done
|
58
55
|
[status, headers, body]
|
59
56
|
end
|
60
|
-
|
61
57
|
end
|
62
58
|
|
63
59
|
# @deprecated Use a HTTP library such as
|
64
60
|
# [Net::HTTP](http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/) or
|
65
61
|
# [Curb](https://github.com/taf2/curb) instead.
|
66
62
|
class CacheController
|
67
|
-
|
68
63
|
def initialize(app, options = {})
|
69
64
|
@app = app
|
70
65
|
@options = options
|
@@ -77,14 +72,12 @@ module Nanoc::Extra
|
|
77
72
|
end
|
78
73
|
res
|
79
74
|
end
|
80
|
-
|
81
75
|
end
|
82
76
|
|
83
77
|
# @deprecated Use a HTTP library such as
|
84
78
|
# [Net::HTTP](http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/) or
|
85
79
|
# [Curb](https://github.com/taf2/curb) instead.
|
86
80
|
class RackClient
|
87
|
-
|
88
81
|
METHOD_TO_CLASS_MAPPING = {
|
89
82
|
'DELETE' => Net::HTTP::Delete,
|
90
83
|
'GET' => Net::HTTP::Get,
|
@@ -119,9 +112,6 @@ module Nanoc::Extra
|
|
119
112
|
]
|
120
113
|
end
|
121
114
|
end
|
122
|
-
|
123
115
|
end
|
124
|
-
|
125
116
|
end
|
126
|
-
|
127
117
|
end
|
data/lib/nanoc/extra/core_ext.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
module PathnameExtensions
|
6
|
-
|
7
5
|
def components
|
8
6
|
components = []
|
9
7
|
tmp = self
|
@@ -19,9 +17,7 @@ module Nanoc::Extra
|
|
19
17
|
def include_component?(component)
|
20
18
|
components.include?(component)
|
21
19
|
end
|
22
|
-
|
23
20
|
end
|
24
|
-
|
25
21
|
end
|
26
22
|
|
27
23
|
class ::Pathname
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra::TimeExtensions
|
4
|
-
|
5
4
|
# @return [String] The time in an ISO-8601 date format.
|
6
5
|
def to_iso8601_date
|
7
6
|
strftime('%Y-%m-%d')
|
@@ -11,7 +10,6 @@ module Nanoc::Extra::TimeExtensions
|
|
11
10
|
def to_iso8601_time
|
12
11
|
getutc.strftime('%Y-%m-%dT%H:%M:%SZ')
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
|
17
15
|
class Time
|
data/lib/nanoc/extra/deployer.rb
CHANGED
@@ -1,13 +1,11 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
module Nanoc::Extra
|
4
|
-
|
5
4
|
# Represents a deployer, an object that allows uploading the compiled site
|
6
5
|
# to a specific (remote) location.
|
7
6
|
#
|
8
7
|
# @abstract Subclass and override {#run} to implement a custom filter.
|
9
8
|
class Deployer
|
10
|
-
|
11
9
|
extend Nanoc::PluginRegistry::PluginMethods
|
12
10
|
|
13
11
|
# @return [String] The path to the directory that contains the files to
|
@@ -41,7 +39,5 @@ module Nanoc::Extra
|
|
41
39
|
def run
|
42
40
|
raise NotImplementedError.new('Nanoc::Extra::Deployer subclasses must implement #run')
|
43
41
|
end
|
44
|
-
|
45
42
|
end
|
46
|
-
|
47
43
|
end
|