Module: Kernel
- Defined in:
- lib/test_toolbox/kernel.rb,
lib/open_classes/kernel/null.rb,
lib/open_classes/kernel/evalb.rb,
lib/open_classes/kernel/p_evals.rb,
lib/open_classes/kernel/booleans.rb,
lib/open_classes/kernel/exchange.rb,
lib/open_classes/kernel/aa_ancestors.rb,
lib/open_classes/kernel/hash_to_attributes.rb,
lib/open_classes/kernel/bulk_define_methods.rb
Overview
Kernel
Instance Method Summary collapse
-
#aa_ancestors ⇒ Object
Ascii Art Ancestors.
-
#bulk_define_methods(classes, methods, constants) ⇒ Object
define methods to classes.
-
#bulk_puts_eval(binding, codes) ⇒ Object
Puts each-line-code + eval result.
-
#capture_stdout ⇒ Object
capture STDOUT.
-
#dp_line(line, options = { filename: '', char: '-' }) ⇒ Object
debug print line for print-debugging.
-
#evalb(bind = nil, &proc) ⇒ Object
eval block version.
-
#exchange(one, other) ⇒ Object
exchange variable a for b.
-
#hash_to_attributes(hash) ⇒ Object
set attributes from hash.
- #null ⇒ Object
-
#print_eval(code, binding) ⇒ Object
Print code + eval result.
-
#puts_eval(code, binding) ⇒ Object
Puts code + eval result.
Instance Method Details
#aa_ancestors ⇒ Object
Ascii Art Ancestors
Examples
define class
class BaseHogeForAncestors;end
class HogeForAncestors < BaseHogeForAncestors;end
execute aa_ancestors
puts HogeForAncestors.aa_ancestors
result is …
----------------------
| BasicObject |
----------------------
|
----------------------
| Kernel |
----------------------
|
----------------------
| Object |
----------------------
|
----------------------
|BaseHogeForAncestors|
----------------------
|
----------------------
| HogeForAncestors |
----------------------
40 41 42 43 44 45 46 |
# File 'lib/open_classes/kernel/aa_ancestors.rb', line 40 def aa_ancestors max_class = max_size_class max = max_class.to_s.size ca = centered_ancestors(max) ba = surrounded_ancestors(ca) connected_box_ancestors(ba, max) end |
#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
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/open_classes/kernel/bulk_define_methods.rb', line 34 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
= 'msg'
puts_eval binding, <<-EOS
"hoge-#{}1"
"hoge-#{}2"
EOS
result
"hoge-#{}1" # => "hoge-msg1"\n
"hoge-#{}2" # => "hoge-msg2"\n
34 35 36 37 38 |
# File 'lib/open_classes/kernel/p_evals.rb', line 34 def bulk_puts_eval(binding, codes) result = [] codes.each_line { |code|result << exec_eval(code.chop, binding) } puts result.join("\n").justify_char '#' end |
#capture_stdout ⇒ Object
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, = { filename: '', char: '-' }) filename = [:filename].nil? ? '' : [:filename] char = [:char].nil? ? '-' : [:char] puts "#{char * 20}|filename=#{filename}|line=#{line}|#{char * 20}" end |
#evalb(bind = nil, &proc) ⇒ Object
eval block version
Example
require 'tbpgr_utils'
n = 1
actual = evalb(binding) do
<<-EOS
n = n + 1
n = n + 2
EOS
end
print actual # => 4
19 20 21 |
# File 'lib/open_classes/kernel/evalb.rb', line 19 def evalb(bind = nil, &proc) eval yield, bind end |
#exchange(one, other) ⇒ Object
exchange variable a for b
Example
a = 1
b = 2
a, b = exchange(a, b)
a # => 2
b # => 1
15 16 17 18 19 20 |
# File 'lib/open_classes/kernel/exchange.rb', line 15 def exchange(one, other) tmp = one one = other other = tmp [one, other] end |
#hash_to_attributes(hash) ⇒ Object
set attributes from hash
Example
class Person
attr_accessor :name, :age
end
person = Person.new
person.hash_to_attributes({name: 'hoge', age: 33})
result
#<PersonForHashToAttributes:0x3957858 @age=33, @not_exists="hoge">
20 21 22 |
# File 'lib/open_classes/kernel/hash_to_attributes.rb', line 20 def hash_to_attributes(hash) hash.each { |key, value|instance_variable_set "@#{key}", value } end |
#null ⇒ Object
4 5 6 |
# File 'lib/open_classes/kernel/null.rb', line 4 def null nil end |
#print_eval(code, binding) ⇒ Object
Print code + eval result
print_eval 8/4, binding # => 8/4 # => 2
= 'msg';print_eval "hoge-#{}", binding # => "hoge-#{message}" # => "hoge-msg"
10 11 12 |
# File 'lib/open_classes/kernel/p_evals.rb', line 10 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
= 'msg';puts_eval "hoge-#{}", binding # => "hoge-#{message}" # => "hoge-msg"\n
18 19 20 |
# File 'lib/open_classes/kernel/p_evals.rb', line 18 def puts_eval(code, binding) puts exec_eval code, binding end |