Sha256: ed187e0495e44250f9c4ab00430ee3c86ff76e075046977e3ac8c0ea627ad931

Contents?: true

Size: 865 Bytes

Versions: 21

Compression:

Stored size: 865 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

21 entries across 21 versions & 1 rubygems

Version Path
code-ruby-1.2.5 lib/code/type/repeat.rb
code-ruby-1.2.4 lib/code/type/repeat.rb
code-ruby-1.2.3 lib/code/type/repeat.rb
code-ruby-1.2.2 lib/code/type/repeat.rb
code-ruby-1.2.1 lib/code/type/repeat.rb
code-ruby-1.1.3 lib/code/type/repeat.rb
code-ruby-1.1.1 lib/code/type/repeat.rb
code-ruby-1.1.0 lib/code/type/repeat.rb
code-ruby-0.13.1 lib/code/type/repeat.rb
code-ruby-0.13.0 lib/code/type/repeat.rb
code-ruby-0.12.0 lib/code/type/repeat.rb
code-ruby-0.11.0 lib/code/type/repeat.rb
code-ruby-0.10.4 lib/code/type/repeat.rb
code-ruby-0.10.3 lib/code/type/repeat.rb
code-ruby-0.10.2 lib/code/type/repeat.rb
code-ruby-0.10.1 lib/code/type/repeat.rb
code-ruby-0.10.0 lib/code/type/repeat.rb
code-ruby-0.6.3 lib/code/type/repeat.rb
code-ruby-0.6.2 lib/code/type/repeat.rb
code-ruby-0.6.1 lib/code/type/repeat.rb