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,15 +1,11 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  module Deployers
6
-
7
5
  autoload 'Fog', 'nanoc/extra/deployers/fog'
8
6
  autoload 'Rsync', 'nanoc/extra/deployers/rsync'
9
7
 
10
8
  Nanoc::Extra::Deployer.register '::Nanoc::Extra::Deployers::Fog', :fog
11
9
  Nanoc::Extra::Deployer.register '::Nanoc::Extra::Deployers::Rsync', :rsync
12
-
13
10
  end
14
-
15
11
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra::Deployers
4
-
5
4
  # A deployer that deploys a site using [fog](https://github.com/geemus/fog).
6
5
  #
7
6
  # @example A deployment configuration with public and staging configurations
@@ -18,7 +17,6 @@ module Nanoc::Extra::Deployers
18
17
  # local_root: ~/myCloud
19
18
  # bucket: nanoc-site-staging
20
19
  class Fog < ::Nanoc::Extra::Deployer
21
-
22
20
  # @see Nanoc::Extra::Deployer#run
23
21
  def run
24
22
  require 'fog'
@@ -45,7 +43,7 @@ module Nanoc::Extra::Deployers
45
43
  # Get bucket
46
44
  puts 'Getting bucket'
47
45
  begin
48
- directory = connection.directories.get(bucket, :prefix => path)
46
+ directory = connection.directories.get(bucket, prefix: path)
49
47
  rescue ::Excon::Errors::NotFound
50
48
  should_create_bucket = true
51
49
  end
@@ -53,18 +51,18 @@ module Nanoc::Extra::Deployers
53
51
 
54
52
  # Create bucket if necessary
55
53
  if should_create_bucket
56
- directory = connection.directories.create(:key => bucket, :prefix => path)
54
+ directory = connection.directories.create(key: bucket, prefix: path)
57
55
  end
58
56
 
59
57
  # Get list of remote files
60
58
  files = directory.files
61
59
  truncated = files.respond_to?(:is_truncated) && files.is_truncated
62
60
  while truncated
63
- set = directory.files.all(:marker => files.last.key)
61
+ set = directory.files.all(marker: files.last.key)
64
62
  truncated = set.is_truncated
65
63
  files += set
66
64
  end
67
- keys_to_destroy = files.all.map { |file| file.key }
65
+ keys_to_destroy = files.all.map(&:key)
68
66
 
69
67
  # Upload all the files in the output folder to the clouds
70
68
  puts 'Uploading local files'
@@ -73,9 +71,9 @@ module Nanoc::Extra::Deployers
73
71
  files.each do |file_path|
74
72
  key = path ? File.join(path, file_path) : file_path
75
73
  directory.files.create(
76
- :key => key,
77
- :body => File.open(file_path),
78
- :public => true)
74
+ key: key,
75
+ body: File.open(file_path),
76
+ public: true)
79
77
  keys_to_destroy.delete(key)
80
78
  end
81
79
  end
@@ -95,7 +93,5 @@ module Nanoc::Extra::Deployers
95
93
  def error(msg)
96
94
  raise RuntimeError.new(msg)
97
95
  end
98
-
99
96
  end
100
-
101
97
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra::Deployers
4
-
5
4
  # A deployer that deploys a site using rsync.
6
5
  #
7
6
  # The configuration has should include a `:dst` value, a string containing
@@ -20,7 +19,6 @@ module Nanoc::Extra::Deployers
20
19
  # dst: "ectype:sites/stoneship-staging/public"
21
20
  # options: [ "-glpPrtvz" ]
22
21
  class Rsync < ::Nanoc::Extra::Deployer
23
-
24
22
  # Default rsync options
