nanoc 3.6.7 → 3.6.8

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 (144) hide show
  1. checksums.yaml +8 -8
  2. data/CONTRIBUTING.md +9 -13
  3. data/Gemfile +5 -1
  4. data/Gemfile.lock +70 -45
  5. data/NEWS.md +15 -1
  6. data/README.md +12 -119
  7. data/doc/yardoc_handlers/identifier.rb +34 -0
  8. data/lib/nanoc/base/compilation/checksum_store.rb +2 -2
  9. data/lib/nanoc/base/compilation/compiler.rb +3 -3
  10. data/lib/nanoc/base/compilation/compiler_dsl.rb +20 -15
  11. data/lib/nanoc/base/compilation/dependency_tracker.rb +4 -4
  12. data/lib/nanoc/base/compilation/filter.rb +5 -5
  13. data/lib/nanoc/base/compilation/item_rep_proxy.rb +2 -2
  14. data/lib/nanoc/base/compilation/item_rep_recorder_proxy.rb +3 -3
  15. data/lib/nanoc/base/compilation/outdatedness_checker.rb +49 -46
  16. data/lib/nanoc/base/compilation/rule.rb +6 -4
  17. data/lib/nanoc/base/compilation/rule_context.rb +10 -4
  18. data/lib/nanoc/base/compilation/rule_memory_calculator.rb +8 -7
  19. data/lib/nanoc/base/compilation/rule_memory_store.rb +2 -2
  20. data/lib/nanoc/base/compilation/rules_collection.rb +2 -2
  21. data/lib/nanoc/base/core_ext/array.rb +2 -2
  22. data/lib/nanoc/base/core_ext/date.rb +4 -2
  23. data/lib/nanoc/base/core_ext/hash.rb +3 -3
  24. data/lib/nanoc/base/core_ext/pathname.rb +1 -1
  25. data/lib/nanoc/base/directed_graph.rb +6 -6
  26. data/lib/nanoc/base/errors.rb +1 -1
  27. data/lib/nanoc/base/memoization.rb +4 -4
  28. data/lib/nanoc/base/notification_center.rb +1 -1
  29. data/lib/nanoc/base/ordered_hash.rb +207 -179
  30. data/lib/nanoc/base/plugin_registry.rb +7 -7
  31. data/lib/nanoc/base/result_data/item_rep.rb +25 -26
  32. data/lib/nanoc/base/source_data/code_snippet.rb +2 -2
  33. data/lib/nanoc/base/source_data/configuration.rb +1 -1
  34. data/lib/nanoc/base/source_data/data_source.rb +2 -2
  35. data/lib/nanoc/base/source_data/item.rb +16 -15
  36. data/lib/nanoc/base/source_data/item_array.rb +4 -4
  37. data/lib/nanoc/base/source_data/layout.rb +5 -5
  38. data/lib/nanoc/base/source_data/site.rb +6 -6
  39. data/lib/nanoc/base/store.rb +8 -8
  40. data/lib/nanoc/cli/cleaning_stream.rb +11 -12
  41. data/lib/nanoc/cli/command_runner.rb +8 -8
  42. data/lib/nanoc/cli/commands/autocompile.rb +5 -4
  43. data/lib/nanoc/cli/commands/check.rb +12 -11
  44. data/lib/nanoc/cli/commands/compile.rb +50 -52
  45. data/lib/nanoc/cli/commands/create-item.rb +6 -6
  46. data/lib/nanoc/cli/commands/create-layout.rb +6 -6
  47. data/lib/nanoc/cli/commands/create-site.rb +10 -13
  48. data/lib/nanoc/cli/commands/deploy.rb +11 -11
  49. data/lib/nanoc/cli/commands/prune.rb +10 -10
  50. data/lib/nanoc/cli/commands/shell.rb +7 -7
  51. data/lib/nanoc/cli/commands/show-data.rb +22 -23
  52. data/lib/nanoc/cli/commands/show-plugins.rb +3 -3
  53. data/lib/nanoc/cli/commands/show-rules.rb +8 -8
  54. data/lib/nanoc/cli/commands/sync.rb +4 -2
  55. data/lib/nanoc/cli/commands/update.rb +4 -4
  56. data/lib/nanoc/cli/commands/validate-css.rb +3 -3
  57. data/lib/nanoc/cli/commands/validate-html.rb +3 -3
  58. data/lib/nanoc/cli/commands/validate-links.rb +3 -3
  59. data/lib/nanoc/cli/commands/view.rb +5 -3
  60. data/lib/nanoc/cli/commands/watch.rb +12 -12
  61. data/lib/nanoc/cli/error_handler.rb +58 -58
  62. data/lib/nanoc/cli/logger.rb +6 -6
  63. data/lib/nanoc/cli/stream_cleaners/abstract.rb +1 -1
  64. data/lib/nanoc/cli/stream_cleaners.rb +0 -1
  65. data/lib/nanoc/cli.rb +24 -22
  66. data/lib/nanoc/data_sources/deprecated/delicious.rb +1 -1
  67. data/lib/nanoc/data_sources/deprecated/last_fm.rb +16 -14
  68. data/lib/nanoc/data_sources/deprecated/twitter.rb +1 -1
  69. data/lib/nanoc/data_sources/filesystem.rb +22 -20
  70. data/lib/nanoc/data_sources/filesystem_unified.rb +4 -5
  71. data/lib/nanoc/data_sources/filesystem_verbose.rb +2 -3
  72. data/lib/nanoc/data_sources/static.rb +2 -2
  73. data/lib/nanoc/extra/auto_compiler.rb +3 -3
  74. data/lib/nanoc/extra/checking/check.rb +3 -3
  75. data/lib/nanoc/extra/checking/checks/css.rb +2 -2
  76. data/lib/nanoc/extra/checking/checks/external_links.rb +9 -9
  77. data/lib/nanoc/extra/checking/checks/html.rb +2 -3
  78. data/lib/nanoc/extra/checking/checks/internal_links.rb +6 -7
  79. data/lib/nanoc/extra/checking/checks/stale.rb +6 -6
  80. data/lib/nanoc/extra/checking/dsl.rb +1 -1
  81. data/lib/nanoc/extra/checking/runner.rb +19 -19
  82. data/lib/nanoc/extra/chick.rb +11 -9
  83. data/lib/nanoc/extra/core_ext/pathname.rb +1 -2
  84. data/lib/nanoc/extra/core_ext/time.rb +2 -2
  85. data/lib/nanoc/extra/core_ext.rb +0 -1
  86. data/lib/nanoc/extra/deployer.rb +2 -2
  87. data/lib/nanoc/extra/deployers/fog.rb +12 -12
  88. data/lib/nanoc/extra/deployers/rsync.rb +6 -6
  89. data/lib/nanoc/extra/file_proxy.rb +1 -1
  90. data/lib/nanoc/extra/filesystem_tools.rb +5 -5
  91. data/lib/nanoc/extra/link_collector.rb +4 -3
  92. data/lib/nanoc/extra/pruner.rb +5 -5
  93. data/lib/nanoc/extra/validators/links.rb +3 -3
  94. data/lib/nanoc/extra/vcs.rb +1 -1
  95. data/lib/nanoc/filters/asciidoc.rb +3 -3
  96. data/lib/nanoc/filters/bluecloth.rb +1 -1
  97. data/lib/nanoc/filters/coderay.rb +2 -2
  98. data/lib/nanoc/filters/coffeescript.rb +2 -0
  99. data/lib/nanoc/filters/colorize_syntax.rb +16 -16
  100. data/lib/nanoc/filters/erb.rb +5 -5
  101. data/lib/nanoc/filters/erubis.rb +1 -1
  102. data/lib/nanoc/filters/haml.rb +1 -1
  103. data/lib/nanoc/filters/handlebars.rb +2 -2
  104. data/lib/nanoc/filters/kramdown.rb +1 -1
  105. data/lib/nanoc/filters/less.rb +1 -1
  106. data/lib/nanoc/filters/markaby.rb +1 -1
  107. data/lib/nanoc/filters/maruku.rb +1 -1
  108. data/lib/nanoc/filters/mustache.rb +1 -1
  109. data/lib/nanoc/filters/pandoc.rb +1 -1
  110. data/lib/nanoc/filters/rainpress.rb +1 -1
  111. data/lib/nanoc/filters/rdiscount.rb +1 -1
  112. data/lib/nanoc/filters/rdoc.rb +1 -1
  113. data/lib/nanoc/filters/redcarpet.rb +2 -2
  114. data/lib/nanoc/filters/redcloth.rb +9 -9
  115. data/lib/nanoc/filters/relativize_paths.rb +7 -8
  116. data/lib/nanoc/filters/rubypants.rb +1 -1
  117. data/lib/nanoc/filters/sass/sass_filesystem_importer.rb +1 -1
  118. data/lib/nanoc/filters/sass.rb +1 -1
  119. data/lib/nanoc/filters/slim.rb +1 -1
  120. data/lib/nanoc/filters/typogruby.rb +1 -1
  121. data/lib/nanoc/filters/uglify_js.rb +1 -1
  122. data/lib/nanoc/filters/xsl.rb +9 -7
  123. data/lib/nanoc/filters/yui_compressor.rb +2 -0
  124. data/lib/nanoc/helpers/blogging.rb +6 -6
  125. data/lib/nanoc/helpers/breadcrumbs.rb +1 -1
  126. data/lib/nanoc/helpers/capturing.rb +2 -2
  127. data/lib/nanoc/helpers/filtering.rb +1 -1
  128. data/lib/nanoc/helpers/html_escape.rb +3 -3
  129. data/lib/nanoc/helpers/link_to.rb +6 -6
  130. data/lib/nanoc/helpers/rendering.rb +2 -2
  131. data/lib/nanoc/helpers/tagging.rb +2 -2
  132. data/lib/nanoc/helpers/text.rb +1 -1
  133. data/lib/nanoc/helpers/xml_sitemap.rb +2 -2
  134. data/lib/nanoc/version.rb +1 -1
  135. data/lib/nanoc.rb +3 -2
  136. data/nanoc.gemspec +2 -6
  137. data/tasks/rubocop.rake +5 -0
  138. data/test/base/test_compiler_dsl.rb +20 -1
  139. data/test/cli/commands/test_compile.rb +4 -3
  140. data/test/cli/test_error_handler.rb +32 -0
  141. data/test/filters/test_erb.rb +1 -1
  142. data/test/filters/test_less.rb +1 -1
  143. data/test/filters/test_xsl.rb +95 -8
  144. metadata +30 -84
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # encoding: utf-8
2
2
 
