nanoc 4.11.0 → 4.11.1

Sign up to get free protection for your applications and to get access to all the features.
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)