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.20.1 lib/origen/generator/pattern_iterator.rb
origen-0.20.0 lib/origen/generator/pattern_iterator.rb
origen-0.13.0 lib/origen/generator/pattern_iterator.rb
origen-0.12.1 lib/origen/generator/pattern_iterator.rb
origen-0.12.0 lib/origen/generator/pattern_iterator.rb
origen-0.11.0 lib/origen/generator/pattern_iterator.rb
origen-0.10.1 lib/origen/generator/pattern_iterator.rb
origen-0.9.1 lib/origen/generator/pattern_iterator.rb
origen-0.9.0 lib/origen/generator/pattern_iterator.rb
origen-0.8.0 lib/origen/generator/pattern_iterator.rb
origen-0.7.47 lib/origen/generator/pattern_iterator.rb
origen-0.7.46 lib/origen/generator/pattern_iterator.rb
origen-0.7.45 lib/origen/generator/pattern_iterator.rb
origen-0.7.44 lib/origen/generator/pattern_iterator.rb
origen-0.7.43 lib/origen/generator/pattern_iterator.rb
origen-0.7.42 lib/origen/generator/pattern_iterator.rb
origen-0.7.41 lib/origen/generator/pattern_iterator.rb
origen-0.7.40 lib/origen/generator/pattern_iterator.rb
origen-0.7.39 lib/origen/generator/pattern_iterator.rb
origen-0.7.38 lib/origen/generator/pattern_iterator.rb