nanoc 3.6.7 → 3.6.8

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -21,37 +21,37 @@ module Nanoc::Extra::Checking
21
21
 
22
22
  # @return [Boolean] true if a Checks file exists, false otherwise
23
23
  def has_dsl?
24
- self.checks_filename && File.file?(self.checks_filename)
24
+ checks_filename && File.file?(checks_filename)
25
25
  end
26
26
 
27
27
  # Lists all available checks on stdout.
28
28
  #
29
29
  # @return [void]
30
30
  def list_checks
31
- self.load_dsl_if_available
31
+ load_dsl_if_available
32
32
 
33
- puts "Available checks:"
33
+ puts 'Available checks:'
34
34
  puts
35
- puts all_check_classes.map { |i| " " + i.identifier.to_s }.sort.join("\n")
35
+ puts all_check_classes.map { |i| ' ' + i.identifier.to_s }.sort.join("\n")
36
36
  end
37
37
 
38
38
  # Runs all checks.
39
39
  #
40
40
  # @return [Boolean] true if successful, false otherwise
41
41
  def run_all
42
- self.load_dsl_if_available
42
+ load_dsl_if_available
43
43
 
44
- self.run_check_classes(self.all_check_classes)
44
+ run_check_classes(all_check_classes)
45
45
  end
46
46
 
47
47
  # Runs the checks marked for deployment.
48
48
  #
49
49
  # @return [Boolean] true if successful, false otherwise
50
50
  def run_for_deploy
51
- self.require_dsl
51
+ require_dsl
52
52
 
53
- return true if self.dsl.nil?
54
- self.run_check_classes(self.check_classes_named(self.dsl.deploy_checks))
53
+ return true if dsl.nil?
54
+ run_check_classes(check_classes_named(dsl.deploy_checks))
55
55
  end
56
56
 
57
57
  # Runs the checks with the given names.
@@ -60,9 +60,9 @@ module Nanoc::Extra::Checking
60
60
  #
61
61
  # @return [Boolean] true if successful, false otherwise
62
62
  def run_specific(check_class_names)
63
- self.load_dsl_if_available
63
+ load_dsl_if_available
64
64
 
65
- self.run_check_classes(self.check_classes_named(check_class_names))
65
+ run_check_classes(check_classes_named(check_class_names))
66
66
  end
67
67
 
68
68
  protected
@@ -71,7 +71,7 @@ module Nanoc::Extra::Checking
71
71
  @dsl_loaded ||= false
72
72
  if !@dsl_loaded
73
73
  if self.has_dsl?
74
- @dsl = Nanoc::Extra::Checking::DSL.from_file(self.checks_filename)
74
+ @dsl = Nanoc::Extra::Checking::DSL.from_file(checks_filename)
75
75
  else
76
76
  @dsl = nil
77
77
  end
@@ -80,8 +80,8 @@ module Nanoc::Extra::Checking
80
80
  end
81
81
 
82
82
  def require_dsl
83
- self.load_dsl_if_available
84
- if self.dsl.nil?
83
+ load_dsl_if_available
84
+ if dsl.nil?
85
85
  raise Nanoc::Errors::GenericTrivial, "No checks defined (no #{CHECKS_FILENAMES.first} file present)"
86
86
  end
87
87
  end
@@ -91,8 +91,8 @@ module Nanoc::Extra::Checking
91
91
  end
92
92
 
93
93
  def run_check_classes(classes)
94
- issues = self.run_checks(classes)
95
- self.print_issues(issues)
94
+ issues = run_checks(classes)
95
+ print_issues(issues)
96
96
  issues.empty? ? true : false
97
97
  end
98
98
 
@@ -101,7 +101,7 @@ module Nanoc::Extra::Checking
101
101
  end
102
102
 
103
103
  def check_classes_named(n)
104
- classes = n.map do |a|
104
+ n.map do |a|
105
105
  klass = Nanoc::Extra::Checking::Check.named(a)
106
106
  raise Nanoc::Errors::GenericTrivial, "Unknown check: #{a}" if klass.nil?
107
107
  klass
