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.
- checksums.yaml +4 -4
 - data/NEWS.md +6 -0
 - data/lib/nanoc.rb +4 -7
 - data/lib/nanoc/base.rb +3 -3
 - data/lib/nanoc/base/assertions.rb +1 -1
 - data/lib/nanoc/base/entities.rb +2 -20
 - data/lib/nanoc/base/entities/action_sequence.rb +60 -64
 - data/lib/nanoc/base/entities/checksum_collection.rb +23 -21
 - data/lib/nanoc/base/entities/dependency.rb +24 -22
 - data/lib/nanoc/base/entities/outdatedness_reasons.rb +74 -72
 - data/lib/nanoc/base/entities/outdatedness_status.rb +19 -17
 - data/lib/nanoc/base/entities/props.rb +119 -117
 - data/lib/nanoc/base/entities/site.rb +46 -50
 - data/lib/nanoc/base/errors.rb +183 -198
 - data/lib/nanoc/base/repos.rb +4 -2
 - data/lib/nanoc/base/repos/action_sequence_store.rb +44 -42
 - data/lib/nanoc/base/repos/aggregate_data_source.rb +24 -22
 - data/lib/nanoc/base/repos/checksum_store.rb +51 -49
 - data/lib/nanoc/base/repos/compiled_content_cache.rb +47 -45
 - data/lib/nanoc/base/repos/compiled_content_store.rb +76 -0
 - data/lib/nanoc/base/repos/config_loader.rb +74 -72
 - data/lib/nanoc/base/repos/dependency_store.rb +174 -172
 - data/lib/nanoc/base/repos/in_mem_data_source.rb +17 -15
 - data/lib/nanoc/base/repos/item_rep_repo.rb +26 -24
 - data/lib/nanoc/base/repos/outdatedness_store.rb +50 -48
 - data/lib/nanoc/base/repos/prefixed_data_source.rb +21 -19
 - data/lib/nanoc/base/repos/site_loader.rb +75 -73
 - data/lib/nanoc/base/repos/store.rb +93 -91
 - data/lib/nanoc/base/services.rb +7 -3
 - data/lib/nanoc/base/services/action_provider.rb +23 -21
 - data/lib/nanoc/base/services/action_sequence_builder.rb +42 -34
 - data/lib/nanoc/base/services/compilation_context.rb +49 -47
 - data/lib/nanoc/base/services/compiler.rb +177 -170
 - data/lib/nanoc/base/services/compiler/phases.rb +8 -1
 - data/lib/nanoc/base/services/compiler/phases/abstract.rb +44 -38
 - data/lib/nanoc/base/services/compiler/phases/cache.rb +34 -28
 - data/lib/nanoc/base/services/compiler/phases/mark_done.rb +17 -11
 - data/lib/nanoc/base/services/compiler/phases/notify.rb +21 -0
 - data/lib/nanoc/base/services/compiler/phases/recalculate.rb +37 -31
 - data/lib/nanoc/base/services/compiler/phases/resume.rb +47 -48
 - data/lib/nanoc/base/services/compiler/phases/write.rb +65 -59
 - data/lib/nanoc/base/services/compiler/stage.rb +27 -8
 - data/lib/nanoc/base/services/compiler/stages.rb +7 -1
 - data/lib/nanoc/base/services/compiler/stages/build_reps.rb +25 -19
 - data/lib/nanoc/base/services/compiler/stages/calculate_checksums.rb +34 -28
 - data/lib/nanoc/base/services/compiler/stages/cleanup.rb +33 -27
 - data/lib/nanoc/base/services/compiler/stages/compile_reps.rb +79 -69
 - data/lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb +46 -40
 - data/lib/nanoc/base/services/compiler/stages/forget_outdated_dependencies.rb +15 -9
 - data/lib/nanoc/base/services/compiler/stages/load_stores.rb +28 -22
 - data/lib/nanoc/base/services/compiler/stages/postprocess.rb +16 -10
 - data/lib/nanoc/base/services/compiler/stages/preprocess.rb +25 -19
 - data/lib/nanoc/base/services/compiler/stages/prune.rb +23 -17
 - data/lib/nanoc/base/services/compiler/stages/store_post_compilation_state.rb +15 -9
 - data/lib/nanoc/base/services/compiler/stages/store_pre_compilation_state.rb +26 -20
 - data/lib/nanoc/base/services/compiler_loader.rb +26 -24
 - data/lib/nanoc/base/services/dependency_tracker.rb +47 -45
 - data/lib/nanoc/base/services/executor.rb +16 -15
 - data/lib/nanoc/base/services/filter.rb +37 -5
 - data/lib/nanoc/base/services/instrumentor.rb +12 -10
 - data/lib/nanoc/base/services/item_rep_builder.rb +21 -19
 - data/lib/nanoc/base/services/item_rep_router.rb +72 -70
 - data/lib/nanoc/base/services/item_rep_selector.rb +48 -46
 - data/lib/nanoc/base/services/item_rep_writer.rb +58 -53
 - data/lib/nanoc/base/services/outdatedness_checker.rb +181 -179
 - data/lib/nanoc/base/services/outdatedness_rule.rb +23 -21
 - data/lib/nanoc/base/services/outdatedness_rules.rb +5 -3
 - data/lib/nanoc/base/services/outdatedness_rules/attributes_modified.rb +28 -24
 - data/lib/nanoc/base/services/outdatedness_rules/code_snippets_modified.rb +20 -16
 - data/lib/nanoc/base/services/outdatedness_rules/content_modified.rb +13 -9
 - data/lib/nanoc/base/services/outdatedness_rules/item_collection_extended.rb +12 -8
 - data/lib/nanoc/base/services/outdatedness_rules/layout_collection_extended.rb +12 -8
 - data/lib/nanoc/base/services/outdatedness_rules/not_written.rb +10 -6
 - data/lib/nanoc/base/services/outdatedness_rules/rules_modified.rb +39 -35
 - data/lib/nanoc/base/services/outdatedness_rules/uses_always_outdated_filter.rb +19 -15
 - data/lib/nanoc/base/services/pruner.rb +2 -2
 - data/lib/nanoc/base/views.rb +7 -0
 - data/lib/nanoc/base/views/basic_item_view.rb +1 -1
 - data/lib/nanoc/base/views/compilation_item_rep_view.rb +2 -2
 - data/lib/nanoc/base/views/identifiable_collection_view.rb +2 -2
 - data/lib/nanoc/base/views/mixins/document_view_mixin.rb +1 -1
 - data/lib/nanoc/base/views/mixins/mutable_document_view_mixin.rb +5 -5
 - data/lib/nanoc/base/views/mutable_item_collection_view.rb +3 -3
 - data/lib/nanoc/base/views/mutable_layout_collection_view.rb +2 -2
 - data/lib/nanoc/base/views/view_context_for_compilation.rb +6 -6
 - data/lib/nanoc/base/views/view_context_for_pre_compilation.rb +2 -2
 - data/lib/nanoc/base/views/view_context_for_shell.rb +2 -2
 - data/lib/nanoc/checking/check.rb +1 -1
 - data/lib/nanoc/cli/commands/compile_listeners/abstract.rb +24 -7
 - data/lib/nanoc/cli/commands/compile_listeners/debug_printer.rb +79 -15
 - data/lib/nanoc/cli/commands/compile_listeners/diff_generator.rb +4 -7
 - data/lib/nanoc/cli/commands/compile_listeners/file_action_printer.rb +15 -24
 - data/lib/nanoc/cli/commands/compile_listeners/timing_recorder.rb +22 -18
 - data/lib/nanoc/cli/commands/create-site.rb +2 -7
 - data/lib/nanoc/cli/commands/shell.rb +1 -1
 - data/lib/nanoc/cli/commands/show-data.rb +9 -9
 - data/lib/nanoc/cli/logger.rb +1 -1
 - data/lib/nanoc/data_sources/filesystem.rb +8 -8
 - data/lib/nanoc/filters/erb.rb +1 -1
 - data/lib/nanoc/filters/erubi.rb +1 -1
 - data/lib/nanoc/filters/erubis.rb +1 -1
 - data/lib/nanoc/filters/haml.rb +1 -1
 - data/lib/nanoc/filters/sass.rb +1 -1
 - data/lib/nanoc/filters/slim.rb +1 -1
 - data/lib/nanoc/helpers/breadcrumbs.rb +2 -2
 - data/lib/nanoc/helpers/capturing.rb +9 -8
 - data/lib/nanoc/helpers/filtering.rb +2 -2
 - data/lib/nanoc/helpers/rendering.rb +1 -1
 - data/lib/nanoc/rule_dsl.rb +10 -0
 - data/lib/nanoc/rule_dsl/action_provider.rb +3 -3
 - data/lib/nanoc/rule_dsl/action_recorder.rb +3 -3
 - data/lib/nanoc/rule_dsl/action_sequence_calculator.rb +7 -7
 - data/lib/nanoc/rule_dsl/compilation_rule.rb +2 -2
 - data/lib/nanoc/rule_dsl/compilation_rule_context.rb +9 -9
 - data/lib/nanoc/rule_dsl/compiler_dsl.rb +4 -4
 - data/lib/nanoc/rule_dsl/routing_rule.rb +3 -3
 - data/lib/nanoc/rule_dsl/rule.rb +5 -5
 - data/lib/nanoc/rule_dsl/rule_context.rb +3 -3
 - data/lib/nanoc/rule_dsl/rules_collection.rb +4 -4
 - data/lib/nanoc/spec.rb +15 -15
 - data/lib/nanoc/version.rb +1 -1
 - metadata +10 -111
 - data/lib/nanoc/base/contracts_support.rb +0 -130
 - data/lib/nanoc/base/core_ext.rb +0 -5
 - data/lib/nanoc/base/core_ext/array.rb +0 -50
 - data/lib/nanoc/base/core_ext/hash.rb +0 -54
 - data/lib/nanoc/base/core_ext/string.rb +0 -16
 - data/lib/nanoc/base/entities/code_snippet.rb +0 -53
 - data/lib/nanoc/base/entities/configuration-schema.json +0 -122
 - data/lib/nanoc/base/entities/configuration.rb +0 -206
 - data/lib/nanoc/base/entities/content.rb +0 -112
 - data/lib/nanoc/base/entities/context.rb +0 -70
 - data/lib/nanoc/base/entities/directed_graph.rb +0 -195
 - data/lib/nanoc/base/entities/document.rb +0 -125
 - data/lib/nanoc/base/entities/identifiable_collection.rb +0 -141
 - data/lib/nanoc/base/entities/identifier.rb +0 -222
 - data/lib/nanoc/base/entities/item.rb +0 -10
 - data/lib/nanoc/base/entities/item_collection.rb +0 -14
 - data/lib/nanoc/base/entities/item_rep.rb +0 -91
 - data/lib/nanoc/base/entities/layout.rb +0 -10
 - data/lib/nanoc/base/entities/layout_collection.rb +0 -14
 - data/lib/nanoc/base/entities/lazy_value.rb +0 -43
 - data/lib/nanoc/base/entities/pattern.rb +0 -85
 - data/lib/nanoc/base/entities/processing_action.rb +0 -21
 - data/lib/nanoc/base/entities/processing_actions.rb +0 -5
 - data/lib/nanoc/base/entities/processing_actions/filter.rb +0 -36
 - data/lib/nanoc/base/entities/processing_actions/layout.rb +0 -36
 - data/lib/nanoc/base/entities/processing_actions/snapshot.rb +0 -46
 - data/lib/nanoc/base/entities/snapshot_def.rb +0 -22
 - data/lib/nanoc/base/repos/data_source.rb +0 -168
 - data/lib/nanoc/base/repos/snapshot_repo.rb +0 -67
 - data/lib/nanoc/base/services/checksummer.rb +0 -274
 - data/lib/nanoc/base/services/notification_center.rb +0 -87
 - 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:: 
     | 
