nanoc 4.11.0 → 4.11.1

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 (154) hide show
  1. checksums.yaml +4 -4
  2. data/NEWS.md +6 -0
  3. data/lib/nanoc.rb +4 -7
  4. data/lib/nanoc/base.rb +3 -3
  5. data/lib/nanoc/base/assertions.rb +1 -1
  6. data/lib/nanoc/base/entities.rb +2 -20
  7. data/lib/nanoc/base/entities/action_sequence.rb +60 -64
  8. data/lib/nanoc/base/entities/checksum_collection.rb +23 -21
  9. data/lib/nanoc/base/entities/dependency.rb +24 -22
  10. data/lib/nanoc/base/entities/outdatedness_reasons.rb +74 -72
  11. data/lib/nanoc/base/entities/outdatedness_status.rb +19 -17
  12. data/lib/nanoc/base/entities/props.rb +119 -117
  13. data/lib/nanoc/base/entities/site.rb +46 -50
  14. data/lib/nanoc/base/errors.rb +183 -198
  15. data/lib/nanoc/base/repos.rb +4 -2
  16. data/lib/nanoc/base/repos/action_sequence_store.rb +44 -42
  17. data/lib/nanoc/base/repos/aggregate_data_source.rb +24 -22
  18. data/lib/nanoc/base/repos/checksum_store.rb +51 -49
  19. data/lib/nanoc/base/repos/compiled_content_cache.rb +47 -45
  20. data/lib/nanoc/base/repos/compiled_content_store.rb +76 -0
  21. data/lib/nanoc/base/repos/config_loader.rb +74 -72
  22. data/lib/nanoc/base/repos/dependency_store.rb +174 -172
  23. data/lib/nanoc/base/repos/in_mem_data_source.rb +17 -15
  24. data/lib/nanoc/base/repos/item_rep_repo.rb +26 -24
  25. data/lib/nanoc/base/repos/outdatedness_store.rb +50 -48
  26. data/lib/nanoc/base/repos/prefixed_data_source.rb +21 -19
  27. data/lib/nanoc/base/repos/site_loader.rb +75 -73
  28. data/lib/nanoc/base/repos/store.rb +93 -91
  29. data/lib/nanoc/base/services.rb +7 -3
  30. data/lib/nanoc/base/services/action_provider.rb +23 -21
  31. data/lib/nanoc/base/services/action_sequence_builder.rb +42 -34
  32. data/lib/nanoc/base/services/compilation_context.rb +49 -47
  33. data/lib/nanoc/base/services/compiler.rb +177 -170
  34. data/lib/nanoc/base/services/compiler/phases.rb +8 -1
  35. data/lib/nanoc/base/services/compiler/phases/abstract.rb +44 -38
  36. data/lib/nanoc/base/services/compiler/phases/cache.rb +34 -28
  37. data/lib/nanoc/base/services/compiler/phases/mark_done.rb +17 -11
  38. data/lib/nanoc/base/services/compiler/phases/notify.rb +21 -0
  39. data/lib/nanoc/base/services/compiler/phases/recalculate.rb +37 -31
  40. data/lib/nanoc/base/services/compiler/phases/resume.rb +47 -48
  41. data/lib/nanoc/base/services/compiler/phases/write.rb +65 -59
  42. data/lib/nanoc/base/services/compiler/stage.rb +27 -8
  43. data/lib/nanoc/base/services/compiler/stages.rb +7 -1
  44. data/lib/nanoc/base/services/compiler/stages/build_reps.rb +25 -19
  45. data/lib/nanoc/base/services/compiler/stages/calculate_checksums.rb +34 -28
  46. data/lib/nanoc/base/services/compiler/stages/cleanup.rb +33 -27
  47. data/lib/nanoc/base/services/compiler/stages/compile_reps.rb +79 -69
  48. data/lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb +46 -40
  49. data/lib/nanoc/base/services/compiler/stages/forget_outdated_dependencies.rb +15 -9
  50. data/lib/nanoc/base/services/compiler/stages/load_stores.rb +28 -22
  51. data/lib/nanoc/base/services/compiler/stages/postprocess.rb +16 -10
  52. data/lib/nanoc/base/services/compiler/stages/preprocess.rb +25 -19
  53. data/lib/nanoc/base/services/compiler/stages/prune.rb +23 -17
  54. data/lib/nanoc/base/services/compiler/stages/store_post_compilation_state.rb +15 -9
  55. data/lib/nanoc/base/services/compiler/stages/store_pre_compilation_state.rb +26 -20
  56. data/lib/nanoc/base/services/compiler_loader.rb +26 -24
  57. data/lib/nanoc/base/services/dependency_tracker.rb +47 -45
  58. data/lib/nanoc/base/services/executor.rb +16 -15
  59. data/lib/nanoc/base/services/filter.rb +37 -5
  60. data/lib/nanoc/base/services/instrumentor.rb +12 -10
  61. data/lib/nanoc/base/services/item_rep_builder.rb +21 -19
  62. data/lib/nanoc/base/services/item_rep_router.rb +72 -70
  63. data/lib/nanoc/base/services/item_rep_selector.rb +48 -46
  64. data/lib/nanoc/base/services/item_rep_writer.rb +58 -53
  65. data/lib/nanoc/base/services/outdatedness_checker.rb +181 -179
  66. data/lib/nanoc/base/services/outdatedness_rule.rb +23 -21
  67. data/lib/nanoc/base/services/outdatedness_rules.rb +5 -3
  68. data/lib/nanoc/base/services/outdatedness_rules/attributes_modified.rb +28 -24
  69. data/lib/nanoc/base/services/outdatedness_rules/code_snippets_modified.rb +20 -16
  70. data/lib/nanoc/base/services/outdatedness_rules/content_modified.rb +13 -9
  71. data/lib/nanoc/base/services/outdatedness_rules/item_collection_extended.rb +12 -8
  72. data/lib/nanoc/base/services/outdatedness_rules/layout_collection_extended.rb +12 -8
  73. data/lib/nanoc/base/services/outdatedness_rules/not_written.rb +10 -6
  74. data/lib/nanoc/base/services/outdatedness_rules/rules_modified.rb +39 -35
  75. data/lib/nanoc/base/services/outdatedness_rules/uses_always_outdated_filter.rb +19 -15
  76. data/lib/nanoc/base/services/pruner.rb +2 -2
  77. data/lib/nanoc/base/views.rb +7 -0
  78. data/lib/nanoc/base/views/basic_item_view.rb +1 -1
  79. data/lib/nanoc/base/views/compilation_item_rep_view.rb +2 -2
  80. data/lib/nanoc/base/views/identifiable_collection_view.rb +2 -2
  81. data/lib/nanoc/base/views/mixins/document_view_mixin.rb +1 -1
  82. data/lib/nanoc/base/views/mixins/mutable_document_view_mixin.rb +5 -5
  83. data/lib/nanoc/base/views/mutable_item_collection_view.rb +3 -3
  84. data/lib/nanoc/base/views/mutable_layout_collection_view.rb +2 -2
  85. data/lib/nanoc/base/views/view_context_for_compilation.rb +6 -6
  86. data/lib/nanoc/base/views/view_context_for_pre_compilation.rb +2 -2
  87. data/lib/nanoc/base/views/view_context_for_shell.rb +2 -2
  88. data/lib/nanoc/checking/check.rb +1 -1
  89. data/lib/nanoc/cli/commands/compile_listeners/abstract.rb +24 -7
  90. data/lib/nanoc/cli/commands/compile_listeners/debug_printer.rb +79 -15
  91. data/lib/nanoc/cli/commands/compile_listeners/diff_generator.rb +4 -7
  92. data/lib/nanoc/cli/commands/compile_listeners/file_action_printer.rb +15 -24
  93. data/lib/nanoc/cli/commands/compile_listeners/timing_recorder.rb +22 -18
  94. data/lib/nanoc/cli/commands/create-site.rb +2 -7
  95. data/lib/nanoc/cli/commands/shell.rb +1 -1
  96. data/lib/nanoc/cli/commands/show-data.rb +9 -9
  97. data/lib/nanoc/cli/logger.rb +1 -1
  98. data/lib/nanoc/data_sources/filesystem.rb +8 -8
  99. data/lib/nanoc/filters/erb.rb +1 -1
  100. data/lib/nanoc/filters/erubi.rb +1 -1
  101. data/lib/nanoc/filters/erubis.rb +1 -1
  102. data/lib/nanoc/filters/haml.rb +1 -1
  103. data/lib/nanoc/filters/sass.rb +1 -1
  104. data/lib/nanoc/filters/slim.rb +1 -1
  105. data/lib/nanoc/helpers/breadcrumbs.rb +2 -2
  106. data/lib/nanoc/helpers/capturing.rb +9 -8
  107. data/lib/nanoc/helpers/filtering.rb +2 -2
  108. data/lib/nanoc/helpers/rendering.rb +1 -1
  109. data/lib/nanoc/rule_dsl.rb +10 -0
  110. data/lib/nanoc/rule_dsl/action_provider.rb +3 -3
  111. data/lib/nanoc/rule_dsl/action_recorder.rb +3 -3
  112. data/lib/nanoc/rule_dsl/action_sequence_calculator.rb +7 -7
  113. data/lib/nanoc/rule_dsl/compilation_rule.rb +2 -2
  114. data/lib/nanoc/rule_dsl/compilation_rule_context.rb +9 -9
  115. data/lib/nanoc/rule_dsl/compiler_dsl.rb +4 -4
  116. data/lib/nanoc/rule_dsl/routing_rule.rb +3 -3
  117. data/lib/nanoc/rule_dsl/rule.rb +5 -5
  118. data/lib/nanoc/rule_dsl/rule_context.rb +3 -3
  119. data/lib/nanoc/rule_dsl/rules_collection.rb +4 -4
  120. data/lib/nanoc/spec.rb +15 -15
  121. data/lib/nanoc/version.rb +1 -1
  122. metadata +10 -111
  123. data/lib/nanoc/base/contracts_support.rb +0 -130
  124. data/lib/nanoc/base/core_ext.rb +0 -5
  125. data/lib/nanoc/base/core_ext/array.rb +0 -50
  126. data/lib/nanoc/base/core_ext/hash.rb +0 -54
  127. data/lib/nanoc/base/core_ext/string.rb +0 -16
  128. data/lib/nanoc/base/entities/code_snippet.rb +0 -53
  129. data/lib/nanoc/base/entities/configuration-schema.json +0 -122
  130. data/lib/nanoc/base/entities/configuration.rb +0 -206
  131. data/lib/nanoc/base/entities/content.rb +0 -112
  132. data/lib/nanoc/base/entities/context.rb +0 -70
  133. data/lib/nanoc/base/entities/directed_graph.rb +0 -195
  134. data/lib/nanoc/base/entities/document.rb +0 -125
  135. data/lib/nanoc/base/entities/identifiable_collection.rb +0 -141
  136. data/lib/nanoc/base/entities/identifier.rb +0 -222
  137. data/lib/nanoc/base/entities/item.rb +0 -10
  138. data/lib/nanoc/base/entities/item_collection.rb +0 -14
  139. data/lib/nanoc/base/entities/item_rep.rb +0 -91
  140. data/lib/nanoc/base/entities/layout.rb +0 -10
  141. data/lib/nanoc/base/entities/layout_collection.rb +0 -14
  142. data/lib/nanoc/base/entities/lazy_value.rb +0 -43
  143. data/lib/nanoc/base/entities/pattern.rb +0 -85
  144. data/lib/nanoc/base/entities/processing_action.rb +0 -21
  145. data/lib/nanoc/base/entities/processing_actions.rb +0 -5
  146. data/lib/nanoc/base/entities/processing_actions/filter.rb +0 -36
  147. data/lib/nanoc/base/entities/processing_actions/layout.rb +0 -36
  148. data/lib/nanoc/base/entities/processing_actions/snapshot.rb +0 -46
  149. data/lib/nanoc/base/entities/snapshot_def.rb +0 -22
  150. data/lib/nanoc/base/repos/data_source.rb +0 -168
  151. data/lib/nanoc/base/repos/snapshot_repo.rb +0 -67
  152. data/lib/nanoc/base/services/checksummer.rb +0 -274
  153. data/lib/nanoc/base/services/notification_center.rb +0 -87
  154. data/lib/nanoc/base/services/temp_filename_factory.rb +0 -52
