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
@@ -97,7 +97,7 @@ module Nanoc
97
97
  # @return [void]
98
98
  def setup
99
99
  @setup ||= begin
100
- self.requires.each { |r| require r }
100
+ requires.each { |r| require r }
101
101
  true
102
102
  end
103
103
  end
@@ -108,7 +108,7 @@ module Nanoc
108
108
  #
109
109
  # @param [Hash] hash A hash containing variables that should be made
110
110
  # available during filtering.
111
- def initialize(hash={})
111
+ def initialize(hash = {})
112
112
  @assigns = hash
113
113
  super
114
114
  end
@@ -119,7 +119,7 @@ module Nanoc
119
119
  # @see {#run}
120
120
  def setup_and_run(*args)
121
121
  self.class.setup
122
- self.run(*args)
122
+ run(*args)
123
123
  end
124
124
 
125
125
  # Runs the filter on the given content or filename.
@@ -136,8 +136,8 @@ module Nanoc
136
136
  # @return [String, void] If the filter output binary content, the return
137
137
  # value is undefined; if the filter outputs textual content, the return
138
138
  # value will be the filtered content.
139
- def run(content_or_filename, params={})
140
- raise NotImplementedError.new("Nanoc::Filter subclasses must implement #run")
139
+ def run(content_or_filename, params = {})
140
+ raise NotImplementedError.new('Nanoc::Filter subclasses must implement #run')
141
141
  end
142
142
 
143
143
  # Returns a filename that is used to write data to. This method is only
@@ -42,7 +42,7 @@ module Nanoc
42
42
  # filter's #run method
43
43
  #
44
44
  # @return [void]
45
- def filter(name, args={})
45
+ def filter(name, args = {})
46
46
  set_assigns
47
47
  @item_rep.filter(name, args)
48
48
  end
@@ -59,7 +59,7 @@ module Nanoc
59
59
  # @param [String] layout_identifier The identifier of the layout to use
60
60
  #
61
61
  # @return [void]
62
- def layout(layout_identifier, extra_filter_args={})
62
+ def layout(layout_identifier, extra_filter_args = {})
63
63
  set_assigns
64
64
 
65
65
  layout = layout_with_identifier(layout_identifier)
@@ -49,14 +49,14 @@ module Nanoc
49
49
  # @return [void]
50
50
  #
51
51
  # @see Nanoc::ItemRepProxy#filter, Nanoc::ItemRep#filter
52
- def filter(name, args={})
52
+ def filter(name, args = {})
53
53
  @rule_memory << [ :filter, name, args ]
54
54
  end
55
55
 
56
56
  # @return [void]
57
57
  #
58
58
  # @see Nanoc::ItemRepProxy#layout, Nanoc::ItemRep#layout
59
- def layout(layout_identifier, extra_filter_args=nil)
59
+ def layout(layout_identifier, extra_filter_args = nil)
60
60
  if extra_filter_args
61
61
  @rule_memory << [ :layout, layout_identifier, extra_filter_args ]
62
62
  else
@@ -67,7 +67,7 @@ module Nanoc
67
67
  # @return [void]
68
68
  #
69
69
  # @see Nanoc::ItemRep#snapshot
70
- def snapshot(snapshot_name, params={})
70
+ def snapshot(snapshot_name, params = {})
71
71
  @rule_memory << [ :snapshot, snapshot_name, params ]
72
72
 
73
73
  # Count
@@ -17,13 +17,16 @@ module Nanoc
17
17
  #
18
18
  # @option params [Nanoc::DependencyTracker] :dependency_tracker (nil) The
19
19
  # dependency tracker for the given site.
20
- def initialize(params={})
21
- @site = params[:site] or raise ArgumentError,
22
- 'Nanoc::OutdatednessChecker#initialize needs a :site parameter'
23
- @checksum_store = params[:checksum_store] or raise ArgumentError,
24
- 'Nanoc::OutdatednessChecker#initialize needs a :checksum_store parameter'
25
- @dependency_tracker = params[:dependency_tracker] or raise ArgumentError,
26
- 'Nanoc::OutdatednessChecker#initialize needs a :dependency_tracker parameter'
20
+ def initialize(params = {})
21
+ @site = params.fetch(:site) do
22
+ raise ArgumentError, 'Nanoc::OutdatednessChecker#initialize needs a :site parameter'
23
+ end
24
+ @checksum_store = params.fetch(:checksum_store) do
25
+ raise ArgumentError, 'Nanoc::OutdatednessChecker#initialize needs a :checksum_store parameter'
26
+ end
27
+ @dependency_tracker = params.fetch(:dependency_tracker) do
28
+ raise ArgumentError, 'Nanoc::OutdatednessChecker#initialize needs a :dependency_tracker parameter'
29
+ end
27
30
 
