class RBS::UnitTest::WithAliases::WithEnum - rbs: Ruby Standard Library Documentation

# class RBS::UnitTest::WithAliases::WithEnum

### Public Class Methods

new(enum) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 11
          def initialize(enum) = @enum = enum

          def each(&block) = @enum.each(&block)

          def and_nil(&block)
            self.and(nil, &_ = block)
          end

          def but(*cases, &block)
            return WithEnum.new to_enum(__method__ || raise, *cases) unless block

            each do |arg|
              yield arg unless cases.any? { (_ = _1) === arg }
            end
          end

          def and(*args, &block)
            return WithEnum.new to_enum(__method__ || raise, *args) unless block

            each(&block)
            args.each do |arg|
              if WithEnum === arg # use `===` as `arg` might not have `.is_a?` on it
                arg.each(&block)
              else
                block.call(_ = arg)
              end
            end
          end
        end

        def with(*args, &block)
          return WithEnum.new to_enum(__method__ || raise, *args) unless block
          args.each(&block)
        end

        def with_int(value = 3, &block)
          return WithEnum.new to_enum(__method__ || raise, value) unless block
          yield value
          yield ToInt.new(value)
        end

        def with_float(value = 0.1)
          return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
          yield value
          yield ToF.new(value)
        end

        def with_string(value = '')
          return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
          yield value
          yield ToStr.new(value)
        end

        def with_array(*elements)
          return WithEnum.new to_enum(__method__ || raise, *elements) unless block_given?

          yield _ = elements
          yield ToArray.new(*elements)
        end

        def with_hash(hash = {})
          return WithEnum.new to_enum(__method__ || raise, hash) unless block_given?

          yield _ = hash
          yield ToHash.new(hash)
        end

        def with_io(io = $stdout)
          return WithEnum.new to_enum(__method__ || raise, io) unless block_given?
          yield io
          yield ToIO.new(io)
        end

        def with_path(path = "/tmp/foo.txt", &block)
          return WithEnum.new to_enum(__method__ || raise, path) unless block

          with_string(path, &block)
          block.call ToPath.new(path)
        end

        def with_encoding(encoding = Encoding::UTF_8, &block)
          return WithEnum.new to_enum(__method__ || raise, encoding) unless block

          block.call encoding
          with_string(encoding.to_s, &block)
        end

        def with_interned(value = :&, &block)
          return WithEnum.new to_enum(__method__ || raise, value) unless block

          with_string(value.to_s, &block)
          block.call value.to_sym
        end

        def with_bool(&block)
          return WithEnum.new to_enum(__method__ || raise) unless block
          yield true
          yield false
        end

        def with_boolish(&block)
          return WithEnum.new to_enum(__method__ || raise) unless block
          with_bool(&block)
          [nil, 1, Object.new, BlankSlate.new, "hello, world!"].each(&block)
        end

        alias with_untyped with_boolish

        def with_range(start, stop, exclude_end = false)
          # If you need fixed starting and stopping points, you can just do `with_range with(1), with(2)`.
          raise ArgumentError, '`start` must be from a `with` method' unless start.is_a? WithEnum
          raise ArgumentError, '`stop` must be from a `with` method' unless stop.is_a? WithEnum

          start.each do |lower|
            stop.each do |upper|
              yield CustomRange.new(lower, upper, exclude_end)

              # `Range` requires `begin <=> end` to return non-nil, but doesn't actually
              # end up using the return value of it. This is to add that in when needed.
              def lower.<=>(rhs) = :not_nil unless defined? lower.<=>

              # If `lower <=> rhs` is defined but nil, then that means we're going to be constructing
              # an illegal range (eg `3..ToInt.new(4)`). So, we need to skip yielding an invalid range
              # in that case.
              next if defined?(lower.<=>) && nil == (lower <=> upper)

              yield Range.new(lower, upper, exclude_end)
            end
          end
        end
      end
    end

### Public Instance Methods

