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,11 +1,9 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Provides support for breadcrumbs, which allow the user to go up in the
|
|
6
5
|
# page hierarchy.
|
|
7
6
|
module Breadcrumbs
|
|
8
|
-
|
|
9
7
|
# Creates a breadcrumb trail leading from the current item to its parent,
|
|
10
8
|
# to its parent’s parent, etc, until the root item is reached. This
|
|
11
9
|
# function does not require that each intermediate item exist; for
|
|
@@ -29,7 +27,5 @@ module Nanoc::Helpers
|
|
|
29
27
|
|
|
30
28
|
trail
|
|
31
29
|
end
|
|
32
|
-
|
|
33
30
|
end
|
|
34
|
-
|
|
35
31
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Provides functionality for “capturing” content in one place and reusing
|
|
6
5
|
# this content elsewhere.
|
|
7
6
|
#
|
|
@@ -35,10 +34,8 @@ module Nanoc::Helpers
|
|
|
35
34
|
# <%= @item[:content_for_summary] || '(no summary)' %>
|
|
36
35
|
# </div>
|
|
37
36
|
module Capturing
|
|
38
|
-
|
|
39
37
|
# @api private
|
|
40
38
|
class CapturesStore
|
|
41
|
-
|
|
42
39
|
def initialize
|
|
43
40
|
@store = {}
|
|
44
41
|
end
|
|
@@ -52,11 +49,9 @@ module Nanoc::Helpers
|
|
|
52
49
|
@store[item.identifier] ||= {}
|
|
53
50
|
@store[item.identifier][name]
|
|
54
51
|
end
|
|
55
|
-
|
|
56
52
|
end
|
|
57
53
|
|
|
58
54
|
class ::Nanoc::Site
|
|
59
|
-
|
|
60
55
|
# @api private
|
|
61
56
|
def captures_store
|
|
62
57
|
@captures_store ||= CapturesStore.new
|
|
@@ -67,7 +62,6 @@ module Nanoc::Helpers
|
|
|
67
62
|
require 'set'
|
|
68
63
|
@captures_store_compiled_items ||= Set.new
|
|
69
64
|
end
|
|
70
|
-
|
|
71
65
|
end
|
|
72
66
|
|
|
73
67
|
# @overload content_for(name, &block)
|
|
@@ -127,13 +121,13 @@ module Nanoc::Helpers
|
|
|
127
121
|
# This is an extremely ugly hack to get the compiler to recompile the
|
|
128
122
|
# item from which we use content. For this, we need to manually edit
|
|
129
123
|
# the content attribute to reset it. :(
|
|
130
|
-
# FIXME clean this up
|
|
124
|
+
# FIXME: clean this up
|
|
131
125
|
unless @site.captures_store_compiled_items.include? item
|
|
132
126
|
@site.captures_store_compiled_items << item
|
|
133
127
|
item.forced_outdated = true
|
|
134
128
|
item.reps.each do |r|
|
|
135
129
|
raw_content = item.raw_content
|
|
136
|
-
r.content = { :
|
|
130
|
+
r.content = { raw: raw_content, last: raw_content }
|
|
137
131
|
raise Nanoc::Errors::UnmetDependency.new(r)
|
|
138
132
|
end
|
|
139
133
|
end
|
|
@@ -169,7 +163,5 @@ module Nanoc::Helpers
|
|
|
169
163
|
# Done.
|
|
170
164
|
erbout_addition
|
|
171
165
|
end
|
|
172
|
-
|
|
173
166
|
end
|
|
174
|
-
|
|
175
167
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Provides functionality for filtering parts of an item or a layout.
|
|
6
5
|
module Filtering
|
|
7
|
-
|
|
8
6
|
require 'nanoc/helpers/capturing'
|
|
9
7
|
include Nanoc::Helpers::Capturing
|
|
10
8
|
|
|
@@ -46,7 +44,5 @@ module Nanoc::Helpers
|
|
|
46
44
|
buffer = eval('_erbout', block.binding)
|
|
47
45
|
buffer << filtered_data
|
|
48
46
|
end
|
|
49
|
-
|
|
50
47
|
end
|
|
51
|
-
|
|
52
48
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Contains functionality for HTML-escaping strings.
|
|
6
5
|
module HTMLEscape
|
|
7
|
-
|
|
8
6
|
require 'nanoc/helpers/capturing'
|
|
9
7
|
include Nanoc::Helpers::Capturing
|
|
10
8
|
|
|
@@ -39,9 +37,9 @@ module Nanoc::Helpers
|
|
|
39
37
|
buffer << escaped_data
|
|
40
38
|
elsif string
|
|
41
39
|
string.gsub('&', '&')
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
.gsub('<', '<')
|
|
41
|
+
.gsub('>', '>')
|
|
42
|
+
.gsub('"', '"')
|
|
45
43
|
else
|
|
46
44
|
raise 'The #html_escape or #h function needs either a ' \
|
|
47
45
|
'string or a block to HTML-escape, but neither a string nor a block was given'
|
|
@@ -49,7 +47,5 @@ module Nanoc::Helpers
|
|
|
49
47
|
end
|
|
50
48
|
|
|
51
49
|
alias_method :h, :html_escape
|
|
52
|
-
|
|
53
50
|
end
|
|
54
|
-
|
|
55
51
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Contains functions for linking to items and item representations.
|
|
6
5
|
module LinkTo
|
|
7
|
-
|
|
8
6
|
require 'nanoc/helpers/html_escape'
|
|
9
7
|
include Nanoc::Helpers::HTMLEscape
|
|
10
8
|
|
|
@@ -154,7 +152,5 @@ module Nanoc::Helpers
|
|
|
154
152
|
# Done
|
|
155
153
|
relative_path
|
|
156
154
|
end
|
|
157
|
-
|
|
158
155
|
end
|
|
159
|
-
|
|
160
156
|
end
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Provides functionality for rendering layouts as partials.
|
|
6
5
|
module Rendering
|
|
7
|
-
|
|
8
6
|
include Nanoc::Helpers::Capturing
|
|
9
7
|
|
|
10
8
|
# Renders the given layout. The given layout will be run through the first
|
|
@@ -91,14 +89,14 @@ module Nanoc::Helpers
|
|
|
91
89
|
|
|
92
90
|
# Get assigns
|
|
93
91
|
assigns = {
|
|
94
|
-
:
|
|
95
|
-
:
|
|
96
|
-
:
|
|
97
|
-
:
|
|
98
|
-
:
|
|
99
|
-
:
|
|
100
|
-
:
|
|
101
|
-
:
|
|
92
|
+
content: captured_content,
|
|
93
|
+
item: @item,
|
|
94
|
+
item_rep: @item_rep,
|
|
95
|
+
items: @items,
|
|
96
|
+
layout: layout,
|
|
97
|
+
layouts: @layouts,
|
|
98
|
+
config: @config,
|
|
99
|
+
site: @site
|
|
102
100
|
}.merge(other_assigns)
|
|
103
101
|
|
|
104
102
|
# Get filter name
|
|
@@ -134,7 +132,5 @@ module Nanoc::Helpers
|
|
|
134
132
|
Nanoc::NotificationCenter.post(:processing_ended, layout)
|
|
135
133
|
end
|
|
136
134
|
end
|
|
137
|
-
|
|
138
135
|
end
|
|
139
|
-
|
|
140
136
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Provides support for managing tags added to items.
|
|
6
5
|
#
|
|
7
6
|
# To add tags to items, set the `tags` attribute to an array of tags that
|
|
@@ -11,7 +10,6 @@ module Nanoc::Helpers
|
|
|
11
10
|
#
|
|
12
11
|
# tags: [ 'foo', 'bar', 'baz' ]
|
|
13
12
|
module Tagging
|
|
14
|
-
|
|
15
13
|
require 'nanoc/helpers/html_escape'
|
|
16
14
|
include Nanoc::Helpers::HTMLEscape
|
|
17
15
|
|
|
@@ -65,7 +63,5 @@ module Nanoc::Helpers
|
|
|
65
63
|
def link_for_tag(tag, base_url)
|
|
66
64
|
%(<a href="#{h base_url}#{h tag}" rel="tag">#{h tag}</a>)
|
|
67
65
|
end
|
|
68
|
-
|
|
69
66
|
end
|
|
70
|
-
|
|
71
67
|
end
|
data/lib/nanoc/helpers/text.rb
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Contains several useful text-related helper functions.
|
|
6
5
|
module Text
|
|
7
|
-
|
|
8
6
|
# Returns an excerpt for the given string. HTML tags are ignored, so if
|
|
9
7
|
# you don't want them to turn up, they should be stripped from the string
|
|
10
8
|
# before passing it to the excerpt function.
|
|
@@ -35,10 +33,8 @@ module Nanoc::Helpers
|
|
|
35
33
|
#
|
|
36
34
|
# @return [String] The given string with all HTML stripped
|
|
37
35
|
def strip_html(string)
|
|
38
|
-
# FIXME will need something more sophisticated than this, because it sucks
|
|
36
|
+
# FIXME: will need something more sophisticated than this, because it sucks
|
|
39
37
|
string.gsub(/<[^>]*(>+|\s*\z)/m, '').strip
|
|
40
38
|
end
|
|
41
|
-
|
|
42
39
|
end
|
|
43
|
-
|
|
44
40
|
end
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Helpers
|
|
4
|
-
|
|
5
4
|
# Contains functionality for building XML sitemaps that will be crawled by
|
|
6
5
|
# search engines. See the [Sitemaps protocol site](http://www.sitemaps.org)
|
|
7
6
|
# for details.
|
|
8
7
|
module XMLSitemap
|
|
9
|
-
|
|
10
8
|
# Builds an XML sitemap and returns it.
|
|
11
9
|
#
|
|
12
10
|
# The following attributes can optionally be set on items to change the
|
|
@@ -48,7 +46,7 @@ module Nanoc::Helpers
|
|
|
48
46
|
|
|
49
47
|
# Create builder
|
|
50
48
|
buffer = ''
|
|
51
|
-
xml = Builder::XmlMarkup.new(:
|
|
49
|
+
xml = Builder::XmlMarkup.new(target: buffer, indent: 2)
|
|
52
50
|
|
|
53
51
|
# Check for required attributes
|
|
54
52
|
if @site.config[:base_url].nil?
|
|
@@ -57,9 +55,9 @@ module Nanoc::Helpers
|
|
|
57
55
|
|
|
58
56
|
# Build sitemap
|
|
59
57
|
xml.instruct!
|
|
60
|
-
xml.urlset(:
|
|
58
|
+
xml.urlset(xmlns: 'http://www.sitemaps.org/schemas/sitemap/0.9') do
|
|
61
59
|
# Add item
|
|
62
|
-
items.sort_by
|
|
60
|
+
items.sort_by(&:identifier).each do |item|
|
|
63
61
|
reps = item.reps.reject { |r| r.raw_path.nil? }
|
|
64
62
|
reps.reject! { |r| !select_proc[r] } if select_proc
|
|
65
63
|
reps.sort_by { |r| r.name.to_s }.each do |rep|
|
|
@@ -76,7 +74,5 @@ module Nanoc::Helpers
|
|
|
76
74
|
# Return sitemap
|
|
77
75
|
buffer
|
|
78
76
|
end
|
|
79
|
-
|
|
80
77
|
end
|
|
81
|
-
|
|
82
78
|
end
|
data/lib/nanoc/tasks/clean.rb
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
module Nanoc::Tasks
|
|
4
|
-
|
|
5
4
|
class Clean
|
|
6
|
-
|
|
7
5
|
def initialize(site)
|
|
8
6
|
@site = site
|
|
9
7
|
end
|
|
@@ -18,12 +16,8 @@ module Nanoc::Tasks
|
|
|
18
16
|
|
|
19
17
|
def filenames
|
|
20
18
|
@site.items.map do |item|
|
|
21
|
-
item.reps.map
|
|
22
|
-
rep.raw_path
|
|
23
|
-
end
|
|
19
|
+
item.reps.map(&:raw_path)
|
|
24
20
|
end.flatten
|
|
25
21
|
end
|
|
26
|
-
|
|
27
22
|
end
|
|
28
|
-
|
|
29
23
|
end
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
namespace :validate do
|
|
4
|
-
|
|
5
4
|
desc 'Validate the site’s HTML files'
|
|
6
5
|
task :html do
|
|
7
6
|
Nanoc::CLI.run %w( validate_html )
|
|
@@ -13,7 +12,6 @@ namespace :validate do
|
|
|
13
12
|
end
|
|
14
13
|
|
|
15
14
|
namespace :links do
|
|
16
|
-
|
|
17
15
|
desc 'Validate the site’s internal links'
|
|
18
16
|
task :internal do
|
|
19
17
|
Nanoc::CLI.run %w( validate_links --internal )
|
|
@@ -23,12 +21,10 @@ namespace :validate do
|
|
|
23
21
|
task :external do
|
|
24
22
|
Nanoc::CLI.run %w( validate_links --external )
|
|
25
23
|
end
|
|
26
|
-
|
|
27
24
|
end
|
|
28
25
|
|
|
29
26
|
desc 'Validate the site’s internal and external links'
|
|
30
27
|
task :links do
|
|
31
28
|
Nanoc::CLI.run %w( validate_links )
|
|
32
29
|
end
|
|
33
|
-
|
|
34
30
|
end
|
data/lib/nanoc/version.rb
CHANGED
data/nanoc.gemspec
CHANGED
|
@@ -14,17 +14,20 @@ Gem::Specification.new do |s|
|
|
|
14
14
|
s.email = 'denis.defreyne@stoneship.org'
|
|
15
15
|
s.license = 'MIT'
|
|
16
16
|
|
|
17
|
-
s.files
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
s.
|
|
17
|
+
s.files =
|
|
18
|
+
Dir['[A-Z]*'] +
|
|
19
|
+
Dir['doc/yardoc_{templates,handlers}/**/*'] +
|
|
20
|
+
Dir['{bin,lib,tasks,test}/**/*'] +
|
|
21
|
+
['nanoc.gemspec']
|
|
22
|
+
s.executables = ['nanoc']
|
|
23
|
+
s.require_paths = ['lib']
|
|
23
24
|
|
|
24
|
-
s.rdoc_options = [
|
|
25
|
-
s.extra_rdoc_files = [
|
|
25
|
+
s.rdoc_options = ['--main', 'README.md']
|
|
26
|
+
s.extra_rdoc_files = ['ChangeLog', 'LICENSE', 'README.md', 'NEWS.md']
|
|
27
|
+
|
|
28
|
+
s.required_ruby_version = '>= 1.9.3'
|
|
26
29
|
|
|
27
30
|
s.add_runtime_dependency('cri', '~> 2.3')
|
|
28
31
|
|
|
29
|
-
s.add_development_dependency('bundler', '
|
|
32
|
+
s.add_development_dependency('bundler', '>= 1.7.10', '< 2.0')
|
|
30
33
|
end
|
data/tasks/rubocop.rake
CHANGED
data/tasks/test.rake
CHANGED
|
@@ -12,26 +12,25 @@ def run_tests(dir_glob)
|
|
|
12
12
|
test_files = Dir["#{dir_glob}*_spec.rb"] + Dir["#{dir_glob}test_*.rb"]
|
|
13
13
|
test_files.each { |f| require f }
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
res = MiniTest::Unit.new.run(ENV['ARGS'].split)
|
|
16
|
+
exit(res) if res != 0
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
namespace :test do
|
|
19
|
-
|
|
20
20
|
# test:all
|
|
21
21
|
desc 'Run all tests'
|
|
22
22
|
task :all do
|
|
23
|
-
run_tests
|
|
23
|
+
run_tests 'test/**/'
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# test:...
|
|
27
27
|
%w( base cli data_sources extra filters helpers tasks ).each do |dir|
|
|
28
28
|
desc "Run all #{dir} tests"
|
|
29
|
-
task dir.to_sym do |
|
|
29
|
+
task dir.to_sym do |_task|
|
|
30
30
|
run_tests "test/#{dir}/**/"
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
|
-
|
|
34
33
|
end
|
|
35
34
|
|
|
36
|
-
desc 'Alias for test:all'
|
|
37
|
-
task :
|
|
35
|
+
desc 'Alias for test:all + rubocop'
|
|
36
|
+
task test: [:'test:all', :rubocop]
|
|
@@ -3,21 +3,17 @@
|
|
|
3
3
|
require 'tempfile'
|
|
4
4
|
|
|
5
5
|
describe Nanoc::Checksummer do
|
|
6
|
-
|
|
7
6
|
subject { Nanoc::Checksummer }
|
|
8
7
|
|
|
9
8
|
CHECKSUM_REGEX = /\A[0-9a-zA-Z\/+]+=*\Z/
|
|
10
9
|
|
|
11
10
|
describe 'for String' do
|
|
12
|
-
|
|
13
11
|
it 'should checksum strings' do
|
|
14
12
|
subject.calc('foo').must_equal('+5k/BWvkYc6T1qhGaSyf3861CyE=')
|
|
15
13
|
end
|
|
16
|
-
|
|
17
14
|
end
|
|
18
15
|
|
|
19
16
|
describe 'for Array' do
|
|
20
|
-
|
|
21
17
|
it 'should checksum arrays' do
|
|
22
18
|
subject.calc([1, 'a', :a]).must_equal 'YtWOEFUAMQritkY38KXHFZM/n2E='
|
|
23
19
|
end
|
|
@@ -30,10 +26,14 @@ describe Nanoc::Checksummer do
|
|
|
30
26
|
subject.calc([-> {}]).must_match(CHECKSUM_REGEX)
|
|
31
27
|
end
|
|
32
28
|
|
|
29
|
+
it 'should checksum recursive arrays' do
|
|
30
|
+
array = [:a]
|
|
31
|
+
array << array
|
|
32
|
+
subject.calc(array).must_equal('mR3c98xA5ecazxx+M3h0Ss4/J20=')
|
|
33
|
+
end
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
describe 'for Hash' do
|
|
36
|
-
|
|
37
37
|
it 'should checksum hashes' do
|
|
38
38
|
subject.calc({ a: 1, b: 2 }).must_equal 'qY8fW6gWK7F1XQ9MLrx3Gru/RTY='
|
|
39
39
|
end
|
|
@@ -43,18 +43,28 @@ describe Nanoc::Checksummer do
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
it 'should checksum non-serializable hashes' do
|
|
46
|
-
subject.calc({ a: ->{} }).must_match(CHECKSUM_REGEX)
|
|
46
|
+
subject.calc({ a: -> {} }).must_match(CHECKSUM_REGEX)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
+
it 'should checksum recursive hash keys' do
|
|
50
|
+
hash = {}
|
|
51
|
+
hash[hash] = 123
|
|
52
|
+
subject.calc(hash).must_equal('mKucWMhRtR/FHWNqR/EErF4qgTk=')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it 'should checksum recursive hash values' do
|
|
56
|
+
hash = {}
|
|
57
|
+
hash[123] = hash
|
|
58
|
+
subject.calc(hash).must_equal('PBiDX0nWnV+DAYB+w+xM0Kf21ZM=')
|
|
59
|
+
end
|
|
49
60
|
end
|
|
50
61
|
|
|
51
62
|
describe 'for Pathname' do
|
|
52
|
-
|
|
53
63
|
let(:file) { Tempfile.new('foo') }
|
|
54
64
|
let(:filename) { file.path }
|
|
55
65
|
let(:pathname) { Pathname.new(filename) }
|
|
56
|
-
let(:atime) {
|
|
57
|
-
let(:mtime) {
|
|
66
|
+
let(:atime) { 1_234_567_890 }
|
|
67
|
+
let(:mtime) { 1_234_567_890 }
|
|
58
68
|
let(:data) { 'stuffs' }
|
|
59
69
|
let(:normal_checksum) { 'THy7Y28oroov/KvPxT6wcMnXr/s=' }
|
|
60
70
|
|
|
@@ -69,14 +79,12 @@ describe Nanoc::Checksummer do
|
|
|
69
79
|
end
|
|
70
80
|
|
|
71
81
|
describe 'does not exist' do
|
|
72
|
-
|
|
73
82
|
let(:non_existing_filename) { 'askldjfklaslasdfkjsajdf' }
|
|
74
83
|
let(:pathname) { Pathname.new(filename) }
|
|
75
84
|
|
|
76
85
|
it 'should still checksum' do
|
|
77
86
|
subject.calc(pathname).must_equal(normal_checksum)
|
|
78
87
|
end
|
|
79
|
-
|
|
80
88
|
end
|
|
81
89
|
|
|
82
90
|
it 'should get the mtime right' do
|
|
@@ -94,43 +102,35 @@ describe Nanoc::Checksummer do
|
|
|
94
102
|
end
|
|
95
103
|
|
|
96
104
|
describe 'if the mtime changes' do
|
|
97
|
-
|
|
98
|
-
let(:mtime) { 1333333333 }
|
|
105
|
+
let(:mtime) { 1_333_333_333 }
|
|
99
106
|
|
|
100
107
|
it 'should have a different checksum' do
|
|
101
108
|
subject.calc(pathname).must_match(CHECKSUM_REGEX)
|
|
102
109
|
subject.calc(pathname).wont_equal(normal_checksum)
|
|
103
110
|
end
|
|
104
|
-
|
|
105
111
|
end
|
|
106
112
|
|
|
107
113
|
describe 'if the content changes, but not the file size' do
|
|
108
|
-
|
|
109
114
|
let(:data) { 'STUFF!' }
|
|
110
115
|
|
|
111
116
|
it 'should have the same checksum' do
|
|
112
117
|
subject.calc(pathname).must_equal(normal_checksum)
|
|
113
118
|
end
|
|
114
|
-
|
|
115
119
|
end
|
|
116
120
|
|
|
117
121
|
describe 'if the file size changes' do
|
|
118
|
-
|
|
119
122
|
let(:data) { 'stuff and stuff and stuff!!!' }
|
|
120
123
|
|
|
121
124
|
it 'should have a different checksum' do
|
|
122
125
|
subject.calc(pathname).must_match(CHECKSUM_REGEX)
|
|
123
126
|
subject.calc(pathname).wont_equal(normal_checksum)
|
|
124
127
|
end
|
|
125
|
-
|
|
126
128
|
end
|
|
127
|
-
|
|
128
129
|
end
|
|
129
130
|
|
|
130
131
|
it 'should not have the same checksum for same content but different class'
|
|
131
132
|
|
|
132
133
|
describe 'for Nanoc::RulesCollection' do
|
|
133
|
-
|
|
134
134
|
let(:data) { 'STUFF!' }
|
|
135
135
|
let(:normal_checksum) { 'r4SwDpCp5saBPeZk2gQOJcipTZU=' }
|
|
136
136
|
|
|
@@ -145,20 +145,16 @@ describe Nanoc::Checksummer do
|
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
describe 'if the content changes' do
|
|
148
|
-
|
|
149
148
|
let(:data) { 'Other stuff!' }
|
|
150
149
|
|
|
151
150
|
it 'should have a different checksum' do
|
|
152
151
|
subject.calc(rules_collection).must_match(CHECKSUM_REGEX)
|
|
153
152
|
subject.calc(rules_collection).wont_equal(normal_checksum)
|
|
154
153
|
end
|
|
155
|
-
|
|
156
154
|
end
|
|
157
|
-
|
|
158
155
|
end
|
|
159
156
|
|
|
160
157
|
describe 'for Nanoc::CodeSnippet' do
|
|
161
|
-
|
|
162
158
|
let(:data) { 'asdf' }
|
|
163
159
|
let(:filename) { File.expand_path('bob.txt') }
|
|
164
160
|
let(:code_snippet) { Nanoc::CodeSnippet.new(data, filename) }
|
|
@@ -169,30 +165,24 @@ describe Nanoc::Checksummer do
|
|
|
169
165
|
end
|
|
170
166
|
|
|
171
167
|
describe 'if the filename changes' do
|
|
172
|
-
|
|
173
168
|
let(:filename) { File.expand_path('george.txt') }
|
|
174
169
|
|
|
175
170
|
it 'should have the same checksum' do
|
|
176
171
|
subject.calc(code_snippet).must_equal(normal_checksum)
|
|
177
172
|
end
|
|
178
|
-
|
|
179
173
|
end
|
|
180
174
|
|
|
181
175
|
describe 'if the content changes' do
|
|
182
|
-
|
|
183
176
|
let(:data) { 'Other stuff!' }
|
|
184
177
|
|
|
185
178
|
it 'should have a different checksum' do
|
|
186
179
|
subject.calc(code_snippet).must_match(CHECKSUM_REGEX)
|
|
187
180
|
subject.calc(code_snippet).wont_equal(normal_checksum)
|
|
188
181
|
end
|
|
189
|
-
|
|
190
182
|
end
|
|
191
|
-
|
|
192
183
|
end
|
|
193
184
|
|
|
194
185
|
describe 'for Nanoc::Configuration' do
|
|
195
|
-
|
|
196
186
|
let(:wrapped) { { a: 1, b: 2 } }
|
|
197
187
|
let(:configuration) { Nanoc::Configuration.new(wrapped) }
|
|
198
188
|
let(:normal_checksum) { 'eYYQ74x29njbtXMtuKZX/ogD8JA=' }
|
|
@@ -202,20 +192,16 @@ describe Nanoc::Checksummer do
|
|
|
202
192
|
end
|
|
203
193
|
|
|
204
194
|
describe 'if the content changes' do
|
|
205
|
-
|
|
206
195
|
let(:wrapped) { { a: 666, b: 2 } }
|
|
207
196
|
|
|
208
197
|
it 'should have a different checksum' do
|
|
209
198
|
subject.calc(configuration).must_match(CHECKSUM_REGEX)
|
|
210
199
|
subject.calc(configuration).wont_equal(normal_checksum)
|
|
211
200
|
end
|
|
212
|
-
|
|
213
201
|
end
|
|
214
|
-
|
|
215
202
|
end
|
|
216
203
|
|
|
217
204
|
describe 'for Nanoc::Item' do
|
|
218
|
-
|
|
219
205
|
let(:content) { 'asdf' }
|
|
220
206
|
let(:filename) { File.expand_path('bob.txt') }
|
|
221
207
|
let(:attributes) { { a: 1, b: 2 } }
|
|
@@ -227,48 +213,46 @@ describe Nanoc::Checksummer do
|
|
|
227
213
|
subject.calc(item).must_equal(normal_checksum)
|
|
228
214
|
end
|
|
229
215
|
|
|
230
|
-
describe 'with
|
|
216
|
+
describe 'with recursive attributes' do
|
|
217
|
+
it 'should checksum' do
|
|
218
|
+
item.attributes[:a] = item
|
|
219
|
+
subject.calc(item).must_match(CHECKSUM_REGEX)
|
|
220
|
+
subject.calc(item).wont_equal(normal_checksum)
|
|
221
|
+
end
|
|
222
|
+
end
|
|
231
223
|
|
|
224
|
+
describe 'with changed attributes' do
|
|
232
225
|
let(:attributes) { { x: 4, y: 5 } }
|
|
233
226
|
|
|
234
227
|
it 'should have a different checksum' do
|
|
235
228
|
subject.calc(item).must_match(CHECKSUM_REGEX)
|
|
236
229
|
subject.calc(item).wont_equal(normal_checksum)
|
|
237
230
|
end
|
|
238
|
-
|
|
239
231
|
end
|
|
240
232
|
|
|
241
233
|
describe 'with changed content' do
|
|
242
|
-
|
|
243
234
|
let(:content) { 'something drastically different' }
|
|
244
235
|
|
|
245
236
|
it 'should have a different checksum' do
|
|
246
237
|
subject.calc(item).must_match(CHECKSUM_REGEX)
|
|
247
238
|
subject.calc(item).wont_equal(normal_checksum)
|
|
248
239
|
end
|
|
249
|
-
|
|
250
240
|
end
|
|
251
|
-
|
|
252
241
|
end
|
|
253
242
|
|
|
254
243
|
describe 'for other marshal-able classes' do
|
|
255
|
-
|
|
256
244
|
let(:obj) { :foobar }
|
|
257
245
|
|
|
258
246
|
it 'should checksum' do
|
|
259
247
|
subject.calc(obj).must_match(CHECKSUM_REGEX)
|
|
260
248
|
end
|
|
261
|
-
|
|
262
249
|
end
|
|
263
250
|
|
|
264
251
|
describe 'for other non-marshal-able classes' do
|
|
265
|
-
|
|
266
252
|
let(:obj) { proc {} }
|
|
267
253
|
|
|
268
254
|
it 'should checksum' do
|
|
269
255
|
subject.calc(obj).must_match(CHECKSUM_REGEX)
|
|
270
256
|
end
|
|
271
|
-
|
|
272
257
|
end
|
|
273
|
-
|
|
274
258
|
end
|