@@ -12,7 +12,7 @@ module Nanoc::CLI::Commands::CompileListeners
12
12
  Nanoc::CLI.verbosity >= 1
13
13
  end
14
14
 
15
- # @param [Enumerable<Nanoc::Int::ItemRep>] reps
15
+ # @param [Enumerable<Nanoc::Core::ItemRep>] reps
16
16
  def initialize(reps:)
17
17
  @reps = reps
18
18
 
@@ -52,7 +52,7 @@ module Nanoc::CLI::Commands::CompileListeners
52
52
  @load_stores_summary.observe(duration, name: klass.to_s)
53
53
  end
54
54
 
55
- on(:compilation_suspended) do |rep, _exception|
55
+ on(:compilation_suspended) do |rep, _target_rep, _snapshot_name|
56
56
  filter_stopwatches.fetch(rep).each(&:stop)
57
57
  end
58
58
 
@@ -60,46 +60,50 @@ module Nanoc::CLI::Commands::CompileListeners
60
60
  filter_stopwatches.fetch(rep, []).each(&:start)
61
61
  end
62
62
 
63
- phase_stopwatches = {}
63
+ setup_phase_notifications
64
+ end
65
+
66
+ # @see Listener#stop
67
+ def stop
68
+ print_profiling_feedback
69
+ end
70
+
71
+ protected
72
+
73
+ def setup_phase_notifications
74
+ stopwatches = {}
64
75
 
