nanoc-core 4.12.20 → 4.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nanoc/core/action_sequence.rb +4 -4
  3. data/lib/nanoc/core/action_sequence_store.rb +1 -1
  4. data/lib/nanoc/core/basic_item_rep_view.rb +1 -1
  5. data/lib/nanoc/core/binary_compiled_content_cache.rb +1 -1
  6. data/lib/nanoc/core/changes_stream.rb +4 -4
  7. data/lib/nanoc/core/checksum_store.rb +1 -1
  8. data/lib/nanoc/core/checksummer.rb +12 -7
  9. data/lib/nanoc/core/compilation_item_rep_view.rb +2 -2
  10. data/lib/nanoc/core/compilation_item_view.rb +2 -2
  11. data/lib/nanoc/core/compilation_phases/abstract.rb +2 -2
  12. data/lib/nanoc/core/compilation_phases/cache.rb +2 -2
  13. data/lib/nanoc/core/compilation_phases/mark_done.rb +1 -1
  14. data/lib/nanoc/core/compilation_phases/resume.rb +1 -1
  15. data/lib/nanoc/core/compilation_phases/write.rb +1 -1
  16. data/lib/nanoc/core/compilation_stages/build_reps.rb +2 -2
  17. data/lib/nanoc/core/compilation_stages/compile_reps.rb +24 -7
  18. data/lib/nanoc/core/compiled_content_cache.rb +3 -3
  19. data/lib/nanoc/core/compiled_content_store.rb +1 -1
  20. data/lib/nanoc/core/compiler.rb +25 -23
  21. data/lib/nanoc/core/compiler_loader.rb +9 -8
  22. data/lib/nanoc/core/config_view.rb +3 -3
  23. data/lib/nanoc/core/configuration.rb +4 -4
  24. data/lib/nanoc/core/content.rb +1 -1
  25. data/lib/nanoc/core/context.rb +1 -1
  26. data/lib/nanoc/core/core_ext/array.rb +12 -8
  27. data/lib/nanoc/core/data_source.rb +3 -3
  28. data/lib/nanoc/core/dependency_props.rb +2 -2
  29. data/lib/nanoc/core/dependency_store.rb +4 -4
  30. data/lib/nanoc/core/dependency_tracker.rb +5 -5
  31. data/lib/nanoc/core/document_view_mixin.rb +1 -1
  32. data/lib/nanoc/core/feature.rb +1 -1
  33. data/lib/nanoc/core/identifiable_collection.rb +2 -2
  34. data/lib/nanoc/core/identifiable_collection_view.rb +2 -2
  35. data/lib/nanoc/core/item.rb +1 -1
  36. data/lib/nanoc/core/item_rep_repo.rb +2 -2
  37. data/lib/nanoc/core/layout.rb +1 -1
  38. data/lib/nanoc/core/mutable_identifiable_collection_view.rb +1 -1
  39. data/lib/nanoc/core/mutable_item_collection_view.rb +1 -1
  40. data/lib/nanoc/core/notification_center.rb +3 -3
  41. data/lib/nanoc/core/outdatedness_store.rb +1 -1
  42. data/lib/nanoc/core/post_compile_item_rep_view.rb +1 -1
  43. data/lib/nanoc/core/site_loader.rb +5 -5
  44. data/lib/nanoc/core/textual_compiled_content_cache.rb +1 -1
  45. data/lib/nanoc/core/version.rb +1 -1
  46. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0bc06b86a25f8666e95d7f4112806c9c9b1ae652071fd89e084544c2f8016665
4
- data.tar.gz: a85710c5f160f0fa75237ed1ab805f58fde9f3c0f3efbe4b62e7a170e9d18999
3
+ metadata.gz: d667fdfe9740b04cfb89b52ae97602abc239d3744d85667b049a477fd7340c3a
4
+ data.tar.gz: 58b70ca67a73647560e0761af9cc6d26ebd9eef643fa5145eae850209a096194
5
5
  SHA512:
6
- metadata.gz: 19b6e09d8ea2115fb38e3493ee45ed9438155d8801be0c72ca501f9bc8e5ad21b56269bf11d2c005a8c5a28ed176b7a483ef4df250359f201adbd8e8f36808b4
7
- data.tar.gz: 33b554e3eb1312e067925ab295bc020f41f097ebb090cea94e111609dbe66018d0450caf0e54e1f5d4e21581c7feafa0ef99d2d6e4de972789c2461effcfbcb0
6
+ metadata.gz: f4199cfa2dbbc0306afb33e476c72b258b1dd61fc979ca3d8ea4d4a49fb3d66fc8972f9577ea5d3ac264bdf15be6782538d392758ae5642cf304580e7e56259e
7
+ data.tar.gz: cfc6633370c3a6784061518d8001396fc094c5529e596c2283b75cc4ec8f581f29ac5c401c12253df1cb4a5982192648f3a02d5ad67a271d218ea53e729b8544
@@ -44,15 +44,15 @@ module Nanoc
44
44
  end
45
45
 
46
46
  # contract C::Func[Nanoc::Core::ProcessingAction => C::Any] => self
47
- def each(&block)
48
- @actions.each(&block)
47
+ def each(&)
48
+ @actions.each(&)
49
49
  self
