nanoc 3.7.4 → 3.7.5
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 +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
|