Sha256: 5a7a6aef0f9701c8264b592ea37e7defda6bf5a0da397eb7df8ab3468b630c5c

Contents?: true

Size: 1.29 KB

Versions: 12

Compression:

Stored size: 1.29 KB

Contents

module Nanoc::Int
  class RuleMemory
    include Enumerable

    def initialize(item_rep)
      @item_rep = item_rep
      @actions = []
    end

    def size
      @actions.size
    end

    def [](idx)
      @actions[idx]
    end

    def add_filter(filter_name, params)
      @actions << Nanoc::Int::RuleMemoryActions::Filter.new(filter_name, params)
    end

    def add_layout(layout_identifier, params)
      @actions << Nanoc::Int::RuleMemoryActions::Layout.new(layout_identifier, params)
    end

    def add_snapshot(snapshot_name, final, path)
      will_add_snapshot(snapshot_name) if final
      @actions << Nanoc::Int::RuleMemoryActions::Snapshot.new(snapshot_name, final, path)
    end

    def snapshot_actions
      @actions.select { |a| a.is_a?(Nanoc::Int::RuleMemoryActions::Snapshot) }
    end

    def any_layouts?
      @actions.any? { |a| a.is_a?(Nanoc::Int::RuleMemoryActions::Layout) }
    end

    def serialize
      map(&:serialize)
    end

    def each
      @actions.each { |a| yield(a) }
    end

    private

    def will_add_snapshot(name)
      @_snapshot_names ||= Set.new
      if @_snapshot_names.include?(name)
        raise Nanoc::Int::Errors::CannotCreateMultipleSnapshotsWithSameName.new(@item_rep, name)
      else
        @_snapshot_names << name
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
nanoc-4.2.0 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.6 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.2.0b1 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.5 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.4 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.3 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.2 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.1 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.0 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.0rc2 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.0rc1 lib/nanoc/base/entities/rule_memory.rb
nanoc-4.1.0b1 lib/nanoc/base/entities/rule_memory.rb