50
50
  end
51
51
 
52
52
  # contract C::Func[Nanoc::Core::ProcessingAction => C::Any] => self
53
- def map(&block)
53
+ def map(&)
54
54
  self.class.new(
55
- actions: @actions.map(&block),
55
+ actions: @actions.map(&),
56
56
  )
57
57
  end
58
58
  end
@@ -11,7 +11,7 @@ module Nanoc
11
11
 
12
12
  contract C::KeywordArgs[config: Nanoc::Core::Configuration] => C::Any
13
13
  def initialize(config:)
14
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'rule_memory'), 2)
14
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'rule_memory'), 2)
15
15
 
16
16
  @action_sequences = {}
17
17
  end
@@ -57,7 +57,7 @@ module Nanoc
57
57
  # @return [String] The item rep’s path.
58
58
  def path(snapshot: :last)
59
59
  @context.dependency_tracker.bounce(_unwrap.item, path: true)
60
- @item_rep.path(snapshot: snapshot)
60
+ @item_rep.path(snapshot:)
61
61
  end
62
62
 
63
63
  # Returns the item that this item rep belongs to.
@@ -11,7 +11,7 @@ module Nanoc
11
11
 
12
12
  contract C::KeywordArgs[config: Nanoc::Core::Configuration] => C::Any
13
13
  def initialize(config:)
14
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'binary_content'), 3)
14
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'binary_content'), 3)
15
15
 
16
16
  @cache = {}
17
17
  end
@@ -38,16 +38,16 @@ module Nanoc
38
38
  @listener&.to_stop&.call
39
39
  end
40
40
 
41
- def map(&block)
42
- self.class.new(enum: @enum.map(&block))
41
+ def map(&)
42
+ self.class.new(enum: @enum.map(&))
43
43
  end
44
44
 
45
45
  def to_enum
46
46
  @enum
47
47
  end
48
48
 
49
- def each(&block)
50
- @enum.each(&block)
49
+ def each(&)
50
+ @enum.each(&)
51
51
  nil
52
52
  end
53
53
  end
@@ -16,7 +16,7 @@ module Nanoc
16
16
 
17
17
  contract C::KeywordArgs[config: Nanoc::Core::Configuration, objects: C::IterOf[c_obj]] => C::Any
18
18
  def initialize(config:, objects:)
19
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'checksums'), 3)
19
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'checksums'), 3)
20
20
 
21
21
  @objects = objects
22
22
 
@@ -61,14 +61,19 @@ module Nanoc
61
61
 
62
62
  private
63
63
 
64
- def update(obj, digest, visited = Immutable::Set.new)
65
- digest.update(obj.class.to_s)
66
-
67
- if visited.include?(obj)
68
- digest.update('<recur>')
64
+ def update(obj, digest, visited = {})
65
+ num = visited[obj]
66
+ if num
67
+ # If there already is an entry for this object, refer to it by its number.
68
+ digest.update("@#{num}")
69
69
  else
70
- digest.update('<')
71
- behavior_for(obj).update(obj, digest) { |o| update(o, digest, visited.add(obj)) }
70
+ # This object isn’t known yet. Assign it a new number.
71
+ num = visited.length
72
+ visited[obj] = num
73
+
74
+ digest.update(obj.class.to_s)
75
+ digest.update("##{num}<")
76
+ behavior_for(obj).update(obj, digest) { |o| update(o, digest, visited) }
72
77
  digest.update('>')
73
78
  end
74
79
  end
@@ -24,7 +24,7 @@ module Nanoc
24
24
  def raw_path(snapshot: :last)
25
25
  @context.dependency_tracker.bounce(_unwrap.item, compiled_content: true)
26
26
 
27
- res = @item_rep.raw_path(snapshot: snapshot)
27
+ res = @item_rep.raw_path(snapshot:)
28
28
 
29
29
  unless @item_rep.compiled?
30
30
  Fiber.yield(Nanoc::Core::Errors::UnmetDependency.new(@item_rep, snapshot))
@@ -50,7 +50,7 @@ module Nanoc
50
50
  # @return [String] The content at the given snapshot.
51
51
  def compiled_content(snapshot: nil)
52
52
  @context.dependency_tracker.bounce(_unwrap.item, compiled_content: true)
53
- @context.compiled_content_store.compiled_content(rep: _unwrap, snapshot: snapshot)
53
+ @context.compiled_content_store.compiled_content(rep: _unwrap, snapshot:)
54
54
  end
55
55
  end
56
56
  end
@@ -16,7 +16,7 @@ module Nanoc
16
16
  #
17
17
  # @return [String] The content of the given rep at the given snapshot.
18
18
  def compiled_content(rep: :default, snapshot: nil)
19
- reps.fetch(rep).compiled_content(snapshot: snapshot)
19
+ reps.fetch(rep).compiled_content(snapshot:)
20
20
  end
21
21
 
22
22
  # Returns the item path, as used when being linked to. It starts
@@ -33,7 +33,7 @@ module Nanoc
33
33
  #
34
34
  # @return [String] The item’s path.
35
35
  def path(rep: :default, snapshot: :last)
36
- reps.fetch(rep).path(snapshot: snapshot)
36
+ reps.fetch(rep).path(snapshot:)
37
37
  end
