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.
Files changed (284) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +19 -18
  3. data/LICENSE +1 -1
  4. data/NEWS.md +14 -0
  5. data/Rakefile +1 -1
  6. data/doc/yardoc_handlers/identifier.rb +1 -5
  7. data/lib/nanoc.rb +1 -3
  8. data/lib/nanoc/base.rb +1 -4
  9. data/lib/nanoc/base/checksummer.rb +10 -12
  10. data/lib/nanoc/base/compilation/checksum_store.rb +0 -4
  11. data/lib/nanoc/base/compilation/compiled_content_cache.rb +0 -4
  12. data/lib/nanoc/base/compilation/compiler.rb +27 -31
  13. data/lib/nanoc/base/compilation/compiler_dsl.rb +3 -7
  14. data/lib/nanoc/base/compilation/dependency_tracker.rb +2 -6
  15. data/lib/nanoc/base/compilation/filter.rb +1 -7
  16. data/lib/nanoc/base/compilation/item_rep_proxy.rb +0 -4
  17. data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +0 -4
  18. data/lib/nanoc/base/compilation/outdatedness_checker.rb +0 -4
  19. data/lib/nanoc/base/compilation/outdatedness_reasons.rb +0 -6
  20. data/lib/nanoc/base/compilation/rule.rb +1 -5
  21. data/lib/nanoc/base/compilation/rule_context.rb +7 -11
  22. data/lib/nanoc/base/compilation/rule_memory_calculator.rb +0 -4
  23. data/lib/nanoc/base/compilation/rule_memory_store.rb +0 -4
  24. data/lib/nanoc/base/compilation/rules_collection.rb +5 -9
  25. data/lib/nanoc/base/context.rb +0 -3
  26. data/lib/nanoc/base/core_ext.rb +0 -1
  27. data/lib/nanoc/base/core_ext/array.rb +0 -2
  28. data/lib/nanoc/base/core_ext/hash.rb +0 -2
  29. data/lib/nanoc/base/core_ext/pathname.rb +0 -2
  30. data/lib/nanoc/base/core_ext/string.rb +0 -2
  31. data/lib/nanoc/base/directed_graph.rb +0 -4
  32. data/lib/nanoc/base/errors.rb +1 -39
  33. data/lib/nanoc/base/memoization.rb +0 -4
  34. data/lib/nanoc/base/notification_center.rb +1 -7
  35. data/lib/nanoc/base/plugin_registry.rb +4 -10
  36. data/lib/nanoc/base/result_data/item_rep.rb +8 -16
  37. data/lib/nanoc/base/source_data/code_snippet.rb +1 -5
  38. data/lib/nanoc/base/source_data/configuration.rb +0 -4
  39. data/lib/nanoc/base/source_data/data_source.rb +2 -5
  40. data/lib/nanoc/base/source_data/item.rb +3 -7
  41. data/lib/nanoc/base/source_data/item_array.rb +1 -5
  42. data/lib/nanoc/base/source_data/layout.rb +2 -6
  43. data/lib/nanoc/base/source_data/site.rb +20 -23
  44. data/lib/nanoc/base/store.rb +1 -5
  45. data/lib/nanoc/base/temp_filename_factory.rb +0 -4
  46. data/lib/nanoc/cli.rb +3 -5
  47. data/lib/nanoc/cli/ansi_string_colorizer.rb +6 -10
  48. data/lib/nanoc/cli/cleaning_stream.rb +2 -6
  49. data/lib/nanoc/cli/command_runner.rb +1 -5
  50. data/lib/nanoc/cli/commands/autocompile.rb +2 -6
  51. data/lib/nanoc/cli/commands/check.rb +0 -4
  52. data/lib/nanoc/cli/commands/compile.rb +12 -27
  53. data/lib/nanoc/cli/commands/create-item.rb +1 -5
  54. data/lib/nanoc/cli/commands/create-layout.rb +0 -4
  55. data/lib/nanoc/cli/commands/create-site.rb +2 -8
  56. data/lib/nanoc/cli/commands/deploy.rb +3 -7
  57. data/lib/nanoc/cli/commands/prune.rb +2 -6
  58. data/lib/nanoc/cli/commands/shell.rb +4 -8
  59. data/lib/nanoc/cli/commands/show-data.rb +3 -7
  60. data/lib/nanoc/cli/commands/show-plugins.rb +3 -7
  61. data/lib/nanoc/cli/commands/show-rules.rb +11 -15
  62. data/lib/nanoc/cli/commands/sync.rb +0 -4
  63. data/lib/nanoc/cli/commands/update.rb +1 -7
  64. data/lib/nanoc/cli/commands/validate-css.rb +0 -4
  65. data/lib/nanoc/cli/commands/validate-html.rb +0 -4
  66. data/lib/nanoc/cli/commands/validate-links.rb +0 -4
  67. data/lib/nanoc/cli/commands/view.rb +3 -7
  68. data/lib/nanoc/cli/commands/watch.rb +4 -10
  69. data/lib/nanoc/cli/error_handler.rb +9 -13
  70. data/lib/nanoc/cli/logger.rb +8 -12
  71. data/lib/nanoc/cli/stream_cleaners.rb +0 -4
  72. data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -5
  73. data/lib/nanoc/cli/stream_cleaners/ansi_colors.rb +0 -4
  74. data/lib/nanoc/cli/stream_cleaners/utf8.rb +1 -5
  75. data/lib/nanoc/data_sources.rb +2 -4
  76. data/lib/nanoc/data_sources/deprecated/delicious.rb +6 -10
  77. data/lib/nanoc/data_sources/deprecated/last_fm.rb +7 -11
  78. data/lib/nanoc/data_sources/deprecated/twitter.rb +2 -6
  79. data/lib/nanoc/data_sources/filesystem.rb +10 -13
  80. data/lib/nanoc/data_sources/filesystem_unified.rb +0 -4
  81. data/lib/nanoc/data_sources/filesystem_verbose.rb +0 -4
  82. data/lib/nanoc/data_sources/static.rb +4 -8
  83. data/lib/nanoc/extra.rb +2 -4
  84. data/lib/nanoc/extra/auto_compiler.rb +2 -6
  85. data/lib/nanoc/extra/checking.rb +0 -4
  86. data/lib/nanoc/extra/checking/check.rb +0 -4
  87. data/lib/nanoc/extra/checking/checks.rb +0 -2
  88. data/lib/nanoc/extra/checking/checks/css.rb +6 -6
  89. data/lib/nanoc/extra/checking/checks/external_links.rb +3 -11
  90. data/lib/nanoc/extra/checking/checks/html.rb +6 -6
  91. data/lib/nanoc/extra/checking/checks/internal_links.rb +3 -7
  92. data/lib/nanoc/extra/checking/checks/stale.rb +3 -7
  93. data/lib/nanoc/extra/checking/dsl.rb +0 -4
  94. data/lib/nanoc/extra/checking/issue.rb +0 -4
  95. data/lib/nanoc/extra/checking/runner.rb +4 -7
  96. data/lib/nanoc/extra/chick.rb +7 -17
  97. data/lib/nanoc/extra/core_ext.rb +0 -1
  98. data/lib/nanoc/extra/core_ext/pathname.rb +0 -4
  99. data/lib/nanoc/extra/core_ext/time.rb +0 -2
  100. data/lib/nanoc/extra/deployer.rb +0 -4
  101. data/lib/nanoc/extra/deployers.rb +0 -4
  102. data/lib/nanoc/extra/deployers/fog.rb +7 -11
  103. data/lib/nanoc/extra/deployers/rsync.rb +1 -5
  104. data/lib/nanoc/extra/file_proxy.rb +1 -5
  105. data/lib/nanoc/extra/filesystem_tools.rb +37 -12
  106. data/lib/nanoc/extra/jruby_nokogiri_warner.rb +0 -4
  107. data/lib/nanoc/extra/link_collector.rb +3 -7
  108. data/lib/nanoc/extra/piper.rb +0 -6
  109. data/lib/nanoc/extra/pruner.rb +1 -7
  110. data/lib/nanoc/extra/validators.rb +0 -4
  111. data/lib/nanoc/extra/validators/links.rb +0 -4
  112. data/lib/nanoc/extra/validators/w3c.rb +0 -4
  113. data/lib/nanoc/extra/vcs.rb +3 -7
  114. data/lib/nanoc/extra/vcses.rb +0 -2
  115. data/lib/nanoc/extra/vcses/bazaar.rb +0 -4
  116. data/lib/nanoc/extra/vcses/dummy.rb +0 -4
  117. data/lib/nanoc/extra/vcses/git.rb +0 -4
  118. data/lib/nanoc/extra/vcses/mercurial.rb +0 -4
  119. data/lib/nanoc/extra/vcses/subversion.rb +0 -4
  120. data/lib/nanoc/filters.rb +0 -2
  121. data/lib/nanoc/filters/asciidoc.rb +1 -5
  122. data/lib/nanoc/filters/bluecloth.rb +0 -2
  123. data/lib/nanoc/filters/coderay.rb +0 -2
  124. data/lib/nanoc/filters/coffeescript.rb +0 -4
  125. data/lib/nanoc/filters/colorize_syntax.rb +17 -15
  126. data/lib/nanoc/filters/erb.rb +1 -3
  127. data/lib/nanoc/filters/erubis.rb +2 -4
  128. data/lib/nanoc/filters/haml.rb +2 -4
  129. data/lib/nanoc/filters/handlebars.rb +0 -4
  130. data/lib/nanoc/filters/kramdown.rb +7 -4
  131. data/lib/nanoc/filters/less.rb +1 -3
  132. data/lib/nanoc/filters/markaby.rb +0 -2
  133. data/lib/nanoc/filters/maruku.rb +0 -2
  134. data/lib/nanoc/filters/mustache.rb +1 -5
  135. data/lib/nanoc/filters/pandoc.rb +0 -2
  136. data/lib/nanoc/filters/rainpress.rb +0 -2
  137. data/lib/nanoc/filters/rdiscount.rb +0 -2
  138. data/lib/nanoc/filters/rdoc.rb +0 -2
  139. data/lib/nanoc/filters/redcarpet.rb +0 -4
  140. data/lib/nanoc/filters/redcloth.rb +0 -2
  141. data/lib/nanoc/filters/relativize_paths.rb +2 -4
  142. data/lib/nanoc/filters/rubypants.rb +0 -2
  143. data/lib/nanoc/filters/sass.rb +2 -4
  144. data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +0 -2
  145. data/lib/nanoc/filters/slim.rb +2 -6
  146. data/lib/nanoc/filters/typogruby.rb +0 -4
  147. data/lib/nanoc/filters/uglify_js.rb +0 -2
  148. data/lib/nanoc/filters/xsl.rb +1 -5
  149. data/lib/nanoc/filters/yui_compressor.rb +0 -4
  150. data/lib/nanoc/helpers.rb +0 -2
  151. data/lib/nanoc/helpers/blogging.rb +12 -20
  152. data/lib/nanoc/helpers/breadcrumbs.rb +0 -4
  153. data/lib/nanoc/helpers/capturing.rb +2 -10
  154. data/lib/nanoc/helpers/filtering.rb +0 -4
  155. data/lib/nanoc/helpers/html_escape.rb +3 -7
  156. data/lib/nanoc/helpers/link_to.rb +0 -4
  157. data/lib/nanoc/helpers/rendering.rb +8 -12
  158. data/lib/nanoc/helpers/tagging.rb +0 -4
  159. data/lib/nanoc/helpers/text.rb +1 -5
  160. data/lib/nanoc/helpers/xml_sitemap.rb +3 -7
  161. data/lib/nanoc/tasks/clean.rb +1 -7
  162. data/lib/nanoc/tasks/deploy/rsync.rake +0 -2
  163. data/lib/nanoc/tasks/validate.rake +0 -4
  164. data/lib/nanoc/version.rb +1 -3
  165. data/nanoc.gemspec +12 -9
  166. data/tasks/rubocop.rake +1 -1
  167. data/tasks/test.rake +6 -7
  168. data/test/base/checksummer_spec.rb +28 -44
  169. data/test/base/core_ext/array_spec.rb +1 -9
  170. data/test/base/core_ext/hash_spec.rb +7 -19
  171. data/test/base/core_ext/pathname_spec.rb +2 -4
  172. data/test/base/core_ext/string_spec.rb +0 -4
  173. data/test/base/temp_filename_factory_spec.rb +0 -8
  174. data/test/base/test_checksum_store.rb +0 -2
  175. data/test/base/test_code_snippet.rb +0 -2
  176. data/test/base/test_compiler.rb +15 -17
  177. data/test/base/test_compiler_dsl.rb +7 -9
  178. data/test/base/test_context.rb +2 -4
  179. data/test/base/test_data_source.rb +0 -2
  180. data/test/base/test_dependency_tracker.rb +0 -2
  181. data/test/base/test_directed_graph.rb +2 -4
  182. data/test/base/test_filter.rb +5 -7
  183. data/test/base/test_item.rb +17 -13
  184. data/test/base/test_item_array.rb +2 -4
  185. data/test/base/test_item_rep.rb +79 -73
  186. data/test/base/test_layout.rb +3 -5
  187. data/test/base/test_memoization.rb +13 -21
  188. data/test/base/test_notification_center.rb +0 -2
  189. data/test/base/test_outdatedness_checker.rb +34 -36
  190. data/test/base/test_plugin.rb +0 -2
  191. data/test/base/test_rule.rb +3 -5
  192. data/test/base/test_rule_context.rb +4 -6
  193. data/test/base/test_site.rb +9 -17
  194. data/test/base/test_store.rb +2 -6
  195. data/test/cli/commands/test_check.rb +1 -3
  196. data/test/cli/commands/test_compile.rb +24 -15
  197. data/test/cli/commands/test_create_item.rb +1 -3
  198. data/test/cli/commands/test_create_layout.rb +0 -2
  199. data/test/cli/commands/test_create_site.rb +0 -3
  200. data/test/cli/commands/test_deploy.rb +9 -11
  201. data/test/cli/commands/test_help.rb +0 -2
  202. data/test/cli/commands/test_info.rb +0 -2
  203. data/test/cli/commands/test_prune.rb +6 -8
  204. data/test/cli/commands/test_sync.rb +0 -2
  205. data/test/cli/commands/test_update.rb +0 -2
  206. data/test/cli/commands/test_watch.rb +4 -6
  207. data/test/cli/test_cleaning_stream.rb +4 -6
  208. data/test/cli/test_cli.rb +9 -5
  209. data/test/cli/test_error_handler.rb +9 -7
  210. data/test/cli/test_logger.rb +0 -2
  211. data/test/data_sources/test_filesystem.rb +8 -10
  212. data/test/data_sources/test_filesystem_unified.rb +35 -34
  213. data/test/data_sources/test_filesystem_verbose.rb +31 -33
  214. data/test/data_sources/test_static.rb +20 -21
  215. data/test/extra/checking/checks/test_css.rb +23 -2
  216. data/test/extra/checking/checks/test_external_links.rb +2 -4
  217. data/test/extra/checking/checks/test_html.rb +4 -3
  218. data/test/extra/checking/checks/test_internal_links.rb +1 -3
  219. data/test/extra/checking/checks/test_stale.rb +4 -6
  220. data/test/extra/checking/test_check.rb +0 -2
  221. data/test/extra/checking/test_dsl.rb +1 -3
  222. data/test/extra/checking/test_runner.rb +0 -2
  223. data/test/extra/core_ext/test_pathname.rb +0 -3
  224. data/test/extra/core_ext/test_time.rb +0 -2
  225. data/test/extra/deployers/test_fog.rb +13 -15
  226. data/test/extra/deployers/test_rsync.rb +4 -6
  227. data/test/extra/test_auto_compiler.rb +47 -25
  228. data/test/extra/test_file_proxy.rb +1 -3
  229. data/test/extra/test_filesystem_tools.rb +47 -7
  230. data/test/extra/test_link_collector.rb +0 -2
  231. data/test/extra/test_piper.rb +3 -5
  232. data/test/extra/test_vcs.rb +0 -2
  233. data/test/extra/validators/test_links.rb +0 -1
  234. data/test/extra/validators/test_w3c.rb +2 -4
  235. data/test/filters/test_asciidoc.rb +0 -2
  236. data/test/filters/test_bluecloth.rb +0 -2
  237. data/test/filters/test_coderay.rb +2 -4
  238. data/test/filters/test_coffeescript.rb +0 -2
  239. data/test/filters/test_colorize_syntax.rb +16 -18
  240. data/test/filters/test_erb.rb +12 -14
  241. data/test/filters/test_erubis.rb +4 -6
  242. data/test/filters/test_haml.rb +7 -9
  243. data/test/filters/test_handlebars.rb +10 -12
  244. data/test/filters/test_kramdown.rb +13 -1
  245. data/test/filters/test_less.rb +9 -11
  246. data/test/filters/test_markaby.rb +0 -2
  247. data/test/filters/test_maruku.rb +0 -2
  248. data/test/filters/test_mustache.rb +4 -6
  249. data/test/filters/test_pandoc.rb +1 -3
  250. data/test/filters/test_rainpress.rb +1 -3
  251. data/test/filters/test_rdiscount.rb +1 -3
  252. data/test/filters/test_rdoc.rb +0 -2
  253. data/test/filters/test_redcarpet.rb +6 -8
  254. data/test/filters/test_redcloth.rb +1 -3
  255. data/test/filters/test_relativize_paths.rb +29 -34
  256. data/test/filters/test_rubypants.rb +0 -2
  257. data/test/filters/test_sass.rb +8 -10
  258. data/test/filters/test_slim.rb +2 -4
  259. data/test/filters/test_typogruby.rb +0 -3
  260. data/test/filters/test_uglify_js.rb +2 -4
  261. data/test/filters/test_xsl.rb +16 -18
  262. data/test/filters/test_yui_compressor.rb +3 -5
  263. data/test/fixtures/vcr_cassettes/css_run_parse_error.yml +65 -0
  264. data/test/gem_loader.rb +1 -1
  265. data/test/helper.rb +11 -15
  266. data/test/helpers/test_blogging.rb +61 -63
  267. data/test/helpers/test_breadcrumbs.rb +0 -2
  268. data/test/helpers/test_capturing.rb +4 -6
  269. data/test/helpers/test_filtering.rb +2 -4
  270. data/test/helpers/test_html_escape.rb +0 -2
  271. data/test/helpers/test_link_to.rb +5 -6
  272. data/test/helpers/test_rendering.rb +2 -4
  273. data/test/helpers/test_tagging.rb +9 -11
  274. data/test/helpers/test_text.rb +6 -8
  275. data/test/helpers/test_xml_sitemap.rb +11 -13
  276. data/test/tasks/test_clean.rb +0 -2
  277. data/test/test_gem.rb +1 -3
  278. metadata +15 -14
  279. data/Gemfile.lock +0 -252
  280. data/lib/nanoc/base/core_ext/date.rb +0 -29
  281. data/lib/nanoc/base/ordered_hash.rb +0 -228
  282. data/lib/nanoc/extra/core_ext/enumerable.rb +0 -33
  283. data/test/base/core_ext/date_spec.rb +0 -15
  284. 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