@@ -115,7 +115,7 @@ module Nanoc::Extra::Checking
115
115
  issues = Set.new
116
116
  length = classes.map { |c| c.identifier.to_s.length }.max + 18
117
117
  classes.each do |klass|
118
- print format(" %-#{length}s", "Running #{klass.identifier} check… ")
118
+ print format(" %-#{length}s", "Running check #{klass.identifier}… ")
119
119
 
120
120
  check = klass.new(@site)
121
121
  check.run
@@ -134,7 +134,7 @@ module Nanoc::Extra::Checking
134
134
  require 'colored'
135
135
 
136
136
  return if issues.empty?
137
- puts "Issues found!"
137
+ puts 'Issues found!'
138
138
  issues.group_by { |i| i.subject }.to_a.sort_by { |p| p.first }.each do |pair|
139
139
  subject = pair.first
140
140
  issues = pair.last
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'net/http'
2
4
  require 'rack'
3
5
  require 'rack/cache'
@@ -16,7 +18,7 @@ module Nanoc::Extra
16
18
 
17
19
  DEFAULT_OPTIONS = {
18
20
  :cache => {
19
- :metastore => 'file:tmp/rack/cache.meta',
21
+ :metastore => 'file:tmp/rack/cache.meta',
20
22
  :entitystore => 'file:tmp/rack/cache.body'
21
23
  },
22
24
  :cache_controller => {
@@ -24,7 +26,7 @@ module Nanoc::Extra
24
26
  }
25
27
  }
26
28
 
27
- def initialize(options={})
29
+ def initialize(options = {})
28
30
  # Get options
29
31
  @options = DEFAULT_OPTIONS.merge(options)
30
32
  @options[:cache] = DEFAULT_OPTIONS[:cache].merge(@options[:cache])
@@ -34,11 +36,11 @@ module Nanoc::Extra
34
36
  def get(url)
35
37
  # Build app
36
38
  options = @options
37
- @app ||= Rack::Builder.new {
39
+ @app ||= Rack::Builder.new do
38
40
  use Rack::Cache, options[:cache].merge(:verbose => true)
39
41
  use Nanoc::Extra::CHiCk::CacheController, options[:cache_controller]
40
42
  run Nanoc::Extra::CHiCk::RackClient
41
- }
43
+ end
42
44
 
43
45
  # Build environment for request
44
46
  env = Rack::MockRequest.env_for(url, :method => 'GET')
@@ -63,14 +65,14 @@ module Nanoc::Extra
63
65
  # [Curb](http://curb.rubyforge.org/) instead.
64
66
  class CacheController
65
67
 
66
- def initialize(app, options={})
68
+ def initialize(app, options = {})
67
69
  @app = app
68
70
  @options = options
69
71
  end
70
72
 
71
73
  def call(env)
72
74
  res = @app.call(env)
73
- unless res[1].has_key?('Cache-Control') || res[1].has_key?('Expires')
75
+ unless res[1].key?('Cache-Control') || res[1].key?('Expires')
74
76
  res[1]['Cache-Control'] = "max-age=#{@options[:max_age]}"
75
77
  end
76
78
  res
@@ -96,7 +98,7 @@ module Nanoc::Extra
96
98
  request = Rack::Request.new(env)
97
99
 
98
100
  # Build headers and strip HTTP_
99
- request_headers = env.inject({}) do |m,(k,v)|
101
+ request_headers = env.reduce({}) do |m, (k, v)|
100
102
  k =~ /^HTTP_(.*)$/ && v ? m.merge($1.gsub(/_/, '-') => v) : m
101
103
  end
102
104
 
@@ -105,14 +107,14 @@ module Nanoc::Extra
105
107
  net_http_request_class = METHOD_TO_CLASS_MAPPING[request.request_method]
106
108
  raise ArgumentError, "Unsupported method: #{request.request_method}" if net_http_request_class.nil?
107
109
  net_http_request = net_http_request_class.new(request.fullpath, request_headers)
108
- net_http_request.body = env['rack.input'].read if [ 'POST', 'PUT' ].include?(request.request_method)
110
+ net_http_request.body = env['rack.input'].read if %w( POST PUT ).include?(request.request_method)
109
111
 