38
38
 
39
39
  # Returns the representations of this item.
@@ -20,9 +20,9 @@ module Nanoc
20
20
 
21
21
  def call(rep, is_outdated:)
22
22
  notify(:phase_started, rep)
23
- run(rep, is_outdated: is_outdated) do
23
+ run(rep, is_outdated:) do
24
24
  notify(:phase_yielded, rep)
25
- @wrapped.call(rep, is_outdated: is_outdated)
25
+ @wrapped.call(rep, is_outdated:)
26
26
  notify(:phase_resumed, rep)
27
27
  end
28
28
  notify(:phase_ended, rep)
@@ -9,7 +9,7 @@ module Nanoc
9
9
  include Nanoc::Core::ContractsSupport
10
10
 
11
11
  def initialize(wrapped:, compiled_content_cache:, compiled_content_store:)
12
- super(wrapped: wrapped)
12
+ super(wrapped:)
13
13
 
14
14
  @compiled_content_cache = compiled_content_cache
15
15
  @compiled_content_store = compiled_content_store
@@ -17,7 +17,7 @@ module Nanoc
17
17
 
18
18
  contract Nanoc::Core::ItemRep, C::KeywordArgs[is_outdated: C::Bool], C::Func[C::None => C::Any] => C::Any
19
19
  def run(rep, is_outdated:)
20
- if can_reuse_content_for_rep?(rep, is_outdated: is_outdated)
20
+ if can_reuse_content_for_rep?(rep, is_outdated:)
21
21
  # If cached content can be used for this item rep, do so, and skip
22
22
  # recalculation of the item rep compiled content.
23
23
  Nanoc::Core::NotificationCenter.post(:cached_content_used, rep)
@@ -7,7 +7,7 @@ module Nanoc
7
7
  include Nanoc::Core::ContractsSupport
8
8
 
9
9
  def initialize(wrapped:, outdatedness_store:)
10
- super(wrapped: wrapped)
10
+ super(wrapped:)
11
11
 
12
12
  @outdatedness_store = outdatedness_store
13
13
  end
@@ -11,7 +11,7 @@ module Nanoc
11
11
 
12
12
  contract Nanoc::Core::ItemRep, C::KeywordArgs[is_outdated: C::Bool], C::Func[C::None => C::Any] => C::Any
13
13
  def run(rep, is_outdated:, &block)
14
- fiber = fiber_for(rep, is_outdated: is_outdated, &block)
14
+ fiber = fiber_for(rep, is_outdated:, &block)
15
15
  while fiber.alive?
16
16
  res = fiber.resume
17
17
 
@@ -9,7 +9,7 @@ module Nanoc
9
9
  WORKER_POOL_SIZE = 5
10
10
 
11
11
  def initialize(compiled_content_store:, wrapped:)
12
- super(wrapped: wrapped)
12
+ super(wrapped:)
13
13
 
14
14
  @compiled_content_store = compiled_content_store
15
15
 
@@ -26,8 +26,8 @@ module Nanoc
26
26
  end
27
27
 
28
28
  {
29
- reps: reps,
30
- action_sequences: action_sequences,
29
+ reps:,
30
+ action_sequences:,
31
31
  }
32
32
  end
33
33
  end
@@ -7,30 +7,47 @@ module Nanoc
7
7
  include Nanoc::Core::ContractsSupport
8
8
  include Nanoc::Core::Assertions::Mixin
9
9
 
10
- def initialize(reps:, outdatedness_store:, dependency_store:, action_sequences:, compilation_context:, compiled_content_cache:)
10
+ def initialize(reps:, outdatedness_store:, dependency_store:, action_sequences:, compilation_context:, compiled_content_cache:, focus:)
11
11
  @reps = reps
12
12
  @outdatedness_store = outdatedness_store
13
13
  @dependency_store = dependency_store
14
14
  @action_sequences = action_sequences
15
15
  @compilation_context = compilation_context
16
16
  @compiled_content_cache = compiled_content_cache
17
+ @focus = focus
17
18
  end
18
19
 
19
20
  def run
20
21
  outdated_reps = @reps.select { |r| @outdatedness_store.include?(r) }
22
+
23
+ # If a focus is specified, only compile reps that match this focus.
24
+ # (If no focus is specified, `@focus` will be `nil`, not an empty array.)
25
+ if @focus
26
+ focus_patterns = @focus.map { |f| Nanoc::Core::Pattern.from(f) }
27
+
28
+ # Find reps for which at least one focus pattern matches.
29
+ outdated_reps = outdated_reps.select do |irep|
30
+ focus_patterns.any? do |focus_pattern|
31
+ focus_pattern.match?(irep.item.identifier)
32
+ end
33
+ end
34
+ end
35
+
21
36
  selector = Nanoc::Core::ItemRepSelector.new(outdated_reps)
22
37
  run_phase_stack do |phase_stack|
23
38
  selector.each do |rep|
24
39
  handle_errors_while(rep) do
25
- compile_rep(rep, phase_stack: phase_stack, is_outdated: @outdatedness_store.include?(rep))
40
+ compile_rep(rep, phase_stack:, is_outdated: @outdatedness_store.include?(rep))
26
41
  end
27
42
  end
