module Rib::Color

Public Instance Methods

before_loop() click to toggle source

————— Rib API —————

Calls superclass method
# File lib/rib/more/color.rb, line 10
def before_loop
  colors
  super
end
black(█) click to toggle source
# File lib/rib/more/color.rb, line 110
def   black █ color(30, &block); end
blue(█) click to toggle source
# File lib/rib/more/color.rb, line 114
def    blue █ color(34, &block); end
color(rgb) click to toggle source
# File lib/rib/more/color.rb, line 106
def color rgb
  "\e[#{rgb}m" + if block_given? then "#{yield}#{reset}" else '' end
end
colorize_backtrace(backtrace) click to toggle source
# File lib/rib/more/color.rb, line 86
def colorize_backtrace backtrace
  backtrace.map{ |b|
    path, msgs = b.split(':', 2)
    dir, sep, file = path.rpartition('/')
    msgs ||= (line - 1).to_s # msgs would be nil when input is next/break
    msg = msgs.sub(/(\d+)(:?)/){red{$1}+$2}.sub(/`.+?'/){green{$&}}

    "#{dir+sep}#{yellow{file}}:#{msg}"
  }
end
colors() click to toggle source

————— Plugin API —————

# File lib/rib/more/color.rb, line 33
def colors
  config[:color] ||= {
    Numeric    => :red    ,
    String     => :green  ,
    Symbol     => :cyan   ,
    Array      => :blue   ,
    Hash       => :blue   ,
    NilClass   => :magenta,
    TrueClass  => :magenta,
    FalseClass => :magenta,
    Exception  => :magenta,
    Object     => :yellow }
end
cyan(█) click to toggle source
# File lib/rib/more/color.rb, line 116
def    cyan █ color(36, &block); end
find_color(colors, value) click to toggle source
# File lib/rib/more/color.rb, line 97
def find_color colors, value
  (colors.sort{ |(k1, _), (k2, _)|
    # Class <=> Class
    if    k1 < k2 then -1
    elsif k1 > k2 then  1
    else                0
    end}.find{ |(klass, _)| value.kind_of?(klass) } || []).last
end
format_backtrace(backtrace) click to toggle source
Calls superclass method
# File lib/rib/more/color.rb, line 79
def format_backtrace backtrace
  colorize_backtrace(super(backtrace))
end
format_color(result, display=inspect_result(result)) click to toggle source
# File lib/rib/more/color.rb, line 47
def format_color result, display=inspect_result(result)
  case result
    when String ; send(colors[String ]){ display }
    when Numeric; send(colors[Numeric]){ display }
    when Symbol ; send(colors[Symbol ]){ display }

    when Array  ; send(colors[Array  ]){ '['     }   +
                    result.map{ |e   | if e.object_id == result.object_id
                                         send(colors[Array]){'[...]'}
                                       else
                                         format_color(e); end }.
             join(send(colors[Array  ]){ ', '    })  +
                  send(colors[Array  ]){ ']'     }

    when Hash   ; send(colors[Hash   ]){ '{'     }   +
                    result.map{ |k, v| format_color(k) +
                  send(colors[Hash   ]){ '=>'    }   +
                                       if v.object_id == result.object_id
                                         send(colors[Hash]){'{...}'}
                                       else
                                         format_color(v); end }.
             join(send(colors[Hash   ]){ ', '    }) +
                  send(colors[Hash   ]){ '}'     }

    else        ; if color = find_color(colors, result)
                  send(color){ display }
                  else
                  send(colors[Object]){ display }
                  end
  end
end
format_result(result) click to toggle source
Calls superclass method
# File lib/rib/more/color.rb, line 15
def format_result result
  return super if Color.disabled?
  "#{result_prompt}#{format_color(result)}"
end
get_error(err) click to toggle source
Calls superclass method
# File lib/rib/more/color.rb, line 20
def get_error err
  return super if Color.disabled?
  message, backtrace = super
  [format_color(err, message), backtrace]
end
green(&block;) click to toggle source
# File lib/rib/more/color.rb, line 112
def   green &block; color(32, &block); end
magenta(&block;) click to toggle source
# File lib/rib/more/color.rb, line 115
def magenta &block; color(35, &block); end
red(&block;) click to toggle source
# File lib/rib/more/color.rb, line 111
def     red &block; color(31, &block); end
reset(&block;) click to toggle source
# File lib/rib/more/color.rb, line 118
def   reset &block; color( 0, &block); end
warn(message) click to toggle source
Calls superclass method
# File lib/rib/more/color.rb, line 26
def warn message
  return super if Color.disabled?
  super(red{message})
end
white(&block;) click to toggle source
# File lib/rib/more/color.rb, line 117
def   white &block; color(37, &block); end
yellow(&block;) click to toggle source
# File lib/rib/more/color.rb, line 113
def  yellow &block; color(33, &block); end