class Colrou::RailsRoutesParser

Constants

COLORS
CYAN
GREEN
PURPLE
RED
RESET_COLOR
YELLOW

Public Class Methods

colorize_parameters(line) click to toggle source

Uses ruby-doc.org/core-1.9.3/Regexp.html#class-Regexp-label-Capturing

# File lib/colrou/parse.rb, line 53
def self.colorize_parameters(line)
  line.gsub!(/(?<parameter>\/:\w+)/) do
    "/#{COLORS[:misc_colors][:param]}#{$~[:parameter].slice(1..-1)}#{COLORS[:misc_colors][:reset]}"
  end
end
colorize_verbs(line) click to toggle source
# File lib/colrou/parse.rb, line 46
def self.colorize_verbs(line)
  COLORS[:http_verb_colors].each do |verb, color|
    line.gsub!(/#{verb.upcase}/, "#{color}#{verb.upcase}#{COLORS[:misc_colors][:reset]}")
  end
end
extract_controller_name(line) click to toggle source
# File lib/colrou/parse.rb, line 59
def self.extract_controller_name(line)
  controller_action = line[/\w+#\w+$/] # Find "controller#action\n"
  return if nil == controller_action
  controller_action.split("#")[0]      # Get "controller" from "controller#action"
end
parse() click to toggle source
# File lib/colrou/parse.rb, line 77
def self.parse
  prepare_colors
  prev_controller_name = nil
  begin
    while input = ARGF.gets
      input.each_line do |line|
        begin
          # Apply colorizations
          colorize_verbs(line)
          colorize_parameters(line)
          # Apply line breaks between controllers
          controller_name = extract_controller_name(line)
          $stdout.puts if controller_name != prev_controller_name && nil != prev_controller_name
          prev_controller_name = controller_name
          # Output formatted line
          $stdout.puts(line)
        rescue Errno::EPIPE
          exit(74) # Bash exit status code (input/output error)
        end
      end
    end
  rescue
    puts "Invalid input (#{$!})"
  end
end
prepare_colors() click to toggle source
# File lib/colrou/parse.rb, line 65
def self.prepare_colors
  config_file = File.join(Dir.home, ".colrou.yml")
  return unless File.file?(config_file)
  config = YAML.load_file(File.join(Dir.home, ".colrou.yml"))
  config["http_verb_colors"].each do |verb, color|
    COLORS[:http_verb_colors][verb.to_sym] = color
  end
  config["misc_colors"].each do |attrib, color|
    COLORS[:misc_colors][attrib.to_sym] = color
  end
end