28
43
  end
29
44
 
30
- assert Nanoc::Core::Assertions::AllItemRepsHaveCompiledContent.new(
31
- compiled_content_cache: @compiled_content_cache,
32
- item_reps: @reps,
33
- )
45
+ unless @focus
46
+ assert Nanoc::Core::Assertions::AllItemRepsHaveCompiledContent.new(
47
+ compiled_content_cache: @compiled_content_cache,
48
+ item_reps: @reps,
49
+ )
50
+ end
34
51
  ensure
35
52
  @outdatedness_store.store
36
53
  @compiled_content_cache.prune(items: @reps.map(&:item).uniq)
@@ -46,7 +63,7 @@ module Nanoc
46
63
  end
47
64
 
48
65
  def compile_rep(rep, phase_stack:, is_outdated:)
49
- phase_stack.call(rep, is_outdated: is_outdated)
66
+ phase_stack.call(rep, is_outdated:)
50
67
  end
51
68
 
52
69
  def run_phase_stack
@@ -11,8 +11,8 @@ module Nanoc
11
11
 
12
12
  contract C::KeywordArgs[config: Nanoc::Core::Configuration] => C::Any
13
13
  def initialize(config:)
14
- @textual_cache = Nanoc::Core::TextualCompiledContentCache.new(config: config)
15
- @binary_cache = Nanoc::Core::BinaryCompiledContentCache.new(config: config)
14
+ @textual_cache = Nanoc::Core::TextualCompiledContentCache.new(config:)
15
+ @binary_cache = Nanoc::Core::BinaryCompiledContentCache.new(config:)
16
16
 
17
17
  @wrapped_caches = [@textual_cache, @binary_cache]
18
18
  end
@@ -47,7 +47,7 @@ module Nanoc
47
47
  end
48
48
 
49
49
  def prune(items:)
50
- @wrapped_caches.each { |w| w.prune(items: items) }
50
+ @wrapped_caches.each { |w| w.prune(items:) }
51
51
  end
52
52
 
53
53
  # True if there is cached compiled content available for this item, and
@@ -64,7 +64,7 @@ module Nanoc
64
64
 
65
65
  contract C::KeywordArgs[rep: Nanoc::Core::ItemRep, snapshot: C::Optional[C::Maybe[Symbol]]] => String
66
66
  def compiled_content(rep:, snapshot: nil)
67
- snapshot_content = raw_compiled_content(rep: rep, snapshot: snapshot)
67
+ snapshot_content = raw_compiled_content(rep:, snapshot:)
68
68
 
69
69
  if snapshot_content.binary?
70
70
  raise Nanoc::Core::Errors::CannotGetCompiledContentOfBinaryItem.new(rep)
@@ -6,16 +6,16 @@ module Nanoc
6
6
  include Nanoc::Core::ContractsSupport
7
7
 
8
8
  contract Nanoc::Core::Site => C::Any
9
- def self.compile(site)
10
- new_for(site).run_until_end
9
+ def self.compile(site, focus: nil)
10
+ new_for(site, focus:).run_until_end
11
11
  end
12
12
 
13
13
  contract Nanoc::Core::Site => Nanoc::Core::Compiler
14
- def self.new_for(site)
15
- Nanoc::Core::CompilerLoader.new.load(site)
14
+ def self.new_for(site, focus: nil)
15
+ Nanoc::Core::CompilerLoader.new.load(site, focus:)
16
16
  end
17
17
 
18
- def initialize(site, compiled_content_cache:, checksum_store:, action_sequence_store:, action_provider:, dependency_store:, outdatedness_store:)
18
+ def initialize(site, compiled_content_cache:, checksum_store:, action_sequence_store:, action_provider:, dependency_store:, outdatedness_store:, focus:)
19
19
  @site = site
20
20
 
21
21
  # Needed because configuration is mutable :(
@@ -27,6 +27,7 @@ module Nanoc
27
27
  @dependency_store = dependency_store
28
28
  @action_provider = action_provider
29
29
  @outdatedness_store = outdatedness_store
30
+ @focus = focus
30
31
 
31
32
  @compiled_content_store = Nanoc::Core::CompiledContentStore.new
32
33
  end
@@ -60,17 +61,17 @@ module Nanoc
60
61
  load_stores_stage.call
61
62
  checksums = calculate_checksums_stage.call
62
63
  outdatedness_checker = create_outdatedness_checker(
63
- checksums: checksums,
64
- action_sequences: action_sequences,
65
- reps: reps,
64
+ checksums:,
65
+ action_sequences:,
66
+ reps:,
66
67
  )
67
68
  outdated_items = determine_outdatedness_stage(outdatedness_checker, reps).call
68
69
 
69
70
  prev.merge(
70
- checksums: checksums,
71
+ checksums:,
71
72
  dependency_store: @dependency_store,
72
- outdatedness_checker: outdatedness_checker,
73
- outdated_items: outdated_items,
73
+ outdatedness_checker:,
74
+ outdated_items:,
74
75
  )
75
76
  end
76
77
  end
@@ -95,7 +96,7 @@ module Nanoc
95
96
  def compilation_context(reps:)
