Module: Kernel

Defined in:
lib/open_classes/kernel.rb,
lib/test_toolbox/kernel.rb

Overview

Kernel

Instance Method Summary collapse

Instance Method Details

#bulk_define_methods(classes, methods, constants) ⇒ Object

define methods to classes. methods have simple return value.

bulk_define_methods [NilClass, FalseClass], :blank?, true
bulk_define_methods [TrueClass, Numeric], "blank?", false

puts nil.blank?   # => true
puts false.blank? # => true
puts true.blank?  # => false
puts 1.blank?     # => false

bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false]
bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true]

puts nil.blank?     # => true
puts nil.present?   # => false
puts false.blank?   # => true
puts false.present? # => false
puts true.blank?    # => false
puts true.present?  # => true
puts 1.blank?       # => false
puts 1.present?     # => true

bulk_define_methods NilClass, :blank?, true is same as following code

class NilClass
  def blank?
    true
  end
end


66
67
68
69
70
71
72
73
74
75
76
# File 'lib/open_classes/kernel.rb', line 66

def bulk_define_methods(classes, methods, constants)
  validate_bulk_define_classes!(classes)
  validate_bulk_define_methods!(methods)
  size = get_classes_size(classes)
  tmp_classes = fill_same_values(classes, size)
  tmp_methods = fill_same_values(methods, size)
  tmp_constants = fill_same_values(constants, size)
  tmp_classes.each do |klass|
    define_method_constants(klass, tmp_methods, tmp_constants)
  end
end

#bulk_puts_eval(binding, codes) ⇒ Object

Puts each-line-code + eval result

code

message = 'msg'
puts_eval binding, "\"hoge-\#{message}1\"\n\"hoge-\#{message}2\"\n"

result

"hoge-#{message}1" # => "hoge-msg1"\n
"hoge-#{message}2" # => "hoge-msg2"\n


33
34
35
# File 'lib/open_classes/kernel.rb', line 33

def bulk_puts_eval(binding, codes)
  codes.each_line { |code|puts_eval(code.chop, binding) }
end

#capture_stdoutObject

capture STDOUT

capture print

print capture_stdout { print "hoge" } # => hoge

if block have no STDOUT, capture_stdout returns empty.

print capture_stdout {  }.empty? # => true


13
14
15
16
17
18
19
20
21
22
# File 'lib/test_toolbox/kernel.rb', line 13

def capture_stdout
  begin
    $stdout = StringIO.new
    yield
    result = $stdout.string
  ensure
    $stdout = STDOUT
  end
  result
end

#dp_line(line, options = { filename: '', char: '-' }) ⇒ Object

debug print line for print-debugging

debug print default

dp_line __LINE__
# yy = call line no
# => --------------------|filename=|line=yy|--------------------

debug print with filename

dp_line __LINE__, filename: __FILE__
# xx = filename, yy = call line no
# => --------------------|filename=xx|line=yy|--------------------

debug print with no filename, specific char

dp_line __LINE__, char: '@'
# xx = filename, yy = call line no
# => @@@@@@@@@@@@@@@@@@@@|filename=|line=yy|@@@@@@@@@@@@@@@@@@@@


41
42
43
44
45
# File 'lib/test_toolbox/kernel.rb', line 41

def dp_line(line, options = { filename: '', char: '-' })
  filename = options[:filename].nil? ? '' : options[:filename]
  char = options[:char].nil? ? '-' : options[:char]
  puts "#{char * 20}|filename=#{filename}|line=#{line}|#{char * 20}"
end

Print code + eval result

print_eval 8/4, binding  # => 8/4 # => 2
message = 'msg';print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"


9
10
11
# File 'lib/open_classes/kernel.rb', line 9

def print_eval(code, binding)
  print exec_eval code, binding
end

#puts_eval(code, binding) ⇒ Object

Puts code + eval result

puts_eval 8/4, binding  # => 8/4 # => 2\n
message = 'msg';puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"\n


17
18
19
# File 'lib/open_classes/kernel.rb', line 17

def puts_eval(code, binding)
  puts exec_eval code, binding
end