| 
      
 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,  
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
      
 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 =  
     | 
| 
      
 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 =  
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
       84 
     | 
    
         
            -
                    stopwatch 
     | 
| 
      
 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 =  
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 252 
     | 
    
         
            +
                  Nanoc::CLI::Logger.instance.file(:high, :create, filename)
         
     | 
| 
       258 
253 
     | 
    
         
             
                end
         
     | 
| 
       259 
254 
     | 
    
         
             
              end
         
     | 
| 
       260 
255 
     | 
    
         
             
            end
         
     | 
| 
         @@ -70,7 +70,7 @@ module Nanoc::CLI::Commands 
     | 
|
| 
       70 
70 
     | 
    
         
             
                  sorter =
         
     | 
| 
       71 
71 
     | 
    
         
             
                    lambda do |dep|
         
     | 
| 
       72 
72 
     | 
    
         
             
                      case dep
         
     | 
| 
       73 
     | 
    
         
            -
                      when Nanoc:: 
     | 
| 
      
 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:: 
     | 
| 
      
 92 
     | 
    
         
            +
                        when Nanoc::Core::Layout
         
     | 
| 
       93 
93 
     | 
    
         
             
                          'layout'
         
     | 
| 
       94 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 94 
     | 
    
         
            +
                        when Nanoc::Core::Item
         
     | 