96
97
  Nanoc::Core::CompilationContext.new(
97
98
  action_provider: @action_provider,
98
- reps: reps,
99
+ reps:,
99
100
  site: @site,
100
101
  compiled_content_cache: @compiled_content_cache,
101
102
  compiled_content_store: @compiled_content_store,
@@ -110,9 +111,9 @@ module Nanoc
110
111
  checksum_store: @checksum_store,
111
112
  dependency_store: @dependency_store,
112
113
  action_sequence_store: @action_sequence_store,
113
- action_sequences: action_sequences,
114
- checksums: checksums,
115
- reps: reps,
114
+ action_sequences:,
115
+ checksums:,
116
+ reps:,
116
117
  )
117
118
  end
118
119
 
@@ -135,7 +136,7 @@ module Nanoc
135
136
  def prune_stage(reps)
136
137
  @_prune_stage ||= ::Nanoc::Core::CompilationStages::Prune.new(
137
138
  config: @site.config,
138
- reps: reps,
139
+ reps:,
139
140
  )
140
141
  end
141
142
 
@@ -160,30 +161,31 @@ module Nanoc
160
161
 
161
162
  def determine_outdatedness_stage(outdatedness_checker, reps)
162
163
  @_determine_outdatedness_stage ||= ::Nanoc::Core::CompilationStages::DetermineOutdatedness.new(
163
- reps: reps,
164
- outdatedness_checker: outdatedness_checker,
164
+ reps:,
165
+ outdatedness_checker:,
165
166
  outdatedness_store: @outdatedness_store,
166
167
  )
167
168
  end
168
169
 
169
170
  def store_pre_compilation_state_stage(action_sequences, reps)
170
171
  @_store_pre_compilation_state_stage ||= ::Nanoc::Core::CompilationStages::StorePreCompilationState.new(
171
- reps: reps,
172
+ reps:,
172
173
  layouts: @site.layouts,
173
174
  checksum_store: @checksum_store,
174
175
  action_sequence_store: @action_sequence_store,
175
- action_sequences: action_sequences,
176
+ action_sequences:,
176
177
  )
177
178
  end
178
179
 
179
180
  def compile_reps_stage(action_sequences, reps)
180
181
  @_compile_reps_stage ||= ::Nanoc::Core::CompilationStages::CompileReps.new(
181
- reps: reps,
182
+ reps:,
182
183
  outdatedness_store: @outdatedness_store,
183
184
  dependency_store: @dependency_store,
184
- action_sequences: action_sequences,
185
- compilation_context: compilation_context(reps: reps),
185
+ action_sequences:,
186
+ compilation_context: compilation_context(reps:),
186
187
  compiled_content_cache: @compiled_content_cache,
188
+ focus: @focus,
187
189
  )
188
190
  end
189
191
 
@@ -4,7 +4,7 @@ module Nanoc
4
4
  module Core
5
5
  # @api private
6
6
  class CompilerLoader
7
- def load(site, action_provider: nil)
7
+ def load(site, focus: nil, action_provider: nil)
8
8
  action_sequence_store = Nanoc::Core::ActionSequenceStore.new(config: site.config)
9
9
 
10
10
  dependency_store =
@@ -13,7 +13,7 @@ module Nanoc
13
13
  objects = site.items.to_a + site.layouts.to_a + site.code_snippets + [site.config]
14
14
 
15
15
  checksum_store =
16
- Nanoc::Core::ChecksumStore.new(config: site.config, objects: objects)
16
+ Nanoc::Core::ChecksumStore.new(config: site.config, objects:)
17
17
 
18
18
  action_provider ||= Nanoc::Core::ActionProvider.named(site.config.action_provider).for(site)
19
19
 
@@ -24,12 +24,13 @@ module Nanoc
24
24
  compiled_content_cache_class.new(config: site.config)
25
25
 
26
26
  params = {
27
- compiled_content_cache: compiled_content_cache,
28
- checksum_store: checksum_store,
29
- action_sequence_store: action_sequence_store,
30
- dependency_store: dependency_store,
31
- action_provider: action_provider,
32
- outdatedness_store: outdatedness_store,
27
+ compiled_content_cache:,
28
+ checksum_store:,
29
+ action_sequence_store:,
30
+ dependency_store:,
31
+ action_provider:,
32
+ outdatedness_store:,
33
+ focus:,
33
34
  }
34
35
 
35
36
  Nanoc::Core::Compiler.new(site, **params)
@@ -20,7 +20,7 @@ module Nanoc
20
20
  end
21
21
 
22
22
  # @see Hash#fetch
23
- def fetch(key, fallback = Nanoc::Core::UNDEFINED, &_block)
23
+ def fetch(key, fallback = Nanoc::Core::UNDEFINED, &)
24
24
  @context.dependency_tracker.bounce(_unwrap, attributes: [key])
25
25
  @config.fetch(key) do
26
26
  if !Nanoc::Core::UNDEFINED.equal?(fallback)
@@ -46,9 +46,9 @@ module Nanoc
46
46
  end
47
47
 
48
48
  # @see Hash#each
49
- def each(&block)
49
+ def each(&)
50
50
  @context.dependency_tracker.bounce(_unwrap, attributes: true)
51
- @config.each(&block)
51
+ @config.each(&)
52
52
  end
53
53
 
