Module: RBS::UnitTest::WithAliases

Includes:
Convertibles
Defined in:
lib/rbs/unit_test/with_aliases.rb

Defined Under Namespace

Classes: WithEnum

Instance Method Summary collapse

Instance Method Details

#with(*args, &block) ⇒ Object



41
42
43
44
# File '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| ... } ⇒ Object

Yields:

  • (_ = elements)


64
65
66
67
68
69
# File '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| ... } ⇒ Object

Yields:

  • (true)


105
106
107
108
109
# File '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) ⇒ Object Also known as: with_untyped



111
112
113
114
115
# File '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) ⇒ Object



91
92
93
94
95
96
# File '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| ... } ⇒ Object

Yields:

  • (value)


52
53
54
55
56
# File '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| ... } ⇒ Object

Yields:

  • (_ = hash)


71
72
73
74
75
76
# File '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| ... } ⇒ Object

Yields:

  • (value)


46
47
48
49
50
# File '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) ⇒ Object



98
99
100
101
102
103
# File '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| ... } ⇒ Object

Yields:

  • (io)


78
79
80
81
82
# File '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) ⇒ Object



84
85
86
87
88
89
# File '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) ⇒ Object

Raises:

  • (ArgumentError)


119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File '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

#with_string(value = '') {|value| ... } ⇒ Object

Yields:

  • (value)


58
59
60
61
62
# File '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