Sha256: cf4ab65042422ed75d0136f67207edf36888710f470e392151ed8afd19718799

Contents?: true

Size: 867 Bytes

Versions: 49

Compression:

Stored size: 867 Bytes

Contents

# frozen_string_literal: true

class Code
  class Type
    class Repeat < Type
      attr_reader :clazz, :minimum, :maximum

      def initialize(clazz, minimum: 0, maximum: nil)
        @clazz = clazz
        @minimum = minimum
        @maximum = maximum
      end

      def valid?(argument)
        valid_for?(expected: clazz, actual: argument)
      end

      def min_arguments
        minimum * min_arguments_of(clazz)
      end

      def max_arguments
        max_arguments = max_arguments_of(clazz)
        (max_arguments.nil? || maximum.nil?) ? nil : maximum * max_arguments
      end

      def name
        if minimum.zero? && maximum.nil?
          "#{clazz.name}.repeat"
        elsif maximum.nil?
          "#{clazz.name}.repeat(#{minimum})"
        else
          "#{clazz.name}.repeaa(#{minimum}, #{maximum})"
        end
      end
    end
  end
end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
code-ruby-1.0.0 lib/code/type/repeat.rb
code-ruby-0.15.16 lib/code/type/repeat.rb
code-ruby-0.15.15 lib/code/type/repeat.rb
code-ruby-0.15.14 lib/code/type/repeat.rb
code-ruby-0.15.13 lib/code/type/repeat.rb
code-ruby-0.15.12 lib/code/type/repeat.rb
code-ruby-0.15.11 lib/code/type/repeat.rb
code-ruby-0.15.10 lib/code/type/repeat.rb
code-ruby-0.15.9 lib/code/type/repeat.rb
code-ruby-0.15.8 lib/code/type/repeat.rb
code-ruby-0.15.7 lib/code/type/repeat.rb
code-ruby-0.15.6 lib/code/type/repeat.rb
code-ruby-0.15.5 lib/code/type/repeat.rb
code-ruby-0.15.4 lib/code/type/repeat.rb
code-ruby-0.15.3 lib/code/type/repeat.rb
code-ruby-0.15.2 lib/code/type/repeat.rb
code-ruby-0.15.0 lib/code/type/repeat.rb
code-ruby-0.14.9 lib/code/type/repeat.rb
code-ruby-0.14.8 lib/code/type/repeat.rb
code-ruby-0.14.6 lib/code/type/repeat.rb