54
54
  # @see Configuration#env_name
@@ -72,7 +72,7 @@ module Nanoc
72
72
  # Load given environment configuration
73
73
  env_config = @wrapped[ENVIRONMENTS_CONFIG_KEY].fetch(env_name.to_sym, {})
74
74
 
75
- self.class.new(hash: @wrapped, dir: @dir, env_name: env_name).merge(env_config)
75
+ self.class.new(hash: @wrapped, dir: @dir, env_name:).merge(env_config)
76
76
  end
77
77
 
78
78
  contract C::None => Hash
@@ -102,7 +102,7 @@ module Nanoc
102
102
  end
103
103
 
104
104
  contract C::Any, C::Maybe[C::Any], C::Maybe[C::Func[C::None => C::Any]] => C::Any
105
- def fetch(key, fallback = Nanoc::Core::UNDEFINED, &_block)
105
+ def fetch(key, fallback = Nanoc::Core::UNDEFINED, &)
106
106
  @wrapped.fetch(key) do
107
107
  if !Nanoc::Core::UNDEFINED.equal?(fallback)
108
108
  fallback
@@ -136,8 +136,8 @@ module Nanoc
136
136
  end
137
137
 
138
138
  contract C::Func[C::Any, C::Any => C::Any] => self
139
- def each(&block)
140
- @wrapped.each(&block)
139
+ def each(&)
140
+ @wrapped.each(&)
141
141
  self
142
142
  end
143
143
 
@@ -14,7 +14,7 @@ module Nanoc
14
14
  elsif binary
15
15
  Nanoc::Core::BinaryContent.new(content)
16
16
  else
17
- Nanoc::Core::TextualContent.new(content, filename: filename)
17
+ Nanoc::Core::TextualContent.new(content, filename:)
18
18
  end
19
19
  end
20
20
 
@@ -39,7 +39,7 @@ module Nanoc
39
39
  end
40
40
  # rubocop:enable Naming/AccessorMethodName
41
41
 
42
- def method_missing(method, *args, &blk)
42
+ def method_missing(method, *args, &)
43
43
  ivar_name = '@' + method.to_s
44
44
  if instance_variable_defined?(ivar_name)
45
45
  instance_variable_get(ivar_name)
@@ -10,19 +10,23 @@ module Nanoc
10
10
  #
11
11
  # @return [Array] The converted array
12
12
  def __nanoc_symbolize_keys_recursively
13
- array = []
14
- each do |element|
15
- array << (element.respond_to?(:__nanoc_symbolize_keys_recursively) ? element.__nanoc_symbolize_keys_recursively : element)
13
+ map do |element|
14
+ if element.respond_to?(:__nanoc_symbolize_keys_recursively)
15
+ element.__nanoc_symbolize_keys_recursively
16
+ else
17
+ element
18
+ end
16
19
  end
17
- array
18
20
  end
19
21
 
20
22
  def __nanoc_stringify_keys_recursively
21
- array = []
22
- each do |element|
23
- array << (element.respond_to?(:__nanoc_stringify_keys_recursively) ? element.__nanoc_stringify_keys_recursively : element)
23
+ map do |element|
24
+ if element.respond_to?(:__nanoc_stringify_keys_recursively)
25
+ element.__nanoc_stringify_keys_recursively
26
+ else
27
+ element
28
+ end
24
29
  end
25
- array
26
30
  end
27
31
 
28
32
  # Freezes the contents of the array, as well as all array elements. The
@@ -144,8 +144,8 @@ module Nanoc
144
144
  #
145
145
  # @param [String, nil] attributes_checksum_data
146
146
  def new_item(content, attributes, identifier, binary: false, checksum_data: nil, content_checksum_data: nil, attributes_checksum_data: nil)
147
- content = Nanoc::Core::Content.create(content, binary: binary)
148
- Nanoc::Core::Item.new(content, attributes, identifier, checksum_data: checksum_data, content_checksum_data: content_checksum_data, attributes_checksum_data: attributes_checksum_data)
147
+ content = Nanoc::Core::Content.create(content, binary:)
148
+ Nanoc::Core::Item.new(content, attributes, identifier, checksum_data:, content_checksum_data:, attributes_checksum_data:)
149
149
  end
150
150
 
151
151
  # Creates a new in-memory layout instance. This is intended for use within
@@ -163,7 +163,7 @@ module Nanoc
163
163
  #
164
164
  # @param [String, nil] attributes_checksum_data
165
165
  def new_layout(raw_content, attributes, identifier, checksum_data: nil, content_checksum_data: nil, attributes_checksum_data: nil)
166
- Nanoc::Core::Layout.new(raw_content, attributes, identifier, checksum_data: checksum_data, content_checksum_data: content_checksum_data, attributes_checksum_data: attributes_checksum_data)
166
+ Nanoc::Core::Layout.new(raw_content, attributes, identifier, checksum_data:, content_checksum_data:, attributes_checksum_data:)
167
167
  end
168
168
  end
169
169
  end
@@ -195,8 +195,8 @@ module Nanoc
195
195
  contract C::None => Hash
196
196
  def to_h
197
197
  {
198
- raw_content: raw_content,
199
- attributes: attributes,
198
+ raw_content:,
199
+ attributes:,
200
200
  compiled_content: compiled_content?,
201
201
  path: path?,
202
202
  }