110
112
  # Perform request
111
113
  http.request(net_http_request) do |response|
112
114
  # Build Rack response triplet
113
115
  return [
114
116
  response.code.to_i,
115
- response.to_hash.inject({}) { |m,(k,v)| m.merge(k => v[0]) },
117
+ response.to_hash.reduce({}) { |m, (k, v)| m.merge(k => v[0]) },
116
118
  [ response.body ]
117
119
  ]
118
120
  end
@@ -17,7 +17,7 @@ module Nanoc::Extra
17
17
  end
18
18
 
19
19
  def include_component?(component)
20
- self.components.include?(component)
20
+ components.include?(component)
21
21
  end
22
22
 
23
23
  end
@@ -27,4 +27,3 @@ end
27
27
  class ::Pathname
28
28
  include ::Nanoc::Extra::PathnameExtensions
29
29
  end
30
-
@@ -4,12 +4,12 @@ module Nanoc::Extra::TimeExtensions
4
4
 
5
5
  # @return [String] The time in an ISO-8601 date format.
6
6
  def to_iso8601_date
7
- self.strftime("%Y-%m-%d")
7
+ strftime('%Y-%m-%d')
8
8
  end
9
9
 
10
10
  # @return [String] The time in an ISO-8601 time format.
11
11
  def to_iso8601_time
12
- self.getutc.strftime("%Y-%m-%dT%H:%M:%SZ")
12
+ getutc.strftime('%Y-%m-%dT%H:%M:%SZ')
13
13
  end
14
14
 
15
15
  end
@@ -3,4 +3,3 @@
3
3
  require 'nanoc/extra/core_ext/enumerable'
4
4
  require 'nanoc/extra/core_ext/pathname'
5
5
  require 'nanoc/extra/core_ext/time'
6
-
@@ -29,7 +29,7 @@ module Nanoc::Extra
29
29
  #
30
30
  # @option params [Boolean] :dry_run (false) true if the deployer should
31
31
  # only show what would be deployed instead actually deploying
32
- def initialize(source_path, config, params={})
32
+ def initialize(source_path, config, params = {})
33
33
  @source_path = source_path
34
34
  @config = config
35
35
  @dry_run = params.fetch(:dry_run) { false }
@@ -39,7 +39,7 @@ module Nanoc::Extra
39
39
  #
40
40
  # @abstract
41
41
  def run
42
- raise NotImplementedError.new("Nanoc::Extra::Deployer subclasses must implement #run")
42
+ raise NotImplementedError.new('Nanoc::Extra::Deployer subclasses must implement #run')
43
43
  end
44
44
 
45
45
  end
@@ -24,14 +24,14 @@ module Nanoc::Extra::Deployers
24
24
  require 'fog'
25
25
 
26
26
  # Get params, unsetting anything we don't want to pass through to fog.
27
- src = File.expand_path(self.source_path)
28
- bucket = self.config.delete(:bucket) || self.config.delete(:bucket_name)
29
- path = self.config.delete(:path)
27
+ src = File.expand_path(source_path)
28
+ bucket = config.delete(:bucket) || config.delete(:bucket_name)
29
+ path = config.delete(:path)
30
30
 
31
- self.config.delete(:kind)
31
+ config.delete(:kind)
32
32
 
33
33
  # Validate params
34
- error 'The path requires no trailing slash' if path && path[-1,1] == '/'
34
+ error 'The path requires no trailing slash' if path && path[-1, 1] == '/'
35
35
 
36
36
  # Mock if necessary
37
37
  if self.dry_run?
@@ -39,11 +39,11 @@ module Nanoc::Extra::Deployers
39
39
  end
40
40
 
41
41
  # Get connection
42
- puts "Connecting"
43
- connection = ::Fog::Storage.new(self.config)
42
+ puts 'Connecting'
43
+ connection = ::Fog::Storage.new(config)
44
44
 
45
45
  # Get bucket
46
- puts "Getting bucket"
46
+ puts 'Getting bucket'
47
47
  begin
