Sha256: 3f3879ad11559c1e13a0309df791e9695b4837f50c344207c4c6c280cafcce8a

Contents?: true

Size: 812 Bytes

Versions: 39

Compression:

Stored size: 812 Bytes

Contents

# frozen_string_literal: true

module Nanoc
  class ChangesStream
    class ChangesListener
      def initialize(y)
        @y = y
      end

      def unknown
        @y << :unknown
      end

      def lib
        @y << :lib
      end

      def to_stop(&block)
        if block_given?
          @to_stop = block
        else
          @to_stop
        end
      end
    end

    def initialize(enum: nil)
      @enum = enum
      @enum ||=
        Enumerator.new do |y|
          @listener = ChangesListener.new(y)
          yield(@listener)
        end.lazy
    end

    def stop
      @listener&.to_stop&.call
    end

    def map
      self.class.new(enum: @enum.map { |e| yield(e) })
    end

    def to_enum
      @enum
    end

    def each
      @enum.each { |e| yield(e) }
      nil
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
nanoc-4.11.14 lib/nanoc/base/changes_stream.rb
nanoc-4.11.13 lib/nanoc/base/changes_stream.rb
nanoc-4.11.12 lib/nanoc/base/changes_stream.rb
nanoc-4.11.11 lib/nanoc/base/changes_stream.rb
nanoc-4.11.10 lib/nanoc/base/changes_stream.rb
nanoc-4.11.9 lib/nanoc/base/changes_stream.rb
nanoc-4.11.8 lib/nanoc/base/changes_stream.rb
nanoc-4.11.7 lib/nanoc/base/changes_stream.rb
nanoc-4.11.6 lib/nanoc/base/changes_stream.rb
nanoc-4.11.5 lib/nanoc/base/changes_stream.rb
nanoc-4.11.4 lib/nanoc/base/changes_stream.rb
nanoc-4.11.3 lib/nanoc/base/changes_stream.rb
nanoc-4.11.2 lib/nanoc/base/changes_stream.rb
nanoc-4.11.1 lib/nanoc/base/changes_stream.rb
nanoc-4.11.0 lib/nanoc/base/changes_stream.rb
nanoc-4.10.4 lib/nanoc/base/changes_stream.rb
nanoc-4.10.3 lib/nanoc/base/changes_stream.rb
nanoc-4.10.2 lib/nanoc/base/changes_stream.rb
nanoc-4.10.1 lib/nanoc/base/changes_stream.rb
nanoc-4.10.0 lib/nanoc/base/changes_stream.rb