- desc = e.message.gsub(%r{\s+}, ' ').strip
16
- add_issue(desc, :subject => filename)
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
- :subject => filename)
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 { |t| t.join }
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
- desc = e.message.gsub(%r{\s+}, ' ').strip
16
- add_issue(desc, :subject => filename)
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
- :subject => filename)
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 { |i| i.reps }.flatten.map { |r| r.raw_path })
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
- :subject => f)
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, :exclude => exclude_config)
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
- # @param [String] The name of the Checks file
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 { |p| p.last }.uniq
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 { |i| i.subject }.to_a.sort_by { |p| p.first }.each do |pair|
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
@@ -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
- :cache => {
21
- :metastore => 'file:tmp/rack/cache.meta',
22
- :entitystore => 'file:tmp/rack/cache.body'
17
+ cache: {
18
+ metastore: 'file:tmp/rack/cache.meta',
19
+ entitystore: 'file:tmp/rack/cache.body'
23
20
  },
24
- :cache_controller => {
25
- :max_age => 60
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(:verbose => true)
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, :method => 'GET')
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
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'nanoc/extra/core_ext/enumerable'
4
3
  require 'nanoc/extra/core_ext/pathname'
5
4
  require 'nanoc/extra/core_ext/time'
@@ -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
@@ -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