65
76
  on(:phase_started) do |phase_name, rep|
66
- stopwatches = phase_stopwatches.fetch(rep) { phase_stopwatches[rep] = {} }
67
- stopwatches[phase_name] = DDMetrics::Stopwatch.new.tap(&:start)
77
+ stopwatch = stopwatches[[phase_name, rep]] = DDMetrics::Stopwatch.new
78
+ stopwatch.start
68
79
  end
69
80
 
70
81
  on(:phase_ended) do |phase_name, rep|
71
- stopwatch = phase_stopwatches.fetch(rep).fetch(phase_name)
82
+ stopwatch = stopwatches[[phase_name, rep]]
72
83
  stopwatch.stop
73
84
 
74
85
  @phases_summary.observe(stopwatch.duration, name: phase_name)
75
86
  end
76
87
 
77
88
  on(:phase_yielded) do |phase_name, rep|
78
- stopwatch = phase_stopwatches.fetch(rep).fetch(phase_name)
89
+ stopwatch = stopwatches[[phase_name, rep]]
79
90
  stopwatch.stop
80
91
  end
81
92
 
82
93
  on(:phase_resumed) do |phase_name, rep|
83
- stopwatch = phase_stopwatches.fetch(rep).fetch(phase_name)
84
- stopwatch.start if stopwatch.stopped?
94
+ # It probably looks weird that a phase can be resumed even though it was not suspended earlier. This can happen when compilation is suspended, where you’d get the sequence started -> suspended -> started -> resumed.
95
+ stopwatch = stopwatches[[phase_name, rep]]
96
+ stopwatch.start unless stopwatch.running?
85
97
  end
