Class: Nanoc::RuleDSL::ActionProvider

Inherits:
Int::ActionProvider show all
Defined in:
lib/nanoc/rule_dsl/action_provider.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rules_collection, rule_memory_calculator) ⇒ ActionProvider

Returns a new instance of ActionProvider



22
23
24
25
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 22

def initialize(rules_collection, rule_memory_calculator)
  @rules_collection = rules_collection
  @rule_memory_calculator = rule_memory_calculator
end

Class Method Details

.for(site) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 8

def self.for(site)
  rules_collection = Nanoc::RuleDSL::RulesCollection.new

  rule_memory_calculator =
    Nanoc::RuleDSL::RuleMemoryCalculator.new(
      rules_collection: rules_collection, site: site)

  action_provider = new(rules_collection, rule_memory_calculator)

  Nanoc::RuleDSL::RulesLoader.new(site.config, rules_collection).load

  action_provider
end

Instance Method Details

#memory_for(rep) ⇒ Object



34
35
36
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 34

def memory_for(rep)
  @rule_memory_calculator[rep]
end

#postprocess(site, reps) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 50

def postprocess(site, reps)
  view_context = Nanoc::ViewContext.new(reps: reps, items: site.items)
  ctx = new_postprocessor_context(site, view_context)

  @rules_collection.postprocessors.each_value do |postprocessor|
    ctx.instance_eval(&postprocessor)
  end
end

#preprocess(site) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 42

def preprocess(site)
  ctx = new_preprocessor_context(site)

  @rules_collection.preprocessors.each_value do |preprocessor|
    ctx.instance_eval(&preprocessor)
  end
end

#rep_names_for(item) ⇒ Object

Raises:

  • (Nanoc::Int::Errors::NoMatchingCompilationRuleFound)


27
28
29
30
31
32
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 27

def rep_names_for(item)
  matching_rules = @rules_collection.item_compilation_rules_for(item)
  raise Nanoc::Int::Errors::NoMatchingCompilationRuleFound.new(item) if matching_rules.empty?

  matching_rules.map(&:rep_name).uniq
end

#snapshots_defs_for(rep) ⇒ Object



38
39
40
# File 'lib/nanoc/rule_dsl/action_provider.rb', line 38

def snapshots_defs_for(rep)
  @rule_memory_calculator.snapshots_defs_for(rep)
end