@@ -42,7 +42,7 @@ module Nanoc
42
42
 
43
43
  contract Nanoc::Core::ItemCollection, Nanoc::Core::LayoutCollection, Nanoc::Core::Configuration => C::Any
44
44
  def initialize(items, layouts, config)
45
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'dependencies'), 6)
45
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'dependencies'), 6)
46
46
 
47
47
  @config = config
48
48
  @items = items
@@ -142,10 +142,10 @@ module Nanoc
142
142
  end
143
143
 
144
144
  existing_props = @graph.props_for(dst_ref, src_ref)
145
- new_props = Nanoc::Core::DependencyProps.new(raw_content: raw_content, attributes: attributes, compiled_content: compiled_content, path: path)
145
+ new_props = Nanoc::Core::DependencyProps.new(raw_content:, attributes:, compiled_content:, path:)
146
146
  props = existing_props ? existing_props.merge(new_props) : new_props
147
147
 
148
- @graph.add_edge(dst_ref, src_ref, props: props)
148
+ @graph.add_edge(dst_ref, src_ref, props:)
149
149
  end
150
150
 
151
151
  def add_vertex_for(obj)
@@ -231,7 +231,7 @@ module Nanoc
231
231
  to = to_index && previous_refs[to_index]
232
232
  props = Nanoc::Core::DependencyProps.new(**props)
233
233
 
234
- @graph.add_edge(from, to, props: props)
234
+ @graph.add_edge(from, to, props:)
235
235
  end
236
236
 
237
237
  # Record dependency from all items on new items
@@ -49,10 +49,10 @@ module Nanoc
49
49
  @dependency_store.record_dependency(
50
50
  @stack.last,
51
51
  obj,
52
- raw_content: raw_content,
53
- attributes: attributes,
54
- compiled_content: compiled_content,
55
- path: path,
52
+ raw_content:,
53
+ attributes:,
54
+ compiled_content:,
55
+ path:,
56
56
  )
57
57
  end
58
58
 
@@ -66,7 +66,7 @@ module Nanoc
66
66
 
67
67
  contract C_OBJ, C_ARGS => C::Any
68
68
  def bounce(obj, raw_content: false, attributes: false, compiled_content: false, path: false)
69
- enter(obj, raw_content: raw_content, attributes: attributes, compiled_content: compiled_content, path: path)
69
+ enter(obj, raw_content:, attributes:, compiled_content:, path:)
70
70
  exit
71
71
  end
72
72
 
@@ -48,7 +48,7 @@ module Nanoc
48
48
  end
49
49
 
50
50
  # @see Hash#fetch
51
- def fetch(key, fallback = Nanoc::Core::UNDEFINED, &_block)
51
+ def fetch(key, fallback = Nanoc::Core::UNDEFINED, &)
52
52
  @context.dependency_tracker.bounce(_unwrap, attributes: [key])
53
53
 
54
54
  if _unwrap.attributes.key?(key)
@@ -91,4 +91,4 @@ module Nanoc
91
91
  end
92
92
  end
93
93
 
94
- Nanoc::Core::Feature.define('where', version: '4.12')
94
+ Nanoc::Core::Feature.define('where', version: '4.13')
@@ -62,8 +62,8 @@ module Nanoc
62
62
  end
63
63
 
64
64
  # contract C::Func[C::RespondTo[:identifier] => C::Any] => self
65
- def reject(&block)
66
- self.class.new(@config, @objects.reject(&block))
65
+ def reject(&)
66
+ self.class.new(@config, @objects.reject(&))
67
67
  end
68
68
 
69
69
  def object_with_identifier(identifier)
@@ -49,10 +49,10 @@ module Nanoc
49
49
  # @param [String, Regex] arg
50
50
  #
51
51
  # @return [Enumerable]
52
- def find_all(arg = NOTHING, &block)
52
+ def find_all(arg = NOTHING, &)
53
53
  if NOTHING.equal?(arg)
54
54
  @context.dependency_tracker.bounce(_unwrap, raw_content: true)
55
- return @objects.map { |i| view_class.new(i, @context) }.select(&block)
55
+ return @objects.map { |i| view_class.new(i, @context) }.select(&)
56
56
  end
57
57
 
58
58
  prop_attribute =
@@ -8,7 +8,7 @@ module Nanoc
8
8
  end
9
9
 
10
10
  def identifier=(new_identifier)
11
- super(new_identifier)
11
+ super
12
12
 
13
13
  # Invalidate memoization cache
14
14
  @_reference = nil
@@ -24,8 +24,8 @@ module Nanoc
24
24
  @reps
25
25
  end
26
26
 
27
- def each(&block)
28
- @reps.each(&block)
27
+ def each(&)
28
+ @reps.each(&)
29
29
  self
30
30
  end
31
31
 
@@ -8,7 +8,7 @@ module Nanoc
8
8
  end
9
9
 
10
10
  def identifier=(new_identifier)
11
- super(new_identifier)
11
+ super
12
12
 
13
13
  # Invalidate memoization cache
14
14
  @_reference = nil
@@ -10,7 +10,7 @@ module Nanoc
10
10
  # @yieldreturn [Boolean]