86
98
 
87
99
  on(:phase_aborted) do |phase_name, rep|
88
- stopwatch = phase_stopwatches.fetch(rep).fetch(phase_name)
100
+ stopwatch = stopwatches[[phase_name, rep]]
89
101
  stopwatch.stop if stopwatch.running?
90
102
 
91
103
  @phases_summary.observe(stopwatch.duration, name: phase_name)
92
104
  end
93
105
  end
94
106
 
95
- # @see Listener#stop
96
- def stop
97
- print_profiling_feedback
98
- super
99
- end
100
-
101
- protected
102
-
103
107
  def table_for_summary(name, summary)
104
108
  headers = [name.to_s, 'count', 'min', '.50', '.90', '.95', 'max', 'tot']
105
109
 
@@ -22,7 +22,7 @@ module Nanoc::CLI::Commands
22
22
  # A list of file extensions that Nanoc will consider to be textual rather than
23
23
  # binary. If an item with an extension not in this list is found, the file
24
24
  # will be considered as binary.
25
- text_extensions: #{array_to_yaml(Nanoc::Int::Configuration::DEFAULT_CONFIG[:text_extensions])}
25
+ text_extensions: #{array_to_yaml(Nanoc::Core::Configuration::DEFAULT_CONFIG[:text_extensions])}
26
26
 
27
27
  prune:
28
28
  auto_prune: true
@@ -227,11 +227,6 @@ module Nanoc::CLI::Commands
227
227
  )
228
228
  end
229
229
 