28
31
  @basic_outdatedness_reasons = {}
29
32
  @outdatedness_reasons = {}
@@ -83,43 +86,43 @@ module Nanoc
83
86
  # given object is outdated, or nil if the object is not outdated.
84
87
  def basic_outdatedness_reason_for(obj)
85
88
  case obj.type
86
- when :item_rep
87
- # Outdated if rules outdated
88
- return Nanoc::OutdatednessReasons::RulesModified if
89
- rule_memory_differs_for(obj)
90
-
91
- # Outdated if checksums are missing or different
92
- return Nanoc::OutdatednessReasons::NotEnoughData if !checksums_available?(obj.item)
93
- return Nanoc::OutdatednessReasons::SourceModified if !checksums_identical?(obj.item)
94
-
95
- # Outdated if compiled file doesn't exist (yet)
96
- return Nanoc::OutdatednessReasons::NotWritten if obj.raw_path && !File.file?(obj.raw_path)
97
-
98
- # Outdated if code snippets outdated
99
- return Nanoc::OutdatednessReasons::CodeSnippetsModified if site.code_snippets.any? do |cs|
100
- object_modified?(cs)
101
- end
102
-
103
- # Outdated if configuration outdated
104
- return Nanoc::OutdatednessReasons::ConfigurationModified if object_modified?(site.config)
105
-
106
- # Not outdated
107
- return nil
108
- when :item
109
- obj.reps.find { |rep| basic_outdatedness_reason_for(rep) }
110
- when :layout
111
- # Outdated if rules outdated
112
- return Nanoc::OutdatednessReasons::RulesModified if
113
- rule_memory_differs_for(obj)
114
-
115
- # Outdated if checksums are missing or different
116
- return Nanoc::OutdatednessReasons::NotEnoughData if !checksums_available?(obj)
117
- return Nanoc::OutdatednessReasons::SourceModified if !checksums_identical?(obj)
118
-
119
- # Not outdated
120
- return nil
121
- else
122
- raise RuntimeError, "do not know how to check outdatedness of #{obj.inspect}"
89
+ when :item_rep
90
+ # Outdated if rules outdated
91
+ return Nanoc::OutdatednessReasons::RulesModified if
92
+ rule_memory_differs_for(obj)
93
+
94
+ # Outdated if checksums are missing or different
95
+ return Nanoc::OutdatednessReasons::NotEnoughData if !checksums_available?(obj.item)
96
+ return Nanoc::OutdatednessReasons::SourceModified if !checksums_identical?(obj.item)
97
+
98
+ # Outdated if compiled file doesn't exist (yet)
99
+ return Nanoc::OutdatednessReasons::NotWritten if obj.raw_path && !File.file?(obj.raw_path)
100
+
101
+ # Outdated if code snippets outdated
102
+ return Nanoc::OutdatednessReasons::CodeSnippetsModified if site.code_snippets.any? do |cs|
103
+ object_modified?(cs)
104
+ end
105
+
106
+ # Outdated if configuration outdated
107
+ return Nanoc::OutdatednessReasons::ConfigurationModified if object_modified?(site.config)
108
+
109
+ # Not outdated
110
+ return nil
111
+ when :item
112
+ obj.reps.find { |rep| basic_outdatedness_reason_for(rep) }
113
+ when :layout
114
+ # Outdated if rules outdated
115
+ return Nanoc::OutdatednessReasons::RulesModified if
116
+ rule_memory_differs_for(obj)
117
+
118
+ # Outdated if checksums are missing or different
119
+ return Nanoc::OutdatednessReasons::NotEnoughData if !checksums_available?(obj)
120
+ return Nanoc::OutdatednessReasons::SourceModified if !checksums_identical?(obj)
121
+
122
+ # Not outdated
123
+ return nil
124
+ else
125
+ raise "do not know how to check outdatedness of #{obj.inspect}"
123
126
  end
