Sha256: fb0ecb2d4f1aa86bf602163da52abeea8176006a64d132f7d8c0d021eeaf39a4

Contents?: true

Size: 1.12 KB

Versions: 206

Compression:

Stored size: 1.12 KB

Contents

module Origen
  class Generator
    class PatternIterator
      attr_accessor :key

      def invoke(options, &block)
        if enabled?(options)
          @loop.call(options[key], &block)
        else
          yield
        end
      end

      def loop(&block)
        @loop = block
      end

      def setup(&block)
        if block
          @setup = block
        elsif @setup
          @setup
        # Setup is optional for an iterator, return something to keep the caller happy
        else
          ->(arg) { arg }
        end
      end

      def startup(&block)
        if block
          @startup = block
        elsif @startup
          @startup
        # Startup is optional for an iterator, return something to keep the caller happy
        else
          ->(_options, arg) { arg }
        end
      end

      def pattern_name(&block)
        if block
          @pattern_name = block
        elsif @pattern_name
          @pattern_name
        else
          fail "pattern_name must be defined for iterator: #{key}"
        end
      end

      def enabled?(options)
        options.keys.include?(key)
      end
    end
  end
end

Version data entries

206 entries across 206 versions & 1 rubygems

Version Path
origen-0.42.1 lib/origen/generator/pattern_iterator.rb
origen-0.42.0 lib/origen/generator/pattern_iterator.rb
origen-0.41.2 lib/origen/generator/pattern_iterator.rb
origen-0.41.1 lib/origen/generator/pattern_iterator.rb
origen-0.41.0 lib/origen/generator/pattern_iterator.rb
origen-0.40.2 lib/origen/generator/pattern_iterator.rb
origen-0.40.1 lib/origen/generator/pattern_iterator.rb
origen-0.40.0 lib/origen/generator/pattern_iterator.rb
origen-0.38.0 lib/origen/generator/pattern_iterator.rb
origen-0.37.0 lib/origen/generator/pattern_iterator.rb
origen-0.36.1 lib/origen/generator/pattern_iterator.rb
origen-0.36.0 lib/origen/generator/pattern_iterator.rb
origen-0.35.1 lib/origen/generator/pattern_iterator.rb
origen-0.35.0 lib/origen/generator/pattern_iterator.rb
origen-0.34.3 lib/origen/generator/pattern_iterator.rb
origen-0.34.2 lib/origen/generator/pattern_iterator.rb
origen-0.34.1 lib/origen/generator/pattern_iterator.rb
origen-0.34.0 lib/origen/generator/pattern_iterator.rb
origen-0.33.3 lib/origen/generator/pattern_iterator.rb
origen-0.33.2 lib/origen/generator/pattern_iterator.rb