230
- # Setup notifications
231
- Nanoc::Int::NotificationCenter.on(:file_created) do |file_path|
232
- Nanoc::CLI::Logger.instance.file(:high, :create, file_path)
233
- end
234
-
235
230
  # Build entire site
236
231
  FileUtils.mkdir_p(path)
237
232
  FileUtils.cd(File.join(path)) do
@@ -254,7 +249,7 @@ module Nanoc::CLI::Commands
254
249
 
255
250
  def write(filename, content)
256
251
  File.write(filename, content)
257
- Nanoc::Int::NotificationCenter.post(:file_created, filename)
252
+ Nanoc::CLI::Logger.instance.file(:high, :create, filename)
258
253
  end
259
254
  end
260
255
  end
@@ -20,7 +20,7 @@ module Nanoc::CLI::Commands
20
20
  @site = load_site
21
21
  Nanoc::Int::Compiler.new_for(@site).run_until_preprocessed if options[:preprocess]
22
22
 
23
- Nanoc::Int::Context.new(env).pry
23
+ Nanoc::Core::Context.new(env).pry
24
24
  end
25
25
 
26
26
  def env
@@ -70,7 +70,7 @@ module Nanoc::CLI::Commands
70
70
  sorter =
71
71
  lambda do |dep|
72
72
  case dep
73
- when Nanoc::Int::Document
73
+ when Nanoc::Core::Document
74
74
  dep.from.identifier.to_s
75
75
  else
76
76
  ''
@@ -89,15 +89,15 @@ module Nanoc::CLI::Commands
89
89
 
90
90
  type =
91
91
  case pred
92
- when Nanoc::Int::Layout
92
+ when Nanoc::Core::Layout
93
93
  'layout'
94
- when Nanoc::Int::Item
94
+ when Nanoc::Core::Item
95
95
  'item'
96
- when Nanoc::Int::Configuration
96
+ when Nanoc::Core::Configuration
97
97
  'config'
98
- when Nanoc::Int::ItemCollection
98
+ when Nanoc::Core::ItemCollection
99
99
  'items'
100
- when Nanoc::Int::LayoutCollection
100
+ when Nanoc::Core::LayoutCollection
101
101
  'layouts'
102
102
  else
103
103
  raise Nanoc::Int::Errors::InternalInconsistency, "unexpected pred type #{pred}"
@@ -105,11 +105,11 @@ module Nanoc::CLI::Commands
105
105
 
106
106
  pred_identifier =
107
107
  case pred
108
- when Nanoc::Int::Document
108
+ when Nanoc::Core::Document
109
109
  pred.identifier.to_s
110
- when Nanoc::Int::Configuration
110
+ when Nanoc::Core::Configuration
111
111
  nil
112
- when Nanoc::Int::IdentifiableCollection
112
+ when Nanoc::Core::IdentifiableCollection
113
113
  case dep.props.raw_content
114
114
  when true
115
115
  'matching any'
@@ -14,7 +14,7 @@ module Nanoc::CLI
14
14
  identical: '', # (nothing)
15
15
  cached: '', # (nothing)
16
16
  skip: '', # (nothing)
17
- delete: "\e[31m" # red
17
+ delete: "\e[31m", # red
18
18
  }.freeze
19
19
 
20
20
  include Singleton
@@ -66,12 +66,12 @@ module Nanoc::DataSources
66
66
 
67
67
  # See {Nanoc::DataSource#items}.
68
68
  def items
69
- load_objects(content_dir_name, Nanoc::Int::Item)
69
+ load_objects(content_dir_name, Nanoc::Core::Item)
70
70
  end
71
71
 
72
72
  # See {Nanoc::DataSource#layouts}.
73
73
  def layouts
74
- load_objects(layouts_dir_name, Nanoc::Int::Layout)
74
+ load_objects(layouts_dir_name, Nanoc::Core::Layout)
75
75
  end
76
76
 
77
77
  def item_changes
@@ -141,11 +141,11 @@ module Nanoc::DataSources
141
141
  def read_proto_document(content_filename, meta_filename, klass)
142
142
  is_binary = content_filename && !@site_config[:text_extensions].include?(File.extname(content_filename)[1..-1])
143
143
 
144
- if is_binary && klass == Nanoc::Int::Item
144
+ if is_binary && klass == Nanoc::Core::Item
145
145
  meta = (meta_filename && YAML.load_file(meta_filename)) || {}