124
127
  end
125
128
  memoize :basic_outdatedness_reason_for
@@ -135,12 +138,12 @@ module Nanoc
135
138
  # indefinitely. It should not be necessary to pass this a custom value.
136
139
  #
137
140
  # @return [Boolean] true if the object is outdated, false otherwise
138
- def outdated_due_to_dependencies?(obj, processed=Set.new)
141
+ def outdated_due_to_dependencies?(obj, processed = Set.new)
139
142
  # Convert from rep to item if necessary
140
143
  obj = obj.item if obj.type == :item_rep
141
144
 
142
145
  # Get from cache
143
- if @objects_outdated_due_to_dependencies.has_key?(obj)
146
+ if @objects_outdated_due_to_dependencies.key?(obj)
144
147
  return @objects_outdated_due_to_dependencies[obj]
145
148
  end
146
149
 
@@ -36,7 +36,7 @@ module Nanoc
36
36
  # @option params [Symbol, nil] :snapshot (nil) The name of the snapshot
37
37
  # this rule will apply to. Ignored for compilation rules, but used for
38
38
  # routing rules.
39
- def initialize(identifier_regex, rep_name, block, params={})
39
+ def initialize(identifier_regex, rep_name, block, params = {})
40
40
  @identifier_regex = identifier_regex
41
41
  @rep_name = rep_name.to_sym
42
42
  @snapshot_name = params[:snapshot_name]
@@ -62,10 +62,12 @@ module Nanoc
62
62
  # @raise [ArgumentError] if no compiler is passed
63
63
  #
64
64
  # @return [void]
65
- def apply_to(rep, params={})
66
- compiler = params[:compiler] or raise ArgumentError, "Required :compiler option is missing"
65
+ def apply_to(rep, params = {})
66
+ compiler = params.fetch(:compiler) do
67
+ raise ArgumentError, 'Required :compiler option is missing'
68
+ end
67
69
  rep = Nanoc::ItemRepProxy.new(rep, compiler) unless rep.is_proxy?
68
- Nanoc::RuleContext.new(:rep => rep, :compiler => compiler).instance_eval &@block
70
+ Nanoc::RuleContext.new(:rep => rep, :compiler => compiler).instance_eval(&@block)
69
71
  end
70
72
 
71
73
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module Nanoc
2
4
 
3
5
  # Provides a context in which compilation and routing rules can be executed.
@@ -24,9 +26,13 @@ module Nanoc
24
26
  #
25
27
  # @raise [ArgumentError] if the `:rep` or the `:compiler` option is
26
28
  # missing
27
- def initialize(params={})
28
- rep = params[:rep] or raise ArgumentError, "Required :rep option is missing"
29
- compiler = params[:compiler] or raise ArgumentError, "Required :compiler option is missing"
29
+ def initialize(params = {})
30
+ rep = params.fetch(:rep) do
31
+ raise ArgumentError, 'Required :rep option is missing'
32
+ end
33
+ compiler = params.fetch(:compiler) do
34
+ raise ArgumentError, 'Required :compiler option is missing'
35
+ end
30
36
 
