control_flow/do_while_jumps_and_case_constants_no_parens.rb

tests/_examples/control_flow/do_while_jumps_and_case_constants_no_parens.rb in the metorex repository.

def first_large values
  index = -1
  begin
    index += 1
    break if values[index] > 10
  end while index < values.size - 1
  values[index]
end
p first_large([3, 14, 5])

def skip_small values
  index = 0
  total = 0
  begin
    index += 1
    next if values[index - 1] < 5
    total += values[index - 1]
  end until index >= values.size
  total
end
p skip_small([3, 14, 5])

class Sorter
  INVOICE = /\AINV-(\d+)\z/
  SMALL = (1..9)
  LIMIT = 100

  def self.kind value
    case value
    when INVOICE then "invoice #{$1}"
    when SMALL then "small"
    when LIMIT then "limit"
    else "other"
    end
  end
end
p Sorter.kind("INV-1042")
p Sorter.kind(4)
p Sorter.kind(100.0)
p Sorter.kind(:pending)

whole = case 4.0 when 4 then :whole end
p whole
float = case 4 when 4.0 then :float end
p float
fraction = case 4.5 when 4 then :whole else :fraction end
p fraction

Output:

14
19
"invoice 1042"
"small"
"limit"
"other"
:whole
:float
:fraction