146
146
 
147
147
  ProtoDocument.new(is_binary: true, filename: content_filename, attributes: meta)
148
- elsif is_binary && klass == Nanoc::Int::Layout
148
+ elsif is_binary && klass == Nanoc::Core::Layout
149
149
  raise Errors::BinaryLayout.new(content_filename)
150
150
  else
151
151
  parse_result = parse(content_filename, meta_filename)
@@ -261,9 +261,9 @@ module Nanoc::DataSources
261
261
  full_content_filename = content_filename && File.expand_path(content_filename)
262
262
 
263
263
  if proto_doc.binary?
264
- Nanoc::Int::BinaryContent.new(full_content_filename)
264
+ Nanoc::Core::BinaryContent.new(full_content_filename)
265
265
  else
266
- Nanoc::Int::TextualContent.new(proto_doc.content, filename: full_content_filename)
266
+ Nanoc::Core::TextualContent.new(proto_doc.content, filename: full_content_filename)
267
267
  end
268
268
  end
269
269
 
@@ -351,7 +351,7 @@ module Nanoc::DataSources
351
351
  # can be the content filename or the meta filename.
352
352
  def identifier_for_filename(filename)
353
353
  if config[:identifier_type] == 'full'
354
- return Nanoc::Identifier.new(filename)
354
+ return Nanoc::Core::Identifier.new(filename)
355
355
  end
356
356
 
357
357
  regex =
@@ -360,7 +360,7 @@ module Nanoc::DataSources
360
360
  else
361
361
  allow_periods_in_identifiers? ? /\.[^\/\.]+$/ : /\.[^\/]+$/
362
362
  end
363
- Nanoc::Identifier.new(filename.sub(regex, ''), type: :legacy)
363
+ Nanoc::Core::Identifier.new(filename.sub(regex, ''), type: :legacy)
364
364
  end
365
365
 
366
366
  # Returns the base name of filename, i.e. filename with the first or all
@@ -22,7 +22,7 @@ module Nanoc::Filters
22
22
  assigns.merge!(params[:locals] || {})
23
23
 
24
24
  # Create context
25
- context = ::Nanoc::Int::Context.new(assigns)
25
+ context = ::Nanoc::Core::Context.new(assigns)
26
26
 
27
27
  # Get binding
28
28
  proc = assigns[:content] ? -> { assigns[:content] } : nil
@@ -16,7 +16,7 @@ module Nanoc::Filters
16
16
  # @return [String] The filtered content
17
17
  def run(content, params = {})
18
18
  # Create context
19
- context = ::Nanoc::Int::Context.new(assigns)
19
+ context = ::Nanoc::Core::Context.new(assigns)
20
20
 
21
21
  # Get binding
22
22
  proc = assigns[:content] ? -> { assigns[:content] } : nil
@@ -15,7 +15,7 @@ module Nanoc::Filters
15
15
  # @return [String] The filtered content
16
16
  def run(content, _params = {})
17
17
  # Create context
18
- context = ::Nanoc::Int::Context.new(assigns)
18
+ context = ::Nanoc::Core::Context.new(assigns)
19
19
 
20
20
  # Get binding
21
21
  proc = assigns[:content] ? -> { assigns[:content] } : nil
@@ -18,7 +18,7 @@ module Nanoc::Filters
18
18
  options = params.merge(filename: filename)
19
19
 
20
20
  # Create context
21
- context = ::Nanoc::Int::Context.new(assigns)
21
+ context = ::Nanoc::Core::Context.new(assigns)
22
22
 
23
23
  # Get result
24
24
  proc = assigns[:content] ? -> { assigns[:content] } : nil
@@ -28,7 +28,7 @@ module Nanoc::Filters
28
28
  css_path = options.delete(:css_path) || filter.object_id.to_s
29
29
  sourcemap_path = options.delete(:sourcemap_path)
30
30
  if sourcemap_path == :inline
31
- sourcemap_path = Nanoc::Int::TempFilenameFactory.instance.create('sass_sourcemap')
31
+ sourcemap_path = Nanoc::Core::TempFilenameFactory.instance.create('sass_sourcemap')
32
32
  inline = true
33
33
  end
34
34
 
@@ -20,7 +20,7 @@ module Nanoc::Filters
20
20
  }.merge params
