Module: Common

Defined in:
lib/debugtrace/common.rb

Overview

common.rb © 2025 Masato Kokubo

Class Method Summary collapse

Class Method Details

.check_type(value_name, value, type) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/debugtrace/common.rb', line 4

def self.check_type(value_name, value, type)
  if !(value_name.is_a? String); raise "Argument value_name (=#{value_name}) must be a String"; end
  if !(type.is_a? Class); raise "Argument type (=#{type}) must be a Class"; end

  error = false
  if type == FalseClass || type == TrueClass
    # false or true
    if value.class != FalseClass && value.class != TrueClass
      check_error = true
    end
  else
      error = value.class != type
  end

  if error
    value_string = value.class == String ? "\"#{value}\"" : "#{value}"
    top_type_name = type.name.slice(0).upcase
    a = top_type_name == 'A' || top_type_name == 'I' || top_type_name == 'U' ||
      top_type_name == 'E' || top_type_name == 'O' ? 'an' : 'a'
    raise "Argument #{value_name} (=#{value_string}) must be #{a} #{type}"
  end
  value
end