class Presentify::Colorifer

Constants

BLUE
CLASSES_RE
COMMENTS_RE
CONSTANTS_RE
CYAN
ESCAPE_CODES_RE
GRAY
GREEN
INTERPOLATIONS_RE
KEYWORDS_RE
MAGENTA
METHOD_CALLS_RE
MUTLTI_STRINGS_RE
RED
SINGLE_STRINGS_RE
WHITE
YELLOW

Public Instance Methods

colorify(code) click to toggle source
# File lib/presentify/colorifer.rb, line 22
def colorify(code)
  #code = code.gsub NUMBERS_RE, "\e[3#{RED}m\\2\e[0m\\3"

  replacify code.dup, {
    CONSTANTS_RE        => RED,
    ESCAPE_CODES_RE     => YELLOW,
    INTERPOLATIONS_RE   => YELLOW,
    MUTLTI_STRINGS_RE   => GREEN,
    SINGLE_STRINGS_RE   => GREEN,
    COMMENTS_RE         => GRAY,
    KEYWORDS_RE         => MAGENTA,
    METHOD_CALLS_RE     => CYAN,
    CLASSES_RE          => YELLOW
  }
end

Private Instance Methods

placeholder(num) click to toggle source
# File lib/presentify/colorifer.rb, line 62
def placeholder(num)
  "-----placeholder-#{num}----"
end
replacify(code, res) click to toggle source
# File lib/presentify/colorifer.rb, line 40
def replacify(code, res)
  stash = []

  # applying colors
  res.each do |re, color|
    while code.match(re)
      match = $&.dup
      code.sub! match, placeholder(stash.size)
      replacement = "\e[#{color}m#{match}\e[0m"
      replacement << "\e[#{GREEN}m" if re == ESCAPE_CODES_RE || re == INTERPOLATIONS_RE
      stash << replacement
    end
  end

  # rollback
  while entry = stash.pop
    code.sub! placeholder(stash.size), entry
  end

  code
end