21
21
 
22
22
  # Create context
23
- context = ::Nanoc::Int::Context.new(assigns)
23
+ context = ::Nanoc::Core::Context.new(assigns)
24
24
 
25
25
  ::Slim::Template.new(filename, params) { content }.render(context) { assigns[:content] }
26
26
  end
@@ -49,7 +49,7 @@ module Nanoc::Helpers
49
49
  def self.patterns_for_prefix(prefix)
50
50
  prefixes =
51
51
  unfold(prefix) do |old_prefix|
52
- new_prefix = Nanoc::Identifier.new(old_prefix).without_ext
52
+ new_prefix = Nanoc::Core::Identifier.new(old_prefix).without_ext
53
53
  new_prefix == old_prefix ? nil : new_prefix
54
54
  end
55
55
 
@@ -110,7 +110,7 @@ module Nanoc::Helpers
110
110
  tiebreaker = Int::ERROR_TIEBREAKER if tiebreaker == :error
111
111
 
112
112
  if @item.identifier.legacy?
113
- prefixes.map { |pr| @items[Nanoc::Identifier.new('/' + pr, type: :legacy)] }
113
+ prefixes.map { |pr| @items[Nanoc::Core::Identifier.new('/' + pr, type: :legacy)] }
114
114
  else
115
115
  ancestral_prefixes = prefixes.reject { |pr| pr =~ /^\/index\./ }[0..-2]
116
116
  ancestral_items =
@@ -20,7 +20,7 @@ module Nanoc::Helpers
20
20
  content_string = capture(&block)
21
21
 
22
22
  # Get existing contents and prep for store
23
- snapshot_repo = @item._context.snapshot_repo
23
+ compiled_content_store = @item._context.compiled_content_store
24
24
  rep = @item.reps[:default]._unwrap
25
25
  capture_name = "__capture_#{@name}".to_sym
26
26
  old_content_string =
@@ -28,10 +28,10 @@ module Nanoc::Helpers
28
28
  when :overwrite
29
29
  ''
30
30
  when :append
31
- c = snapshot_repo.get(rep, capture_name)
31
+ c = compiled_content_store.get(rep, capture_name)
32
32
  c ? c.string : ''
33
33
  when :error
34
- contents = snapshot_repo.get(rep, capture_name)
34
+ contents = compiled_content_store.get(rep, capture_name)
35
35
  if contents && contents.string != content_string
36
36
  # FIXME: get proper exception
37
37
  raise "a capture named #{@name.inspect} for #{@item.identifier} already exists"
@@ -44,8 +44,8 @@ module Nanoc::Helpers
44
44
  end
45
45
 
46
46
  # Store
47
- new_content = Nanoc::Int::TextualContent.new(old_content_string + content_string)
48
- snapshot_repo.set(rep, capture_name, new_content)
47
+ new_content = Nanoc::Core::TextualContent.new(old_content_string + content_string)
48
+ compiled_content_store.set(rep, capture_name, new_content)
49
49
  end
50
50
  end
51
51
 
@@ -67,13 +67,14 @@ module Nanoc::Helpers
67
67
  dependency_tracker.bounce(@requested_item._unwrap, compiled_content: true)
68
68
 
69
69
  unless rep.compiled?
70
- Fiber.yield(Nanoc::Int::Errors::UnmetDependency.new(rep))
70
+ # FIXME: is :last appropriate?
71
+ Fiber.yield(Nanoc::Int::Errors::UnmetDependency.new(rep, :last))
71
72
  return run
72
73
  end
73
74
  end
74
75
 
75
- snapshot_repo = @config._context.snapshot_repo
76
- content = snapshot_repo.get(rep, "__capture_#{@name}".to_sym)
76
+ compiled_content_store = @config._context.compiled_content_store
77
+ content = compiled_content_store.get(rep, "__capture_#{@name}".to_sym)
77
78
  content ? content.string : nil
78
79
  end
79
80
  end
@@ -30,9 +30,9 @@ module Nanoc::Helpers
30
30
  filter = klass.new(assigns)
31
31
 
32
32
  # Filter captured data
33
- Nanoc::Int::NotificationCenter.post(:filtering_started, @item_rep._unwrap, filter_name)
33
+ Nanoc::Core::NotificationCenter.post(:filtering_started, @item_rep._unwrap, filter_name)
34
34
  filtered_data = filter.setup_and_run(data, arguments)