48
48
  directory = connection.directories.get(bucket, :prefix => path)
49
49
  rescue ::Excon::Errors::NotFound
@@ -64,10 +64,10 @@ module Nanoc::Extra::Deployers
64
64
  truncated = set.is_truncated
65
65
  files = files + set
66
66
  end
67
- keys_to_destroy = files.all.map {|file| file.key}
67
+ keys_to_destroy = files.all.map { |file| file.key }
68
68
 
69
69
  # Upload all the files in the output folder to the clouds
70
- puts "Uploading local files"
70
+ puts 'Uploading local files'
71
71
  FileUtils.cd(src) do
72
72
  files = Dir['**/*'].select { |f| File.file?(f) }
73
73
  files.each do |file_path|
@@ -81,12 +81,12 @@ module Nanoc::Extra::Deployers
81
81
  end
82
82
 
83
83
  # delete extraneous remote files
84
- puts "Removing remote files"
84
+ puts 'Removing remote files'
85
85
  keys_to_destroy.each do |key|
86
86
  directory.files.get(key).destroy
87
87
  end
88
88
 
89
- puts "Done!"
89
+ puts 'Done!'
90
90
  end
91
91
 
92
92
  private
@@ -34,13 +34,13 @@ module Nanoc::Extra::Deployers
34
34
  require 'systemu'
35
35
 
36
36
  # Get params
37
- src = self.source_path + '/'
38
- dst = self.config[:dst]
39
- options = self.config[:options] || DEFAULT_OPTIONS
37
+ src = source_path + '/'
38
+ dst = config[:dst]
39
+ options = config[:options] || DEFAULT_OPTIONS
40
40
 
41
41
  # Validate
42
42
  raise 'No dst found in deployment configuration' if dst.nil?
43
- raise 'dst requires no trailing slash' if dst[-1,1] == '/'
43
+ raise 'dst requires no trailing slash' if dst[-1, 1] == '/'
44
44
 
45
45
  # Run
46
46
  if dry_run
@@ -53,11 +53,11 @@ module Nanoc::Extra::Deployers
53
53
 
54
54
  private
55
55
 
56
- # Runs the given shell command. It will raise an error if execution fails
56
+ # Runs the given shell command. It will raise an error if execution fails
57
57
  # (results in a nonzero exit code).
58
58
  def run_shell_cmd(args)
59
59
  status = systemu(args, 'stdout' => $stdout, 'stderr' => $stderr)
60
- raise "command exited with a nonzero status code #{$?.exitstatus} (command: #{args.join(' ')})" if !status.success?
60
+ raise "command exited with a nonzero status code #{$CHILD_STATUS.exitstatus} (command: #{args.join(' ')})" if !status.success?
61
61
  end
62
62
 
63
63
  end
@@ -16,7 +16,7 @@ module Nanoc::Extra
16
16
  def freeze
17
17
  end
18
18
 
19
- def respond_to?(meth, include_all=false)
19
+ def respond_to?(meth, include_all = false)
20
20
  file_instance_methods.include?(meth.to_sym)
21
21
  end
22
22
 
@@ -59,18 +59,18 @@ module Nanoc::Extra
59
59
  #
60
60
  # @raise [UnsupportedFileTypeError] if a file of an unsupported type is
61
61
  # detected (something other than file, directory or link)
62
- def all_files_in(dir_name, recursion_limit=10)
62
+ def all_files_in(dir_name, recursion_limit = 10)
63
63
  Dir[dir_name + '/**/*'].map do |fn|
64
64
  case File.ftype(fn)
65
65
  when 'link'
66
66
  if 0 == recursion_limit
67
67
  raise MaxSymlinkDepthExceededError.new(fn)
68
68
  else
69
- absolute_target = self.resolve_symlink(fn)
69
+ absolute_target = resolve_symlink(fn)
70
70
  if File.file?(absolute_target)
71
71
  fn
72
72
  else
73
- all_files_in(absolute_target, recursion_limit-1).map do |sfn|
73
+ all_files_in(absolute_target, recursion_limit - 1).map do |sfn|
74
74
  fn + sfn[absolute_target.size..-1]