31
37
  super({
32
38
  :rep => rep,
@@ -51,7 +57,7 @@ module Nanoc
51
57
  # the filter's #run method
52
58
  #
53
59
  # @return [void]
54
- def filter(filter_name, filter_args={})
60
+ def filter(filter_name, filter_args = {})
55
61
  rep.filter(filter_name, filter_args)
56
62
  end
57
63
 
@@ -12,24 +12,25 @@ module Nanoc
12
12
 
13
13
  # @option params [Nanoc::RulesCollection] rules_collection The rules
14
14
  # collection
15
- def initialize(params={})
16
- @rules_collection = params[:rules_collection] or
17
- raise ArgumentError, "Required :rules_collection option is missing"
15
+ def initialize(params = {})
16
+ @rules_collection = params.fetch(:rules_collection) do
17
+ raise ArgumentError, 'Required :rules_collection option is missing'
18
+ end
18
19
  end
19
20
 
20
21
  # @param [#reference] obj The object to calculate the rule memory for
21
22
  #
22
23
  # @return [Array] The caluclated rule memory for the given object
23
24
  def [](obj)
24
- result = case obj.type
25
+ result =
26
+ case obj.type
25
27
  when :item_rep
26
28
  @rules_collection.new_rule_memory_for_rep(obj)
27
29
  when :layout
28
30
  @rules_collection.new_rule_memory_for_layout(obj)
29
31
  else
30
- raise RuntimeError,
31
- "Do not know how to calculate the rule memory for #{obj.inspect}"
32
- end
32
+ raise "Do not know how to calculate the rule memory for #{obj.inspect}"
33
+ end
33
34
 
34
35
  result
35
36
  end
@@ -10,10 +10,10 @@ module Nanoc
10
10
 
11
11
  # @option params [Nanoc::Site] site The site where this rule memory store
12
12
  # belongs to
13
- def initialize(params={})
13
+ def initialize(params = {})
14
14
  super('tmp/rule_memory', 1)
15
15
 
16
- @site = params[:site] if params.has_key?(:site)
16
+ @site = params[:site] if params.key?(:site)
17
17
 
18
18
  @rule_memories = {}
19
19
  end
@@ -125,7 +125,7 @@ module Nanoc
125
125
  @item_routing_rules.each do |rule|
126
126
  next if !rule.applicable_to?(rep.item)
127
127
  next if rule.rep_name != rep.name
128
- next if rules.has_key?(rule.snapshot_name)
128
+ next if rules.key?(rule.snapshot_name)
129
129
 
130
130
  rules[rule.snapshot_name] = rule
131
131
  end
@@ -136,7 +136,7 @@ module Nanoc
136
136
  #
137
137
  # @param [Nanoc::Layout] layout The layout for which to fetch the filter.
138
138
  #
139
- # @return [Array, nil] A tuple containing the filter name and the filter
139
+ # @return [Array, nil] A tuple containing the filter name and the filter
140
140
  # arguments for the given layout.
141
141
  def filter_for_layout(layout)
142
142
  @layout_filter_mapping.each_pair do |layout_identifier, filter_name_and_args|
@@ -9,7 +9,7 @@ module Nanoc::ArrayExtensions
9
9
  # @return [Array] The converted array
10
10
  def symbolize_keys_recursively
11
11
  array = []
12
- self.each do |element|
12
+ each do |element|
13
13
  array << (element.respond_to?(:symbolize_keys_recursively) ? element.symbolize_keys_recursively : element)
14
14
  end
15
15
  array
@@ -26,7 +26,7 @@ module Nanoc::ArrayExtensions
26
26
  #
27
27
  # @return [Array] The converted array
28
28
  def stringify_keys_recursively
29
- inject([]) do |array, element|
29
+ reduce([]) do |array, element|
30
30
  array + [ element.respond_to?(:stringify_keys_recursively) ? element.stringify_keys_recursively : element ]
31
31
  end
32
32
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'date'
2
4
 
3
5
  begin
@@ -5,12 +7,12 @@ begin
5
7
  d.freeze
6
8
  d.year
7
9
  needs_patch = false
8
- rescue => e
10
+ rescue
9
11
  needs_patch = true
10
12
  end
11
13
 
12
14
  if needs_patch
13
-
15
+
14
16
  class ::Date
15
17
 
16
18
  [ :amjd, :jd, :day_fraction, :mjd, :ld, :civil, :ordinal, :commercial, :weeknum0, :weeknum1, :time, :wday, :julian?, :gregorian?, :leap? ].each do |m|
@@ -9,7 +9,7 @@ module Nanoc::HashExtensions
9
9
  # @return [Hash] The converted hash
10
10
  def symbolize_keys_recursively
11
11
  hash = {}
12
- self.each_pair do |key, value|
12
+ each_pair do |key, value|
13
13
  new_key = key.respond_to?(:to_sym) ? key.to_sym : key
14
14
  new_value = value.respond_to?(:symbolize_keys_recursively) ? value.symbolize_keys_recursively : value
15
15
  hash[new_key] = new_value
@@ -28,7 +28,7 @@ module Nanoc::HashExtensions
28
28
  #
29
29
  # @return [Hash] The converted hash
30
30
  def stringify_keys_recursively
31
- inject({}) do |hash, (key, value)|
31
+ reduce({}) do |hash, (key, value)|
32
32
  hash.merge(key.to_s => value.respond_to?(:stringify_keys_recursively) ? value.stringify_keys_recursively : value)
33
33
  end
34
34
  end
@@ -66,7 +66,7 @@ module Nanoc::HashExtensions
66
66
  #
67
67
  # @api private
68
68
  def checksum
69
- array = self.to_a.sort_by { |kv| kv[0].to_s }
69
+ array = to_a.sort_by { |kv| kv[0].to_s }
70
70
  array.checksum
71
71
  end
72
72
 
@@ -9,7 +9,7 @@ module Nanoc::PathnameExtensions
9
9
  #
10
10
  # @api private
11
11
  def checksum
12
- stat = File.stat(self.to_s)
12
+ stat = File.stat(to_s)
13
13
  stat.size.to_s + '-' + stat.mtime.to_s
14
14
  end
15
15
 
@@ -9,21 +9,21 @@ module Nanoc
9
9
  #
10
10
  # # Create a graph with three vertices
11
11
  # graph = Nanoc::DirectedGraph.new(%w( a b c d ))
12
- #
12
+ #
13
13
  # # Add edges
14
14
  # graph.add_edge('a', 'b')
15
15
  # graph.add_edge('b', 'c')
16
16
  # graph.add_edge('c', 'd')
17
- #
17
+ #
18
18
  # # Get (direct) predecessors
19
19
  # graph.direct_predecessors_of('d').sort
20
20
  # # => %w( c )
21
21
  # graph.predecessors_of('d').sort
22
22
  # # => %w( a b c )
23
- #
23
+ #
24
24
  # # Modify edges
25
25
  # graph.delete_edge('a', 'b')
26
- #
26
+ #
27
27
  # # Get (direct) predecessors again
28
28
  # graph.direct_predecessors_of('d').sort
29
29
  # # => %w( c )
@@ -36,7 +36,7 @@ module Nanoc
36
36
  # Creates a new directed graph with the given vertices.
37
37
  def initialize(vertices)
38
38
  @vertices = {}
39
- vertices.each_with_index do |v,i|
39
+ vertices.each_with_index do |v, i|
40
40
  @vertices[v] = i
41
41
  end
42
42
 
@@ -102,7 +102,7 @@ module Nanoc
102
102
  #
103
103
  # @since 3.2.0
104
104
  def add_vertex(v)
105
- return if @vertices.has_key?(v)
105
+ return if @vertices.key?(v)
106
106
 
107
107
  @vertices[v] = @vertices.size
108
108
 
@@ -81,7 +81,7 @@ module Nanoc
81
81
  class NoRulesFileFound < Generic
82
82
 
83
83
  def initialize
84
- super("This site does not have a rules file, which is required for nanoc sites.")
84
+ super('This site does not have a rules file, which is required for nanoc sites.')
85
85
  end
86
86
 
87
87
  end
@@ -21,9 +21,9 @@ module Nanoc
21
21
  # @example A fast fib function due to memoization
22
22
  #
23
23
  # class FibFast
24
- #
24
+ #
25
25
  # extend Nanoc::Memoization
26
- #
26
+ #
27
27
  # def run(n)
28
28
  # if n == 0
29
29
  # 0
@@ -34,7 +34,7 @@ module Nanoc
34
34
  # end
35
35
  # end
36
36
  # memoize :run
37
- #
37
+ #
38
38
  # end
39
39
  #
40
40
  # @param [Symbol, String] method_name The name of the method to memoize
@@ -52,7 +52,7 @@ module Nanoc
52
52
  @__memoization_cache[method_name] ||= {}
53
53
 
54
54
  # Recalculate if necessary
55
- if !@__memoization_cache[method_name].has_key?(args)
55
+ if !@__memoization_cache[method_name].key?(args)
56
56
  result = send(original_method_name, *args)
57
57
  @__memoization_cache[method_name][args] = result
58
58
  end
@@ -27,7 +27,7 @@ module Nanoc
27
27
  # @yield [*args] Will be executed with the arguments passed to {.post}
28
28
  #
29
29
  # @return [void]
30
- def on(name, id=nil, &block)
30
+ def on(name, id = nil, &block)
31
31
  initialize_if_necessary(name)
32
32
 
33
33
  # Add observer