| 
       95 
95 
     | 
    
         
             
                          'item'
         
     | 
| 
       96 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 96 
     | 
    
         
            +
                        when Nanoc::Core::Configuration
         
     | 
| 
       97 
97 
     | 
    
         
             
                          'config'
         
     | 
| 
       98 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 98 
     | 
    
         
            +
                        when Nanoc::Core::ItemCollection
         
     | 
| 
       99 
99 
     | 
    
         
             
                          'items'
         
     | 
| 
       100 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 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:: 
     | 
| 
      
 108 
     | 
    
         
            +
                        when Nanoc::Core::Document
         
     | 
| 
       109 
109 
     | 
    
         
             
                          pred.identifier.to_s
         
     | 
| 
       110 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 110 
     | 
    
         
            +
                        when Nanoc::Core::Configuration
         
     | 
| 
       111 
111 
     | 
    
         
             
                          nil
         
     | 
| 
       112 
     | 
    
         
            -
                        when Nanoc:: 
     | 
| 
      
 112 
     | 
    
         
            +
                        when Nanoc::Core::IdentifiableCollection
         
     | 
| 
       113 
113 
     | 
    
         
             
                          case dep.props.raw_content
         
     | 
| 
       114 
114 
     | 
    
         
             
                          when true
         
     | 