25
23
  DEFAULT_OPTIONS = [
26
24
  '--group',
@@ -60,10 +58,8 @@ module Nanoc::Extra::Deployers
60
58
  private
61
59
 
62
60
  def run_shell_cmd(cmd)
63
- piper = Nanoc::Extra::Piper.new(:stdout => $stdout, :stderr => $stderr)
61
+ piper = Nanoc::Extra::Piper.new(stdout: $stdout, stderr: $stderr)
64
62
  piper.run(cmd, nil)
65
63
  end
66
-
67
64
  end
68
-
69
65
  end
@@ -1,10 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  # @deprecated Create a File instance directly and use that instead.
6
5
  class FileProxy
7
-
8
6
  instance_methods.each { |m| undef_method m unless m =~ /^__/ || m.to_s == 'object_id' }
9
7
 
10
8
  @@deprecation_warning_shown = false
@@ -32,9 +30,7 @@ module Nanoc::Extra
32
30
  private
33
31
 
34
32
  def file_instance_methods
35
- @@file_instance_methods ||= Set.new(File.instance_methods.map { |m| m.to_sym })
33
+ @@file_instance_methods ||= Set.new(File.instance_methods.map(&:to_sym))
36
34
  end
37
-
38
35
  end
39
-
40
36
  end
@@ -1,17 +1,14 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  # Contains useful functions for managing the filesystem.
6
5
  #
7
6
  # @api private
8
7
  module FilesystemTools
9
-
10
8
  # Error that is raised when too many symlink indirections are encountered.
11
9
  #
12
10
  # @api private
13
11
  class MaxSymlinkDepthExceededError < ::Nanoc::Errors::GenericTrivial
14
-
15
12
  # @return [String] The last filename that was attempted to be
16
13
  # resolved before giving up
17
14
  attr_reader :filename
@@ -22,7 +19,6 @@ module Nanoc::Extra
22
19
  @filename = filename
23
20
  super("Too many indirections while resolving symlinks. I gave up after finding out #{filename} was yet another symlink. Sorry!")
24
21
  end
25
-
26
22
  end
27
23
 
28
24
  # Error that is raised when a file of an unknown type is encountered
@@ -30,7 +26,6 @@ module Nanoc::Extra
30
26
  #
31
27
  # @api private
32
28
  class UnsupportedFileTypeError < ::Nanoc::Errors::GenericTrivial
33
-
34
29
  # @return [String] The filename of the file whose type is not supported
35
30
  attr_reader :filename
36
31
 
@@ -40,7 +35,6 @@ module Nanoc::Extra
40
35
  @filename = filename
41
36
  super("The file at #{filename} is of an unsupported type (expected file, directory or link, but it is #{File.ftype(filename)}")
42
37
  end
43
-
44
38
  end
45
39
 
46
40
  # Returns all files in the given directory and directories below it,
@@ -49,18 +43,22 @@ module Nanoc::Extra
49
43
  # @param [String] dir_name The name of the directory whose contents to
50
44
  # fetch
51
45
  #
46
+ # @param [String, Array, nil] extra_files The list of extra patterns
47
+ # to extend the file search for files not found by default, example
48
+ # "**/.{htaccess,htpasswd}"
49
+ #
52
50
  # @param [Integer] recursion_limit The maximum number of times to
53
51
  # recurse into a symlink to a directory
54
52
  #
55
- # @return [Array<String>] A list of filenames
53
+ # @return [Array<String>] A list of file names
56
54
  #
57
55
  # @raise [MaxSymlinkDepthExceededError] if too many indirections are
58
56
  # encountered while resolving symlinks
59
57
  #
60
58
  # @raise [UnsupportedFileTypeError] if a file of an unsupported type is
61
59
  # detected (something other than file, directory or link)
62
- def all_files_in(dir_name, recursion_limit = 10)
63
- Dir[dir_name + '/**/*'].map do |fn|
60
+ def all_files_in(dir_name, extra_files, recursion_limit = 10)
61
+ all_files_and_dirs_in(dir_name, extra_files).map do |fn|
64
62
  case File.ftype(fn)
65
63
  when 'link'
66
64
  if 0 == recursion_limit
@@ -70,7 +68,7 @@ module Nanoc::Extra
70
68
  if File.file?(absolute_target)
71
69
  fn
72
70
  else
73
- all_files_in(absolute_target, recursion_limit - 1).map do |sfn|
71
+ all_files_in(absolute_target, extra_files, recursion_limit - 1).map do |sfn|
74
72
  fn + sfn[absolute_target.size..-1]
75
73
  end
76
74
  end
@@ -86,6 +84,35 @@ module Nanoc::Extra
86
84
  end
87
85
  module_function :all_files_in
88
86
 
87
+ # Returns all files and directories in the given directory and
88
+ # directories below it.
89
+ #
90
+ # @param [String] dir_name The name of the directory whose contents to
91
+ # fetch
92
+ #
93
+ # @param [String, Array, nil] extra_files The list of extra patterns
94
+ # to extend the file search for files not found by default, example
95
+ # "**/.{htaccess,htpasswd}"
96
+ #
97
+ # @return [Array<String>] A list of files and directories
98
+ #
99
+ # @raise [GenericTrivial] when pattern can not be handled
100
+ def all_files_and_dirs_in(dir_name, extra_files)
101
+ patterns = ["#{dir_name}/**/*"]
102
+ case extra_files
103
+ when nil
104
+ when String
105
+ patterns << "#{dir_name}/#{extra_files}"
106
+ when Array
107
+ patterns.concat(extra_files.map { |extra_file| "#{dir_name}/#{extra_file}" })
108
+ else
109
+ raise Nanoc::Errors::GenericTrivial,
110
+ "Do not know how to handle extra_files: #{extra_files.inspect}"
111
+ end
112
+ Dir.glob(patterns)
113
+ end
114
+ module_function :all_files_and_dirs_in
115
+
89
116
  # Resolves the given symlink into an absolute path.
90
117
  #
91
118
  # @param [String] filename The filename of the symlink to resolve
@@ -118,7 +145,5 @@ module Nanoc::Extra
118
145
  end
119
146
  end
120
147
  module_function :resolve_symlink
121
-
122
148
  end
123
-
124
149
  end
@@ -3,9 +3,7 @@
3
3
  require 'singleton'
4
4
 
5
5
  module Nanoc::Extra
6
-
7
6
  class JRubyNokogiriWarner
8
-
9
7
  include Singleton
10
8
 
11
9
  TEXT = <<EOS
@@ -42,7 +40,5 @@ EOS
42
40
  $stderr.puts TEXT
43
41
  @warned = true
44
42
  end
45
-
46
43
  end
47
-
48
44
  end
@@ -3,9 +3,7 @@
3
3
  require 'set'
4
4
 
5
5
  module ::Nanoc::Extra
6
-
7
6
  class LinkCollector
8
-
9
7
  def initialize(filenames, mode = nil)
10
8
  Nanoc::Extra::JRubyNokogiriWarner.check_and_warn
11
9
 
@@ -13,11 +11,11 @@ module ::Nanoc::Extra
13
11
  @filter =
14
12
  case mode
15
13
  when nil
16
- lambda { |_h| true }
14
+ ->(_h) { true }
17
15
  when :external
18
- lambda { |h| external_href?(h) }
16
+ ->(h) { external_href?(h) }
19
17
  when :internal
20
- lambda { |h| !external_href?(h) }
18
+ ->(h) { !external_href?(h) }
21
19
  else
22
20
  raise ArgumentError, 'Expected mode argument to be :internal, :external or nil'
23
21
  end
@@ -54,7 +52,5 @@ module ::Nanoc::Extra
54
52
 
55
53
  hrefs_in_file.select(&@filter)
56
54
  end
57
-
58
55
  end
59
-
60
56
  end
@@ -3,11 +3,8 @@
3
3
  require 'open3'
4
4
 
5
5
  module Nanoc::Extra
6
-
7
6
  class Piper
8
-
9
7
  class Error < ::Nanoc::Errors::Generic
10
-
11
8
  def initialize(command, exit_code)
12
9
  @command = command
13
10
  @exit_code = exit_code
@@ -16,7 +13,6 @@ module Nanoc::Extra
16
13
  def message
17
14
  "command exited with a nonzero status code #{@exit_code} (command: #{@command.join(' ')})"
18
15
  end
19
-
20
16
  end
21
17
 
22
18
  # @option [IO] :stdout ($stdout)
@@ -48,7 +44,5 @@ module Nanoc::Extra
48
44
  end
49
45
  end
50
46
  end
51
-
52
47
  end
53
-
54
48
  end
@@ -1,11 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  # Responsible for finding and deleting files in the site’s output directory
6
5
  # that are not managed by nanoc.
7
6
  class Pruner
8
-
9
7
  # @return [Nanoc::Site] The site this pruner belongs to
10
8
  attr_reader :site
11
9
 
@@ -28,9 +26,7 @@ module Nanoc::Extra
28
26
 
29
27
  # Get compiled files
30
28
  all_raw_paths = site.items.map do |item|
31
- item.reps.map do |rep|
32
- rep.raw_path
33
- end
29
+ item.reps.map(&:raw_path)
34
30
  end
35
31
  compiled_files = all_raw_paths.flatten.compact.select { |f| File.file?(f) }
36
32
 
@@ -84,7 +80,5 @@ module Nanoc::Extra
84
80
  Dir.rmdir(dir)
85
81
  end
86
82
  end
87
-
88
83
  end
89
-
90
84
  end
@@ -1,12 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  module Validators
6
-
7
5
  autoload 'W3C', 'nanoc/extra/validators/w3c'
8
6
  autoload 'Links', 'nanoc/extra/validators/links'
9
-
10
7
  end
11
-
12
8
  end
@@ -1,10 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra::Validators
4
-
5
4
  # @deprecated Use the Checking API or the `check` command instead
6
5
  class Links
7
-
8
6
  def initialize(_dir, _index_filenames, params = {})
9
7
  @include_internal = params.key?(:internal) && params[:internal]
10
8
  @include_external = params.key?(:external) && params[:external]
@@ -16,7 +14,5 @@ module Nanoc::Extra::Validators
16
14
  checks << 'elinks' if options[:external]
17
15
  Nanoc::CLI.run ['check', checks].flatten
18
16
  end
19
-
20
17
  end
21
-
22
18
  end
@@ -1,10 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra::Validators
4
-
5
4
  # @deprecated Use the Checking API or the `check` command instead
6
5
  class W3C
7
-
8
6
  def initialize(dir, types)
9
7
  @dir = dir
10
8
  @types = types
@@ -21,7 +19,5 @@ module Nanoc::Extra::Validators
21
19
 
22
20
  Nanoc::CLI.run(['check', args].flatten)
23
21
  end
24
-
25
22
  end
26
-
27
23
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Nanoc::Extra
4
-
5
4
  # A very simple representation of a version control system (VCS) that
6
5
  # abstracts the add, remove and move operations. It does not commit. This
7
6
  # class is primarily used by data sources that store data as flat files on
@@ -10,7 +9,6 @@ module Nanoc::Extra
10
9
  # @abstract Subclass and override {#add}, {#remove} and {#move} to implement
11
10
  # a custom VCS.
12
11
  class VCS
13
-
14
12
  extend Nanoc::PluginRegistry::PluginMethods
15
13
 
16
14
  # Adds the file with the given filename to the working copy.
@@ -20,7 +18,7 @@ module Nanoc::Extra
20
18
  # @return [void]
21
19
  #
22
20
  # @abstract
23
- def add(_filename)
21
+ def add(filename) # rubocop:disable Lint/UnusedMethodArgument
24
22
  not_implemented('add')
25
23
  end
26
24
 
@@ -33,7 +31,7 @@ module Nanoc::Extra
33
31
  # @return [void]
34
32
  #
35
33
  # @abstract
36
- def remove(_filename)
34
+ def remove(filename) # rubocop:disable Lint/UnusedMethodArgument
37
35
  not_implemented('remove')
38
36
  end
39
37
 
@@ -48,7 +46,7 @@ module Nanoc::Extra
48
46
  # @return [void]
49
47
  #
50
48
  # @abstract
51
- def move(_src, _dst)
49
+ def move(src, dst) # rubocop:disable Lint/UnusedMethodArgument
52
50
  not_implemented('move')
53
51
  end
54
52
 
@@ -60,7 +58,5 @@ module Nanoc::Extra
60
58
  'this data source to be used.'
61
59
  )
62
60
  end
63
-
64
61
  end
65
-
66
62
  end