75
75
  end
76
76
  end
@@ -100,7 +100,7 @@ module Nanoc::Extra
100
100
  #
101
101
  # @raise [UnsupportedFileTypeError] if a file of an unsupported type is
102
102
  # detected (something other than file, directory or link)
103
- def resolve_symlink(filename, recursion_limit=5)
103
+ def resolve_symlink(filename, recursion_limit = 5)
104
104
  target = File.readlink(filename)
105
105
  absolute_target = File.expand_path(target, File.dirname(filename))
106
106
 
@@ -109,7 +109,7 @@ module Nanoc::Extra
109
109
  if 0 == recursion_limit
110
110
  raise MaxSymlinkDepthExceededError.new(absolute_target)
111
111
  else
112
- self.resolve_symlink(absolute_target, recursion_limit-1)
112
+ resolve_symlink(absolute_target, recursion_limit - 1)
113
113
  end
114
114
  when 'file', 'directory'
115
115
  absolute_target
@@ -6,9 +6,10 @@ module ::Nanoc::Extra
6
6
 
7
7
  class LinkCollector
8
8
 
9
- def initialize(filenames, mode=nil)
9
+ def initialize(filenames, mode = nil)
10
10
  @filenames = filenames
11
- @filter = case mode
11
+ @filter =
12
+ case mode
12
13
  when nil
13
14
  lambda { |h| true }
14
15
  when :external
@@ -17,7 +18,7 @@ module ::Nanoc::Extra
17
18
  lambda { |h| !external_href?(h) }
18
19
  else
19
20
  raise ArgumentError, 'Expected mode argument to be :internal, :external or nil'
20
- end
21
+ end
21
22
  end
22
23
 
23
24
  def filenames_per_href
@@ -14,7 +14,7 @@ module Nanoc::Extra
14
14
  # @option params [Boolean] :dry_run (false) true if the files to be deleted
15
15
  # should only be printed instead of actually deleted, false if the files
16
16
  # should actually be deleted.
17
- def initialize(site, params={})
17
+ def initialize(site, params = {})
18
18
  @site = site
19
19
  @dry_run = params.fetch(:dry_run) { false }
20
20
  @exclude = params.fetch(:exclude) { [] }
@@ -27,7 +27,7 @@ module Nanoc::Extra
27
27
  require 'find'
28
28
 
29
29
  # Get compiled files
30
- compiled_files = self.site.items.map do |item|
30
+ compiled_files = site.items.map do |item|
31
31
  item.reps.map do |rep|
32
32
  rep.raw_path
33
33
  end
@@ -36,7 +36,7 @@ module Nanoc::Extra
36
36
  # Get present files and dirs
37
37
  present_files = []
38
38
  present_dirs = []
39
- Find.find(self.site.config[:output_dir] + '/') do |f|
39
+ Find.find(site.config[:output_dir] + '/') do |f|
40
40
  present_files << f if File.file?(f)
41
41
  present_dirs << f if File.directory?(f)
42
42
  end
@@ -45,14 +45,14 @@ module Nanoc::Extra
45
45
  stray_files = (present_files - compiled_files)
46
46
  stray_files.each do |f|
47
47
  next if filename_excluded?(f)
48
- self.delete_file(f)
48
+ delete_file(f)
49
49
  end
50
50
 
51
51
  # Remove empty directories
52
52
  present_dirs.reverse_each do |dir|
53
53
  next if Dir.foreach(dir) { |n| break true if n !~ /\A\.\.?\z/ }
54
54
  next if filename_excluded?(dir)
55
- self.delete_dir(dir)
55
+ delete_dir(dir)
56
56
  end
57
57
  end
58
58
 
@@ -5,9 +5,9 @@ module Nanoc::Extra::Validators
5
5
  # @deprecated Use the Checking API or the `check` command instead
6
6
  class Links
7
7
 
8
- def initialize(dir, index_filenames, params={})
9
- @include_internal = params.has_key?(:internal) && params[:internal]
10
- @include_external = params.has_key?(:external) && params[:external]
8
+ def initialize(dir, index_filenames, params = {})
9
+ @include_internal = params.key?(:internal) && params[:internal]
10
+ @include_external = params.key?(:external) && params[:external]
11
11
  end