11
11
  #
12
12
  # @return [self]
13
- def delete_if(&_block)
13
+ def delete_if(&)
14
14
  @objects = @objects.reject { |o| yield(view_class.new(o, @context)) }
15
15
  self
16
16
  end
@@ -25,7 +25,7 @@ module Nanoc
25
25
  #
26
26
  # @return [self]
27
27
  def create(content, attributes, identifier, binary: false, filename: nil)
28
- content = Nanoc::Core::Content.create(content, binary: binary, filename: filename)
28
+ content = Nanoc::Core::Content.create(content, binary:, filename:)
29
29
  @objects = @objects.add(Nanoc::Core::Item.new(content, attributes, identifier))
30
30
  self
31
31
  end
@@ -53,7 +53,7 @@ module Nanoc
53
53
  end
54
54
 
55
55
  def on(name, id = nil, &block)
56
- @notifications[name] << { id: id, block: block }
56
+ @notifications[name] << { id:, block: }
57
57
  end
58
58
 
59
59
  def remove(name, id)
@@ -75,8 +75,8 @@ module Nanoc
75
75
  @_instance ||= new.tap(&:start)
76
76
  end
77
77
 
78
- def on(name, id = nil, &block)
79
- instance.on(name, id, &block)
78
+ def on(name, id = nil, &)
79
+ instance.on(name, id, &)
80
80
  end
81
81
 
82
82
  def post(name, *args)
@@ -8,7 +8,7 @@ module Nanoc
8
8
 
9
9
  contract C::KeywordArgs[config: Nanoc::Core::Configuration] => C::Any
10
10
  def initialize(config:)
11
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'outdatedness'), 2)
11
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'outdatedness'), 2)
12
12
 
13
13
  @outdated_refs = Set.new
14
14
  end
@@ -26,7 +26,7 @@ module Nanoc
26
26
  end
27
27
 
28
28
  def raw_path(snapshot: :last)
29
- @item_rep.raw_path(snapshot: snapshot)
29
+ @item_rep.raw_path(snapshot:)
30
30
  end
31
31
  end
32
32
  end
@@ -3,7 +3,7 @@
3
3
  module Nanoc
4
4
  module Core
5
5
  class SiteLoader
6
- ENCODING_REGEX = /\A#\s+(-\*-\s+)?(en)?coding: (?<encoding>[^\s]+)(\s+-\*-\s*)?\n{0,2}/.freeze
6
+ ENCODING_REGEX = /\A#\s+(-\*-\s+)?(en)?coding: (?<encoding>[^\s]+)(\s+-\*-\s*)?\n{0,2}/
7
7
  # @return [Boolean]
8
8
  def self.cwd_is_nanoc_site?
9
9
  Nanoc::Core::ConfigLoader.cwd_is_nanoc_site?
@@ -33,13 +33,13 @@ module Nanoc
33
33
  data_source = gen_data_source_for_config(config)
34
34
 
35
35
  Nanoc::Core::Site.new(
36
- config: config,
37
- code_snippets: code_snippets,
38
- data_source: data_source,
36
+ config:,
37
+ code_snippets:,
38
+ data_source:,
39
39
  )
40
40
  end
41
41
 
42
- def with_data_sources(config, &_block)
42
+ def with_data_sources(config, &)
43
43
  data_sources = create_data_sources(config)
44
44
 
45
45
  begin
@@ -11,7 +11,7 @@ module Nanoc
11
11
 
12
12
  contract C::KeywordArgs[config: Nanoc::Core::Configuration] => C::Any
13
13
  def initialize(config:)
14
- super(Nanoc::Core::Store.tmp_path_for(config: config, store_name: 'compiled_content'), 4)
14
+ super(Nanoc::Core::Store.tmp_path_for(config:, store_name: 'compiled_content'), 4)
15
15
 
16
16
  @cache = {}
17
17
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Nanoc
4
4
  module Core
5
- VERSION = '4.12.20'
5
+ VERSION = '4.13.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoc-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.12.20
4
+ version: 4.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Defreyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-15 00:00:00.000000000 Z
11
+ date: 2024-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -322,7 +322,7 @@ licenses:
322
322
  - MIT
323
323
  metadata:
324
324
  rubygems_mfa_required: 'true'
325
- source_code_uri: https://github.com/nanoc/nanoc/tree/nanoc-core-v4.12.20/nanoc-core
325
+ source_code_uri: https://github.com/nanoc/nanoc/tree/nanoc-core-v4.13.0/nanoc-core
326
326
  post_install_message:
327
327
  rdoc_options: []
328
328
  require_paths:
@@ -331,14 +331,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
331
331
  requirements:
332
332
  - - ">="
333
333
  - !ruby/object:Gem::Version
334
- version: '2.7'
334
+ version: '3.1'
335
335
  required_rubygems_version: !ruby/object:Gem::Requirement
336
336
  requirements:
337
337
  - - ">="
338
338
  - !ruby/object:Gem::Version
339
339
  version: '0'
340
340
  requirements: []
341
- rubygems_version: 3.5.3
341
+ rubygems_version: 3.5.11
342
342
  signing_key:
343
343
  specification_version: 4
344
344
  summary: Core of Nanoc