class Rin
Public Class Methods
instance()
click to toggle source
# File lib/rin.rb, line 6 def self.instance @instance ||= begin instance = new(10) instance.enable! instance end end
new(base)
click to toggle source
# File lib/rin.rb, line 14 def initialize(base) @base = base @inspects = { Fixnum => Fixnum.instance_method(:inspect), Bignum => Bignum.instance_method(:inspect), } end
Public Instance Methods
base(set_base=false, &block)
click to toggle source
uhm… returns the base if no base is given if base is given, it sets the base to that and calls the block
# File lib/rin.rb, line 38 def base(set_base=false, &block) return @base unless set_base temporary_base set_base, &block end
bin(&block)
click to toggle source
# File lib/rin.rb, line 63 def bin(&block) temporary_base 2, &block end
bin!()
click to toggle source
# File lib/rin.rb, line 67 def bin! @base = 2 end
dec(&block)
click to toggle source
# File lib/rin.rb, line 71 def dec(&block) temporary_base 10, &block end
dec!()
click to toggle source
# File lib/rin.rb, line 75 def dec! @base = 10 end
disable!()
click to toggle source
# File lib/rin.rb, line 22 def disable! @inspects.each do |klass, original| define_inspect klass, original end end
enable!()
click to toggle source
# File lib/rin.rb, line 28 def enable! @inspects.each do |klass, _original| define_inspect klass, Proc.new { Rin.instance.inspect_num self } end end
hex(&block)
click to toggle source
# File lib/rin.rb, line 47 def hex(&block) temporary_base 16, &block end
hex!()
click to toggle source
# File lib/rin.rb, line 51 def hex! @base = 16 end
inspect_num(n)
click to toggle source
# File lib/rin.rb, line 43 def inspect_num(n) n.to_s(@base).upcase end
oct(&block)
click to toggle source
# File lib/rin.rb, line 55 def oct(&block) temporary_base 8, &block end
oct!()
click to toggle source
# File lib/rin.rb, line 59 def oct! @base = 8 end
Private Instance Methods
define_inspect(klass, method_def)
click to toggle source
# File lib/rin.rb, line 81 def define_inspect(klass, method_def) klass.class_eval do define_method :inspect, method_def end end
temporary_base(overriden_base, &block)
click to toggle source
# File lib/rin.rb, line 87 def temporary_base(overriden_base, &block) validate_base! overriden_base initial_base = @base @base = overriden_base block.call ensure @base = initial_base if initial_base # don't reset to nil, when error is raised end
validate_base!(base)
click to toggle source
# File lib/rin.rb, line 96 def validate_base!(base) 1.to_s base rescue ArgumentError raise ArgumentError, "Invalid base: #{base.inspect}" end