12
12
 
13
13
  def run
@@ -57,7 +57,7 @@ module Nanoc::Extra
57
57
  def not_implemented(name)
58
58
  raise NotImplementedError.new(
59
59
  "#{self.class} does not override ##{name}, which is required for " +
60
- "this data source to be used."
60
+ 'this data source to be used.'
61
61
  )
62
62
  end
63
63
 
@@ -13,12 +13,12 @@ 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
  # Run command
18
18
  stdout = ''
19
19
  stderr = ''
20
20
  status = systemu(
21
- [ 'asciidoc', '-o', '-', '-' ],
21
+ %w( asciidoc -o - - ),
22
22
  'stdin' => content,
23
23
  'stdout' => stdout,
24
24
  'stderr' => stderr)
@@ -26,7 +26,7 @@ module Nanoc::Filters
26
26
  # Show errors
27
27
  unless status.success?
28
28
  $stderr.puts stderr
29
- raise RuntimeError, "AsciiDoc filter failed with status #{status}"
29
+ raise "AsciiDoc filter failed with status #{status}"
30
30
  end
31
31
 
32
32
  # Get result
@@ -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
  ::BlueCloth.new(content).to_html
16
16
  end
17
17
 
@@ -6,12 +6,12 @@ module Nanoc::Filters
6
6
  requires 'coderay'
7
7
 
8
8
  # @deprecated Use the `:colorize_syntax` filter instead.
9
- def run(content, params={})
9
+ def run(content, params = {})
10
10
  # Warn
11
11
  warn 'The :coderay filter is deprecated; consider using the :colorize_syntax filter instead.'
12
12
 
13
13
  # Check params
14
- raise ArgumentError, "CodeRay filter requires a :language argument which is missing" if params[:language].nil?
14
+ raise ArgumentError, 'CodeRay filter requires a :language argument which is missing' if params[:language].nil?
15
15
 
16
16
  # Get result
17
17
  ::CodeRay.scan(content, params[:language]).html
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Nanoc::Filters
2
4
 
3
5
  # @since 3.3.0
@@ -82,7 +82,7 @@ module Nanoc::Filters
82
82
  # such as the doctype, `html`, `head` and `body` elements will be added.
83
83
  #
84
84
  # @return [String] The filtered content
85
- def run(content, params={})
85
+ def run(content, params = {})
86
86
  # Take colorizers from parameters
87
87
  @colorizers = Hash.new(params[:default_colorizer] || DEFAULT_COLORIZER)
88
88
  (params[:colorizers] || {}).each_pair do |language, colorizer|
@@ -97,7 +97,7 @@ module Nanoc::Filters
97
97
  when :xml, :xhtml
98
98
  klass = Nokogiri::XML
99
99
  else
100
- raise RuntimeError, "unknown syntax: #{syntax.inspect} (expected :html or :xml)"
100
+ raise "unknown syntax: #{syntax.inspect} (expected :html or :xml)"
101
101
  end
102
102
 
103
103
  # Colorize
@@ -131,12 +131,12 @@ module Nanoc::Filters
131
131
  # Add language-something class
132
132
  unless has_class
133
133
  klass = element['class'] || ''
134
- klass << ' ' unless [' ', nil].include?(klass[-1,1])
134
+ klass << ' ' unless [' ', nil].include?(klass[-1, 1])
135
135
  klass << "language-#{language}"
136
136
  element['class'] = klass
137
137
  end
138
138
 
139
- self.highlight_postprocess(language, element.parent)
139
+ highlight_postprocess(language, element.parent)
140
140
  end
141
141
 
142
142
  method = "to_#{syntax}".to_sym
@@ -154,7 +154,7 @@ module Nanoc::Filters
154
154
  # @param [Hash] params Parameters to pass on to CodeRay
155
155
  #
156
156
  # @return [String] The colorized output
157
- def coderay(code, language, params={})
157
+ def coderay(code, language, params = {})
158
158
  require 'coderay'
159
159
 
