Sha256: 95af98e353b29ce900f8da90f0aab75b20c35c625831c1551de7212329596314

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

module Nanoc::Int
  # Calculates rule memories for objects that can be run through a rule (item
  # representations and layouts).
  #
  # @api private
  class RuleMemoryCalculator
    extend Nanoc::Int::Memoization

    # @option params [Nanoc::Int::RulesCollection] rules_collection The rules
    #   collection
    def initialize(params = {})
      @rules_collection = params.fetch(:rules_collection) do
        raise ArgumentError, 'Required :rules_collection option is missing'
      end
    end

    # @param [#reference] obj The object to calculate the rule memory for
    #
    # @return [Array] The caluclated rule memory for the given object
    def [](obj)
      result =
        case obj
        when Nanoc::Int::ItemRep
          @rules_collection.new_rule_memory_for_rep(obj)
        when Nanoc::Int::Layout
          @rules_collection.new_rule_memory_for_layout(obj)
        else
          raise "Do not know how to calculate the rule memory for #{obj.inspect}"
        end

      result
    end
    memoize :[]
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
nanoc-4.0.2 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.1 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.0 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.0rc3 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.0rc2 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.0rc1 lib/nanoc/base/compilation/rule_memory_calculator.rb
nanoc-4.0.0b4 lib/nanoc/base/compilation/rule_memory_calculator.rb