3
3
  module Nanoc::Filters
4
4
  class ERB < Nanoc::Filter
@@ -15,7 +15,7 @@ module Nanoc::Filters
15
15
  # @option params [String] trim_mode (nil) The trim mode to use
16
16
  #
17
17
  # @return [String] The filtered content
18
- def run(content, params={})
18
+ def run(content, params = {})
19
19
  # Add locals
20
20
  assigns.merge!(params[:locals] || {})
21
21
 
@@ -23,7 +23,7 @@ module Nanoc::Filters
23
23
  context = ::Nanoc::Context.new(assigns)
24
24
 
25
25
  # Get binding
26
- proc = assigns[:content] ? lambda { assigns[:content] } : nil
26
+ proc = assigns[:content] ? lambda { assigns[:content] } : nil
27
27
  assigns_binding = context.get_binding(&proc)
28
28
 
29
29
  # Get result
@@ -32,7 +32,7 @@ module Nanoc::Filters
32
32
  erb = ::ERB.new(content, safe_level, trim_mode)
33
33
  erb.filename = filename
34
34
  erb.result(assigns_binding)
35
- end
35
+ end
36
36
 
37
- end
37
+ end
38
38
  end
@@ -18,7 +18,7 @@ module Nanoc::Filters
18
18
  # @param [String] content The content to filter