and(*args, &block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 27
    def and(*args, &block)
      return WithEnum.new to_enum(__method__ || raise, *args) unless block

      each(&block)
      args.each do |arg|
        if WithEnum === arg # use `===` as `arg` might not have `.is_a?` on it
          arg.each(&block)
        else
          block.call(_ = arg)
        end
      end
    end

and_nil(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 15
    def and_nil(&block)
      self.and(nil, &_ = block)
    end

but(*cases) { |arg| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 19
    def but(*cases, &block)
      return WithEnum.new to_enum(__method__ || raise, *cases) unless block

      each do |arg|
        yield arg unless cases.any? { (_ = _1) === arg }
      end
    end

each(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 13
      def each(&block) = @enum.each(&block)

      def and_nil(&block)
        self.and(nil, &_ = block)
      end

      def but(*cases, &block)
        return WithEnum.new to_enum(__method__ || raise, *cases) unless block

        each do |arg|
          yield arg unless cases.any? { (_ = _1) === arg }
        end
      end

      def and(*args, &block)
        return WithEnum.new to_enum(__method__ || raise, *args) unless block

        each(&block)
        args.each do |arg|
          if WithEnum === arg # use `===` as `arg` might not have `.is_a?` on it
            arg.each(&block)
          else
            block.call(_ = arg)
          end
        end
      end
    end

with(*args, &block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 41
    def with(*args, &block)
      return WithEnum.new to_enum(__method__ || raise, *args) unless block
      args.each(&block)
    end

with_array(*elements) { |_ = elements| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 64
    def with_array(*elements)
      return WithEnum.new to_enum(__method__ || raise, *elements) unless block_given?

      yield _ = elements
      yield ToArray.new(*elements)
    end

with_bool() { |true| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 105
    def with_bool(&block)
      return WithEnum.new to_enum(__method__ || raise) unless block
      yield true
      yield false
    end

with_boolish(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 111
    def with_boolish(&block)
      return WithEnum.new to_enum(__method__ || raise) unless block
      with_bool(&block)
      [nil, 1, Object.new, BlankSlate.new, "hello, world!"].each(&block)
    end

with_encoding(encoding = Encoding::UTF_8, &block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 91
    def with_encoding(encoding = Encoding::UTF_8, &block)
      return WithEnum.new to_enum(__method__ || raise, encoding) unless block

      block.call encoding
      with_string(encoding.to_s, &block)
    end

with_float(value = 0.1) { |value| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 52
    def with_float(value = 0.1)
      return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
      yield value
      yield ToF.new(value)
    end

with_hash(hash = {}) { |_ = hash| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 71
    def with_hash(hash = {})
      return WithEnum.new to_enum(__method__ || raise, hash) unless block_given?

      yield _ = hash
      yield ToHash.new(hash)
    end

with_int(value = 3) { |value| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 46
    def with_int(value = 3, &block)
      return WithEnum.new to_enum(__method__ || raise, value) unless block
      yield value
      yield ToInt.new(value)
    end

with_interned(value = :&, &block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 98
    def with_interned(value = :&, &block)
      return WithEnum.new to_enum(__method__ || raise, value) unless block

      with_string(value.to_s, &block)
      block.call value.to_sym
    end

with_io(io = $stdout) { |io| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 78
    def with_io(io = $stdout)
      return WithEnum.new to_enum(__method__ || raise, io) unless block_given?
      yield io
      yield ToIO.new(io)
    end

with_path(path = "/tmp/foo.txt", &block) click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 84
    def with_path(path = "/tmp/foo.txt", &block)
      return WithEnum.new to_enum(__method__ || raise, path) unless block

      with_string(path, &block)
      block.call ToPath.new(path)
    end

with_range(start, stop, exclude_end = false) { |custom_range| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 119
      def with_range(start, stop, exclude_end = false)
        # If you need fixed starting and stopping points, you can just do `with_range with(1), with(2)`.
        raise ArgumentError, '`start` must be from a `with` method' unless start.is_a? WithEnum
        raise ArgumentError, '`stop` must be from a `with` method' unless stop.is_a? WithEnum

        start.each do |lower|
          stop.each do |upper|
            yield CustomRange.new(lower, upper, exclude_end)

            # `Range` requires `begin <=> end` to return non-nil, but doesn't actually
            # end up using the return value of it. This is to add that in when needed.
            def lower.<=>(rhs) = :not_nil unless defined? lower.<=>

            # If `lower <=> rhs` is defined but nil, then that means we're going to be constructing
            # an illegal range (eg `3..ToInt.new(4)`). So, we need to skip yielding an invalid range
            # in that case.
            next if defined?(lower.<=>) && nil == (lower <=> upper)

            yield Range.new(lower, upper, exclude_end)
          end
        end
      end
    end

with_string(value = '') { |value| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/unit_test/with_aliases.rb, line 58
    def with_string(value = '')
      return WithEnum.new to_enum(__method__ || raise, value) unless block_given?
      yield value
      yield ToStr.new(value)
    end