Sha256: 22b126fbc3fb66a1e03308b48db99304f8bfce4a44cb544dfab657ee823a8c53

Contents?: true

Size: 728 Bytes

Versions: 13

Compression:

Stored size: 728 Bytes

Contents

# encoding: utf-8
module Middleman
  module Presentation
    # Cache for objects
    #
    # It can be used to run 'block' on `#map` only if new objects have been
    # added.
    class Cache
      include Enumerable

      private

      attr_reader :store
      attr_accessor :clean

      public

      def initialize(store: [])
        @store = store
        @clean = true
      end

      def add(obj)
        store << obj
        self.clean = false

        self
      end

      def mark_dirty
        self.clean = false

        self
      end

      def each(&block)
        return if clean

        self.clean = true

        store.each(&block)
      end

      def to_a
        store.to_a
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
middleman-presentation-core-0.17.7 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.17.6 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.17.5 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.17.2 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.17.1 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.17.0 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.3 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.2 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.0 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.0.rc2 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.0.rc1 lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.0.beta lib/middleman-presentation-core/cache.rb
middleman-presentation-core-0.16.0.alpha lib/middleman-presentation-core/cache.rb