160
160
  ::CodeRay.scan(code, language).html(params)
@@ -168,7 +168,7 @@ module Nanoc::Filters
168
168
  #
169
169
  # @return [String] The colorized output, which is identical to the input
170
170
  # in this case
171
- def dummy(code, language, params={})
171
+ def dummy(code, language, params = {})
172
172
  code
173
173
  end
174
174
 
@@ -184,7 +184,7 @@ module Nanoc::Filters
184
184
  # @option params [String, Symbol] :encoding The encoding of the code block
185
185
  #
186
186
  # @return [String] The colorized output
187
- def pygmentize(code, language, params={})
187
+ def pygmentize(code, language, params = {})
188
188
  require 'systemu'
189
189
  check_availability('pygmentize', '-V')
190
190
 
@@ -193,7 +193,7 @@ module Nanoc::Filters
193
193
 
194
194
  # Build command
195
195
  cmd = [ 'pygmentize', '-l', language, '-f', 'html' ]
196
- cmd << '-O' << params.map { |k,v| "#{k}=#{v}" }.join(',') unless params.empty?
196
+ cmd << '-O' << params.map { |k, v| "#{k}=#{v}" }.join(',') unless params.empty?
197
197
 
198
198
  # Run command
199
199
  stdout = StringIO.new
@@ -214,7 +214,7 @@ module Nanoc::Filters
214
214
  # @param [String] language The language the code is written in
215
215
  #
216
216
  # @return [String] The colorized output
217
- def pygmentsrb(code, language, params={})
217
+ def pygmentsrb(code, language, params = {})
218
218
  require 'pygments'
219
219
 
220
220
  args = params.dup
@@ -245,7 +245,7 @@ module Nanoc::Filters
245
245
  # @option params [String] :style The style to use
246
246
  #
247
247
  # @return [String] The colorized output
248
- def simon_highlight(code, language, params={})
248
+ def simon_highlight(code, language, params = {})
249
249
  require 'systemu'
250
250
 
251
251
  check_availability('highlight', '--version')
@@ -277,7 +277,7 @@ module Nanoc::Filters
277
277
  def coderay_postprocess(language, element)
278
278
  # Skip if we're a free <code>
279
279
  return if element.parent.nil?
280
-
280
+
281
281
  # <div class="code">
282
282
  div_inner = Nokogiri::XML::Node.new('div', element.document)
283
283
  div_inner['class'] = 'code'
@@ -301,12 +301,12 @@ module Nanoc::Filters
301
301
  s.lines.drop_while { |line| line.strip.empty? }.join.rstrip
302
302
  end
303
303
 
304
- def highlight(code, language, params={})
304
+ def highlight(code, language, params = {})
305
305
  colorizer = @colorizers[language.to_sym]
306
306
  if KNOWN_COLORIZERS.include?(colorizer)
307
307
  send(colorizer, code, language, params[colorizer] || {})
308
308
  else
309
- raise RuntimeError, "I don’t know how to highlight code using the “#{colorizer}” colorizer"
309
+ raise "I don’t know how to highlight code using the “#{colorizer}” colorizer"
310
310
  end
311
311
  end
312
312
 
@@ -315,16 +315,16 @@ module Nanoc::Filters
315
315
  if KNOWN_COLORIZERS.include?(colorizer)
316
316
  sym = (colorizer.to_s + '_postprocess').to_sym
317
317
  if self.respond_to?(sym)
318
- self.send(sym, language, element)
318
+ send(sym, language, element)
319
319
  end
320
320
  else
321
- raise RuntimeError, "I don’t know how to highlight code using the “#{colorizer}” colorizer"
321
+ raise "I don’t know how to highlight code using the “#{colorizer}” colorizer"
322
322
  end
323
323
  end
324
324
 
325
325
  def check_availability(*cmd)
326
326
  systemu cmd
327
- raise "Could not spawn #{cmd.join(' ')}" if $?.exitstatus != 0
327
+ raise "Could not spawn #{cmd.join(' ')}" if $CHILD_STATUS.exitstatus != 0
328
328
  end
329
329
 
330
330
  end