| 
       115 
115 
     | 
    
         
             
                            'matching any'
         
     | 
    
        data/lib/nanoc/cli/logger.rb
    CHANGED
    
    
| 
         @@ -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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 264 
     | 
    
         
            +
                    Nanoc::Core::BinaryContent.new(full_content_filename)
         
     | 
| 
       265 
265 
     | 
    
         
             
                  else
         
     | 
| 
       266 
     | 
    
         
            -
                    Nanoc:: 
     | 
| 
      
 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
         
     | 
    
        data/lib/nanoc/filters/erb.rb
    CHANGED
    
    | 
         @@ -22,7 +22,7 @@ module Nanoc::Filters 
     | 
|
| 
       22 
22 
     | 
    
         
             
                  assigns.merge!(params[:locals] || {})
         
     | 
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
                  # Create context
         
     | 
| 
       25 
     | 
    
         
            -
                  context = ::Nanoc:: 
     | 
| 
      
 25 
     | 
    
         
            +
                  context = ::Nanoc::Core::Context.new(assigns)
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                  # Get binding
         
     | 
| 
       28 
28 
     | 
    
         
             
                  proc = assigns[:content] ? -> { assigns[:content] } : nil
         
     | 
    
        data/lib/nanoc/filters/erubi.rb
    CHANGED
    
    | 
         @@ -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:: 
     | 
