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.33.1 lib/origen/generator/pattern_iterator.rb
origen-0.33.0 lib/origen/generator/pattern_iterator.rb
origen-0.32.1 lib/origen/generator/pattern_iterator.rb
origen-0.32.0 lib/origen/generator/pattern_iterator.rb
origen-0.31.0 lib/origen/generator/pattern_iterator.rb
origen-0.30.0 lib/origen/generator/pattern_iterator.rb
origen-0.29.0 lib/origen/generator/pattern_iterator.rb
origen-0.28.2 lib/origen/generator/pattern_iterator.rb
origen-0.28.1 lib/origen/generator/pattern_iterator.rb
origen-0.28.0 lib/origen/generator/pattern_iterator.rb
origen-0.27.0 lib/origen/generator/pattern_iterator.rb
origen-0.26.0 lib/origen/generator/pattern_iterator.rb
origen-0.25.1 lib/origen/generator/pattern_iterator.rb
origen-0.25.0 lib/origen/generator/pattern_iterator.rb
origen-0.24.0 lib/origen/generator/pattern_iterator.rb
origen-0.23.0 lib/origen/generator/pattern_iterator.rb
origen-0.22.0 lib/origen/generator/pattern_iterator.rb
origen-0.21.0 lib/origen/generator/pattern_iterator.rb
origen-0.20.3 lib/origen/generator/pattern_iterator.rb
origen-0.20.2 lib/origen/generator/pattern_iterator.rb