35
- Nanoc::Int::NotificationCenter.post(:filtering_ended, @item_rep._unwrap, filter_name)
35
+ Nanoc::Core::NotificationCenter.post(:filtering_ended, @item_rep._unwrap, filter_name)
36
36
 
37
37
  # Append filtered data to buffer
38
38
  buffer = eval('_erbout', block.binding)
@@ -10,7 +10,7 @@ module Nanoc::Helpers
10
10
  #
11
11
  # @raise [Nanoc::Int::Errors::UnknownLayout]
12
12
  # @raise [Nanoc::Int::Errors::CannotDetermineFilter]
13
- # @raise [Nanoc::Int::Errors::UnknownFilter]
13
+ # @raise [Nanoc::Filter::UnknownFilter]
14
14
  #
15
15
  # @return [String, nil]
16
16
  def render(identifier, other_assigns = {}, &block)
@@ -20,3 +20,13 @@ require_relative 'rule_dsl/routing_rule_context'
20
20
  require_relative 'rule_dsl/rule'
21
21
  require_relative 'rule_dsl/compilation_rule'
22
22
  require_relative 'rule_dsl/routing_rule'
23
+
24
+ Nanoc::Core::Checksummer.define_behavior(
25
+ Nanoc::RuleDSL::CompilationRuleContext,
26
+ Nanoc::Core::Checksummer::RuleContextUpdateBehavior,
27
+ )
28
+
29
+ Nanoc::Core::Checksummer.define_behavior(
30
+ Nanoc::RuleDSL::RulesCollection,
31
+ Nanoc::Core::Checksummer::DataUpdateBehavior,
32
+ )
@@ -65,7 +65,7 @@ module Nanoc::RuleDSL
65
65
  items: site.items,
66
66
  dependency_tracker: dependency_tracker,
67
67
  compilation_context: compiler.compilation_context(reps: reps),
68
- snapshot_repo: nil,
68
+ compiled_content_store: nil,
69
69
  )
70
70
  ctx = new_postprocessor_context(site, view_context)
71
71
 
@@ -79,7 +79,7 @@ module Nanoc::RuleDSL
79
79
  view_context =
80
80
  Nanoc::ViewContextForPreCompilation.new(items: site.items)
81
81
 
82
- Nanoc::Int::Context.new(
82
+ Nanoc::Core::Context.new(
83
83
  config: Nanoc::MutableConfigView.new(site.config, view_context),
84
84
  items: Nanoc::MutableItemCollectionView.new(site.items, view_context),
85
85
  layouts: Nanoc::MutableLayoutCollectionView.new(site.layouts, view_context),
@@ -88,7 +88,7 @@ module Nanoc::RuleDSL
88
88
 
89
89
  # @api private
90
90
  def new_postprocessor_context(site, view_context)
91
- Nanoc::Int::Context.new(
91
+ Nanoc::Core::Context.new(
92
92
  config: Nanoc::ConfigView.new(site.config, view_context),
93
93
  items: Nanoc::PostCompileItemCollectionView.new(site.items, view_context),
94
94
  )
@@ -3,9 +3,9 @@
3
3
  module Nanoc
4
4
  module RuleDSL
5
5
  class ActionRecorder
6
- include Nanoc::Int::ContractsSupport
6
+ include Nanoc::Core::ContractsSupport
7
7
 
8
- contract Nanoc::Int::ItemRep => C::Any
8
+ contract Nanoc::Core::ItemRep => C::Any
9
9
  def initialize(rep)
10
10
  @action_sequence_builder = Nanoc::Int::ActionSequenceBuilder.new(rep)
11
11
 
@@ -37,7 +37,7 @@ module Nanoc
37
37
  @any_layouts = true
38
38
  end
39
39
 
40
- MaybePathlike = C::Or[nil, Nanoc::UNDEFINED, String, Nanoc::Identifier]
40
+ MaybePathlike = C::Or[nil, Nanoc::UNDEFINED, String, Nanoc::Core::Identifier]
41
41
  contract Symbol, C::KeywordArgs[path: C::Optional[MaybePathlike]] => nil
42
42
  def snapshot(snapshot_name, path: Nanoc::UNDEFINED)
43
43
  unless Nanoc::UNDEFINED.equal?(path)