| 
      
 19 
     | 
    
         
            +
                  context = ::Nanoc::Core::Context.new(assigns)
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
                  # Get binding
         
     | 
| 
       22 
22 
     | 
    
         
             
                  proc = assigns[:content] ? -> { assigns[:content] } : nil
         
     | 
    
        data/lib/nanoc/filters/erubis.rb
    CHANGED
    
    | 
         @@ -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:: 
     | 
| 
      
 18 
     | 
    
         
            +
                  context = ::Nanoc::Core::Context.new(assigns)
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                  # Get binding
         
     | 
| 
       21 
21 
     | 
    
         
             
                  proc = assigns[:content] ? -> { assigns[:content] } : nil
         
     | 
    
        data/lib/nanoc/filters/haml.rb
    CHANGED
    
    | 
         @@ -18,7 +18,7 @@ module Nanoc::Filters 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  options = params.merge(filename: filename)
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                  # Create context
         
     | 
| 
       21 
     | 
    
         
            -
                  context = ::Nanoc:: 
     | 
| 
      
 21 
     | 
    
         
            +
                  context = ::Nanoc::Core::Context.new(assigns)
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
23 
     | 
    
         
             
                  # Get result
         
     | 
| 
       24 
24 
     | 
    
         
             
                  proc = assigns[:content] ? -> { assigns[:content] } : nil
         
     | 
    
        data/lib/nanoc/filters/sass.rb
    CHANGED
    
    | 
         @@ -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:: 
     | 
| 
      
 31 
     | 
    
         
            +
                    sourcemap_path = Nanoc::Core::TempFilenameFactory.instance.create('sass_sourcemap')
         
     | 
| 
       32 
32 
     | 
    
         
             
                    inline = true
         
     | 
| 
       33 
33 
     | 
    
         
             
                  end
         
     | 
| 
       34 
34 
     | 
    
         | 
    
        data/lib/nanoc/filters/slim.rb
    CHANGED
    
    | 
         @@ -20,7 +20,7 @@ module Nanoc::Filters 
     | 
|
| 
       20 
20 
     | 
    
         
             
                  }.merge params
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
                  # Create context
         
     | 
| 
       23 
     | 
    
         
            -
                  context = ::Nanoc:: 
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
      
 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 =  
     | 
| 
      
 31 
     | 
    
         
            +
                        c = compiled_content_store.get(rep, capture_name)
         
     | 
| 
       32 
32 
     | 
    
         
             
                        c ? c.string : ''
         
     | 
| 
       33 
33 
     | 
    
         
             
                      when :error
         
     | 
| 
       34 
     | 
    
         
            -
                        contents =  
     | 
| 
      
 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:: 
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 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 
     | 
    
         
            -
                         
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
       76 
     | 
    
         
            -
                    content =  
     | 
| 
      
 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:: 
     | 
| 
      
 33 
     | 
    
         
            +
                  Nanoc::Core::NotificationCenter.post(:filtering_started, @item_rep._unwrap, filter_name)
         
     | 
| 
       34 
34 
     | 
    
         
             
                  filtered_data = filter.setup_and_run(data, arguments)
         
     | 
| 
       35 
     | 
    
         
            -
                  Nanoc:: 
     | 
| 
      
 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:: 
     | 
| 
      
 13 
     | 
    
         
            +
                # @raise [Nanoc::Filter::UnknownFilter]
         
     | 
| 
       14 
14 
     | 
    
         
             
                #
         
     | 
| 
       15 
15 
     | 
    
         
             
                # @return [String, nil]
         
     | 
| 
       16 
16 
     | 
    
         
             
                def render(identifier, other_assigns = {}, &block)
         
     | 
    
        data/lib/nanoc/rule_dsl.rb
    CHANGED
    
    | 
         @@ -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 
     | 
    
         
            -
                       
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 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:: 
     | 
| 
      
 6 
     | 
    
         
            +
                  include Nanoc::Core::ContractsSupport
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                  contract Nanoc:: 
     | 
| 
      
 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)
         
     |