19
19
  #
20
20
  # @return [String] The filtered content
21
- def run(content, params={})
21
+ def run(content, params = {})
22
22
  # Create context
23
23
  context = ::Nanoc::Context.new(assigns)
24
24
 
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Get options
16
16
  options = params.merge(:filename => filename)
17
17
 
@@ -15,12 +15,12 @@ module Nanoc::Filters
15
15
  # @param [String] content The content to filter
16
16
  #
17
17
  # @return [String] The filtered content
18
- def run(content, params={})
18
+ def run(content, params = {})
19
19
  context = item.attributes.dup
20
20
  context[:item] = assigns[:item].attributes
21
21
  context[:config] = assigns[:config]
22
22
  context[:yield] = assigns[:content]
23
- if assigns.has_key?(:layout)
23
+ if assigns.key?(:layout)
24
24
  context[:layout] = assigns[:layout].attributes
25
25
  end
26
26
 
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Get result
16
16
  ::Kramdown::Document.new(content, params).to_html
17
17
  end
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Find imports (hacky)
16
16
  imports = []
17
17
  imports.concat(content.scan(/^@import\s+(["'])([^\1]+?)\1;/))
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Get result
16
16
  ::Markaby::Builder.new(assigns).instance_eval(content).to_s
17
17
  end
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Get result
16
16
  ::Maruku.new(content, params).to_html
17
17
  end
@@ -14,7 +14,7 @@ module Nanoc::Filters
14
14
  # @param [String] content The content to filter
15
15
  #
16
16
  # @return [String] The filtered content
17
- def run(content, params={})
17
+ def run(content, params = {})
18
18
  context = item.attributes.merge({ :yield => assigns[:content] })
19
19
  ::Mustache.render(content, context)
20
20
  end
@@ -12,7 +12,7 @@ module Nanoc::Filters
12
12
  # @param [String] content The content to filter
13
13
  #
14
14
  # @return [String] The filtered content
15
- def run(content, params={})
15
+ def run(content, params = {})
16
16
  PandocRuby.convert(content, params)
17
17
  end
18
18
 
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  ::Rainpress.compress(content, params)
16
16
  end
17
17
 
@@ -12,7 +12,7 @@ module Nanoc::Filters
12
12
  # @param [String] content The content to filter
13
13
  #
14
14
  # @return [String] The filtered content
15
- def run(content, params={})
15
+ def run(content, params = {})
16
16
  extensions = params[:extensions] || []
17
17
 
18
18
  ::RDiscount.new(content, *extensions).to_html
@@ -16,7 +16,7 @@ module Nanoc::Filters
16
16
  # @param [String] content The content to filter
17
17
  #
18
18
  # @return [String] The filtered content
19
- def run(content, params={})
19
+ def run(content, params = {})
20
20
  options = ::RDoc::Options.new
21
21
  to_html = ::RDoc::Markup::ToHtml.new(options)
22
22
  ::RDoc::Markup.new.convert(content, to_html)
@@ -20,7 +20,7 @@ module Nanoc::Filters
20
20
  # Redcarpet
21
21
  #
22
22
  # @return [String] The filtered content
23
- #
23
+ #
24
24
  # @overload run(content, params={})
25
25
  #
26
26
  # For Redcarpet 2.x
@@ -39,7 +39,7 @@ module Nanoc::Filters
39
39
  # on to the Redcarpet renderer
40
40
  #
41
41
  # @return [String] The filtered content
42
- def run(content, params={})
42
+ def run(content, params = {})
43
43
  if ::Redcarpet::VERSION > '2'
44
44
  options = params[:options] || {}
45
45
  renderer_class = params[:renderer] || ::Redcarpet::Render::HTML
@@ -25,19 +25,19 @@ module Nanoc::Filters
25
25
  # @param [String] content The content to filter
26
26
  #
27
27
  # @return [String] The filtered content
28
- def run(content, params={})
28
+ def run(content, params = {})
29
29
  # Create formatter
30
30
  r = ::RedCloth.new(content)
31
31
 
32
32
  # Set options
33
- r.filter_classes = params[:filter_classes] if params.has_key?(:filter_classes)
34
- r.filter_html = params[:filter_html] if params.has_key?(:filter_html)
35
- r.filter_ids = params[:filter_ids] if params.has_key?(:filter_ids)
36
- r.filter_styles = params[:filter_styles] if params.has_key?(:filter_styles)
37
- r.hard_breaks = params[:hard_breaks] if params.has_key?(:hard_breaks)
38
- r.lite_mode = params[:lite_mode] if params.has_key?(:lite_mode)
39
- r.no_span_caps = params[:no_span_caps] if params.has_key?(:no_span_caps)
40
- r.sanitize_html = params[:sanitize_html] if params.has_key?(:sanitize_html)
33
+ r.filter_classes = params[:filter_classes] if params.key?(:filter_classes)
34
+ r.filter_html = params[:filter_html] if params.key?(:filter_html)
35
+ r.filter_ids = params[:filter_ids] if params.key?(:filter_ids)
36
+ r.filter_styles = params[:filter_styles] if params.key?(:filter_styles)
37
+ r.hard_breaks = params[:hard_breaks] if params.key?(:hard_breaks)
38
+ r.lite_mode = params[:lite_mode] if params.key?(:lite_mode)
39
+ r.no_span_caps = params[:no_span_caps] if params.key?(:no_span_caps)
40
+ r.sanitize_html = params[:sanitize_html] if params.key?(:sanitize_html)
41
41
 
42
42
  # Get result
43
43
  r.to_html
@@ -24,11 +24,11 @@ module Nanoc::Filters
24
24
  # `:xhtml` types.
25
25
  #
26
26
  # @option params [Hash] :namespaces The pairs `prefix => uri` to define
27
- # any namespace you want to use in the XPath expressions. This param
27
+ # any namespace you want to use in the XPath expressions. This param
28
28
  # is useful only for the `:xml` and `:xhtml` types.
29
29
  #
30
30
  # @return [String] The filtered content
31
- def run(content, params={})
31
+ def run(content, params = {})
32
32
  # Set assigns so helper function can be used
33
33
  @item_rep = assigns[:item_rep] if @item_rep.nil?
34
34
 
@@ -61,9 +61,9 @@ module Nanoc::Filters
61
61
  nokogiri_process(content, selectors, namespaces, klass, params[:type])
62
62
  else
63
63
  raise RuntimeError.new(
64
- "The relativize_paths needs to know the type of content to " +
65
- "process. Pass a :type to the filter call (:html for HTML, " +
66
- ":xhtml for XHTML, :xml for XML, or :css for CSS).")
64
+ 'The relativize_paths needs to know the type of content to ' +
65
+ 'process. Pass a :type to the filter call (:html for HTML, ' +
66
+ ':xhtml for XHTML, :xml for XML, or :css for CSS).')
67
67
  end
68
68
  end
69
69
 
@@ -71,7 +71,7 @@ module Nanoc::Filters
71
71
 
72
72
  def nokogiri_process(content, selectors, namespaces, klass, type)
73
73
  # Ensure that all prefixes are strings
74
- namespaces = namespaces.inject({}) { |new, (prefix, uri)| new.merge(prefix.to_s => uri) }
74
+ namespaces = namespaces.reduce({}) { |new, (prefix, uri)| new.merge(prefix.to_s => uri) }
75
75
 
76
76
  doc = content =~ /<html[\s>]/ ? klass.parse(content) : klass.fragment(content)
77
77
  selectors.map { |sel| "descendant-or-self::#{sel}" }.each do |selector|
@@ -94,9 +94,8 @@ module Nanoc::Filters
94
94
  end
95
95
 
96
96
  def path_is_relativizable?(s)
97
- s[0,1] == '/'
97
+ s[0, 1] == '/'
98
98
  end
99
99
 
100
100
  end
101
101
  end
102
-
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  # Get result
16
16
  ::RubyPants.new(content).to_html
17
17
  end
@@ -6,7 +6,7 @@ class ::Sass::Importers::Filesystem
6
6
 
7
7
  def _find(dir, name, options)
8
8
  # Find filename
9
- full_filename, syntax = ::Sass::Util.destructure(find_real_file(dir, name, options))
9
+ full_filename, _syntax = ::Sass::Util.destructure(find_real_file(dir, name, options))
10
10
  return nil if full_filename.nil?
11
11
 
12
12
  # Create dependency
@@ -11,7 +11,7 @@ module Nanoc::Filters
11
11
  # @param [String] content The content to filter
12
12
  #
13
13
  # @return [String] The filtered content
14
- def run(content, params={})
14
+ def run(content, params = {})
15
15
  options = params.merge({
16
16
  :nanoc_current_filter => self,
17
17
  :filename => @item && @item.raw_filename,
@@ -13,7 +13,7 @@ module Nanoc::Filters
13
13
  # @param [String] content The content to filter
14
14
  #
15
15
  # @return [String] The filtered content
16
- def run(content, params={})
16
+ def run(content, params = {})
17
17
  params = {
18
18
  :disable_capture => true, # Capture managed by nanoc
19
19
  :buffer => '_erbout', # Force slim to output to the buffer used by nanoc
@@ -13,7 +13,7 @@ module Nanoc::Filters
13
13
  # @param [String] content The content to filter
14
14
  #
15
15
  # @return [String] The filtered content
16
- def run(content, params={})
16
+ def run(content, params = {})
17
17
  # Get result
18
18
  ::Typogruby.improve(content)
19
19
  end
@@ -13,7 +13,7 @@ module Nanoc::Filters
13
13
  # @option params [Array] :options ([]) A list of options to pass on to Uglifier
14
14
  #
15
15
  # @return [String] The filtered content
16
- def run(content, params={})
16
+ def run(content, params = {})
17
17
  # Add filename to load path
18
18
  Uglifier.new(params).compile(content)
19
19
  end
@@ -7,7 +7,7 @@ module Nanoc::Filters
7
7
 
8
8
  requires 'nokogiri'
9
9
 
10
- # Runs the item content through an [XSLT](http://www.w3.org/TR/xslt)
10
+ # Runs the item content through an [XSLT](http://www.w3.org/TR/xslt)
11
11
  # stylesheet using [Nokogiri](http://nokogiri.org/).
12
12
  #
13
13
  # This filter can only be run for layouts, because it will need both the
@@ -22,24 +22,26 @@ module Nanoc::Filters
22
22
  # compile '/reports/*/' do
23
23
  # layout 'xsl-report'
24
24
  # end
25
- #
25
+ #
26
26
  # layout 'xsl-report', :xsl, :awesome => 'definitely'
27
27
  #
28
- # @param [String] content The XML content to transform
28
+ # @param [String] content Ignored. As the filter can be run only as a
29
+ # layout, the value of the `:content` parameter passed to the class at
30
+ # initialization is used as the content to transform.
29
31
  #
30
32
  # @param [Hash] params The parameters that will be stored in corresponding
31
33
  # `xsl:param` elements.
32
34
  #
33
35
  # @return [String] The transformed content
34
- def run(content, params={})
36
+ def run(content, params = {})
35
37
  if assigns[:layout].nil?
36
- raise "The XSL filter can only be run as a layout"
38
+ raise 'The XSL filter can only be run as a layout'
37
39
  end
38
40
 
39
- xml = ::Nokogiri::XML(content)
41
+ xml = ::Nokogiri::XML(assigns[:content])
40
42
  xsl = ::Nokogiri::XSLT(assigns[:layout].raw_content)
41
43
 
42
- xsl.transform(xml, ::Nokogiri::XSLT.quote_params(params)).to_s
44
+ xsl.apply_to(xml, ::Nokogiri::XSLT.quote_params(params))
43
45
  end
44
46
 
45
47
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Nanoc::Filters
2
4
 
3
5
  # @since 3.3.0
@@ -64,15 +64,15 @@ module Nanoc::Helpers
64
64
  end
65
65
 
66
66
  def validate
67
- self.validate_config
68
- self.validate_feed_item
69
- self.validate_articles
67
+ validate_config
68
+ validate_feed_item
69
+ validate_articles
70
70
  end
71
71
 
72
72
  def build
73
73
  buffer = ''
74
74
  xml = Builder::XmlMarkup.new(:target => buffer, :indent => 2)
75
- self.build_for_feed(xml)
75
+ build_for_feed(xml)
76
76
  buffer
77
77
  end
78
78
 
@@ -143,7 +143,7 @@ module Nanoc::Helpers
143
143
 
144
144
  # Add articles
145
145
  sorted_relevant_articles.each do |a|
146
- self.build_for_article(a, xml)
146
+ build_for_article(a, xml)
147
147
  end
148
148
  end
149
149
  end
@@ -289,7 +289,7 @@ module Nanoc::Helpers
289
289
  # @option params [String] :logo The URI of the feed's logo.
290
290
  #
291
291
  # @return [String] The generated feed content
292
- def atom_feed(params={})
292
+ def atom_feed(params = {})
293
293
  require 'builder'
294
294
 
295
295
  # Create builder
@@ -22,7 +22,7 @@ module Nanoc::Helpers
22
22
  idx = @item.identifier.index('/', idx_start)
23
23
  break if idx.nil?
24
24
 
25
- idx_start = idx+1
25
+ idx_start = idx + 1
26
26
  identifier = @item.identifier[0..idx]
27
27
  trail << @items[identifier]
28
28
  end
@@ -101,7 +101,7 @@ module Nanoc::Helpers
101
101
  if block_given? # Set content
102
102
  # Get args
103
103
  if args.size != 1
104
- raise ArgumentError, "expected 1 argument (the name " +
104
+ raise ArgumentError, 'expected 1 argument (the name ' +
105
105
  "of the capture) but got #{args.size} instead"
106
106
  end
107
107
  name = args[0]
@@ -112,7 +112,7 @@ module Nanoc::Helpers
112
112
  else # Get content
113
113
  # Get args
114
114
  if args.size != 2
115
- raise ArgumentError, "expected 2 arguments (the item " +
115
+ raise ArgumentError, 'expected 2 arguments (the item ' +
116
116
  "and the name of the capture) but got #{args.size} instead"
117
117
  end
118
118
  item = args[0]
@@ -28,7 +28,7 @@ module Nanoc::Helpers
28
28
  # @param [Hash] arguments Arguments to pass to the filter
29
29
  #
30
30
  # @return [void]
31
- def filter(filter_name, arguments={}, &block)
31
+ def filter(filter_name, arguments = {}, &block)
32
32
  # Capture block
33
33
  data = capture(&block)
34
34
 
@@ -28,7 +28,7 @@ module Nanoc::Helpers
28
28
  # @param [String] string The string to escape
29
29
  #
30
30
  # @return [String] The escaped string
31
- def html_escape(string=nil, &block)
31
+ def html_escape(string = nil, &block)
32
32
  if block_given?
33
33
  # Capture and escape block
34
34
  data = capture(&block)
@@ -43,12 +43,12 @@ module Nanoc::Helpers
43
43
  gsub('>', '&gt;').
44
44
  gsub('"', '&quot;')
45
45
  else
46
- raise RuntimeError, "The #html_escape or #h function needs either a " \
46
+ raise "The #html_escape or #h function needs either a " \
47
47
  "string or a block to HTML-escape, but neither a string nor a block was given"
48
48
  end
49
49
  end
50
50
 
51
- alias h html_escape
51
+ alias_method :h, :html_escape
52
52
 
53
53
  end
54
54
 
@@ -45,17 +45,17 @@ module Nanoc::Helpers
45
45
  #
46
46
  # link_to('Blog', '/blog/', :title => 'My super cool blog')
47
47
  # # => '<a title="My super cool blog" href="/blog/">Blog</a>'
48
- def link_to(text, target, attributes={})
48
+ def link_to(text, target, attributes = {})
49
49
  # Find path
50
50
  if target.is_a?(String)
51
51
  path = target
52
52
  else
53
53
  path = target.path
54
- raise RuntimeError, "Cannot create a link to #{target.inspect} because this target is not outputted (its routing rule returns nil)" if path.nil?
54
+ raise "Cannot create a link to #{target.inspect} because this target is not outputted (its routing rule returns nil)" if path.nil?
55
55
  end
56
56
 
57
57
  # Join attributes
58
- attributes = attributes.inject('') do |memo, (key, value)|
58
+ attributes = attributes.reduce('') do |memo, (key, value)|
59
59
  memo + key.to_s + '="' + h(value) + '" '
60
60
  end
61
61
 
@@ -87,7 +87,7 @@ module Nanoc::Helpers
87
87
  #
88
88
  # link_to_unless_current('This Item', @item)
89
89
  # # => '<span class="active" title="You\'re here.">This Item</span>'
90
- def link_to_unless_current(text, target, attributes={})
90
+ def link_to_unless_current(text, target, attributes = {})
91
91
  # Find path
92
92
  path = target.is_a?(String) ? target : target.path
93
93
 
@@ -140,14 +140,14 @@ module Nanoc::Helpers
140
140
 
141
141
  # Calculate the relative path (method depends on whether destination is
142
142
  # a directory or not).
143
- if src_path.to_s[-1,1] != '/'
143
+ if src_path.to_s[-1, 1] != '/'
144
144
  relative_path = dst_path.relative_path_from(src_path.dirname).to_s
145
145
  else
146
146
  relative_path = dst_path.relative_path_from(src_path).to_s
147
147
  end
148
148
 
149
149
  # Add trailing slash if necessary
150
- if dst_path.to_s[-1,1] == '/'
150
+ if dst_path.to_s[-1, 1] == '/'
151
151
  relative_path << '/'
152
152
  end
153
153
 
@@ -38,7 +38,7 @@ module Nanoc::Helpers
38
38
  # @example Rendering a head and a foot partial around some text
39
39
  #
40
40
  # <%= render 'head' %> - MIDDLE - <%= render 'foot' %>
41
- # # => "HEAD - MIDDLE - FOOT"
41
+ # # => "HEAD - MIDDLE - FOOT"
42
42
  #
43
43
  # @example Rendering a head partial with a custom title
44
44
  #
@@ -77,7 +77,7 @@ module Nanoc::Helpers
77
77
  #
78
78
  # @return [String, nil] The rendered partial, or nil if this method was
79
79
  # invoked with a block
80
- def render(identifier, other_assigns={}, &block)
80
+ def render(identifier, other_assigns = {}, &block)
81
81
  # Find layout
82
82
  layout = @site.layouts.find { |l| l.identifier == identifier.cleaned_identifier }
83
83
  raise Nanoc::Errors::UnknownLayout.new(identifier.cleaned_identifier) if layout.nil?
@@ -30,12 +30,12 @@ module Nanoc::Helpers
30
30
  # tags
31
31
  #
32
32
  # @return [String] A hyperlinked list of tags for the given item
33
- def tags_for(item, params={})
33
+ def tags_for(item, params = {})
34
34
  base_url = params[:base_url] || 'http://technorati.com/tag/'
35
35
  none_text = params[:none_text] || '(none)'
36
36
  separator = params[:separator] || ', '
37
37
 
38
- if item[:tags].nil? or item[:tags].empty?
38
+ if item[:tags].nil? || item[:tags].empty?
39
39
  none_text
40
40
  else
41
41
  item[:tags].map { |tag| link_for_tag(tag, base_url) }.join(separator)
@@ -18,7 +18,7 @@ module Nanoc::Helpers
18
18
  # excerpt when the excerpt is shorter than the original string
19
19
  #
20
20
  # @return [String] The excerpt of the given string
21
- def excerptize(string, params={})
21
+ def excerptize(string, params = {})
22
22
  # Initialize params
23
23
  params[:length] ||= 25
24
24
  params[:omission] ||= '...'
@@ -39,7 +39,7 @@ module Nanoc::Helpers
39
39
  # proc returns true, the rep will be included; otherwise, it will not.
40
40
  #
41
41
  # @return [String] The XML sitemap
42
- def xml_sitemap(params={})
42
+ def xml_sitemap(params = {})
43
43
  require 'builder'
44
44
 
45
45
  # Extract parameters
@@ -52,7 +52,7 @@ module Nanoc::Helpers
52
52
 
53
53
  # Check for required attributes
54
54
  if @site.config[:base_url].nil?
55
- raise RuntimeError.new("The Nanoc::Helpers::XMLSitemap helper requires the site configuration to specify the base URL for the site.")
55
+ raise RuntimeError.new('The Nanoc::Helpers::XMLSitemap helper requires the site configuration to specify the base URL for the site.')
56
56
  end
57
57
 
58
58
  # Build sitemap
data/lib/nanoc/version.rb CHANGED
@@ -3,6 +3,6 @@
3
3
  module Nanoc
4
4
 
5
5
  # The current nanoc version.
6
- VERSION = '3.6.7'
6
+ VERSION = '3.6.8'
7
7
 
8
8
  end
data/lib/nanoc.rb CHANGED
@@ -5,8 +5,8 @@ module Nanoc
5
5
  # @return [String] A string containing information about this nanoc version
6
6
  # and its environment (Ruby engine and version, Rubygems version if any).
7
7
  def self.version_information
8
- gem_info = defined?(Gem) ? "with RubyGems #{Gem::VERSION}" : "without RubyGems"
9
- engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
8
+ gem_info = defined?(Gem) ? "with RubyGems #{Gem::VERSION}" : 'without RubyGems'
9
+ engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
10
10
  res = ''
11
11
  res << "nanoc #{Nanoc::VERSION} © 2007-2013 Denis Defreyne.\n"
12
12
  res << "Running #{engine} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) on #{RUBY_PLATFORM} #{gem_info}.\n"
@@ -34,6 +34,7 @@ require 'tempfile'
34
34
  require 'thread'
35
35
  require 'time'
36
36
  require 'yaml'
37
+ require 'English'
37
38
 
38
39
  # Load nanoc
39
40
  require 'nanoc/version'
data/nanoc.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.license = 'MIT'
16
16
 
17
17
  s.files = Dir['[A-Z]*'] +
18
- Dir['doc/yardoc_templates/**/*'] +
18
+ Dir['doc/yardoc_{templates,handlers}/**/*'] +
19
19
  Dir['{bin,lib,tasks,test}/**/*'] +
20
20
  [ 'nanoc.gemspec' ]
21
21
  s.executables = [ 'nanoc' ]
@@ -26,9 +26,5 @@ Gem::Specification.new do |s|
26
26
 
27
27
  s.add_runtime_dependency('cri', '~> 2.3')
28
28
 
29
- s.add_development_dependency('minitest', '~> 4.0')
30
- s.add_development_dependency('mocha')
31
- s.add_development_dependency('rake')
32
- s.add_development_dependency('rdiscount')
33
- s.add_development_dependency('yard')
29
+ s.add_development_dependency('bundler', '~> 1.5')
34
30
  end
@@ -0,0 +1,5 @@
1
+ require 'rubocop/rake_task'
2
+
3
+ Rubocop::RakeTask.new(:rubocop) do |task|
4
+ task.patterns = ['lib/**/*.rb']
5
+ end