class Logging::Layouts::EvenOddPattern::SprintfBag

Public Class Methods

new(color_scheme,color_alias_table, directive_table) click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 49
def initialize(color_scheme,color_alias_table, directive_table)
  @format_string='"'
  @format_string_bright='"'
  @args=[]
  @name_map={}
  @color_scheme=color_scheme
  @color_alias_table=color_alias_table
  @directive_table = directive_table

end

Public Instance Methods

<<(str)
Alias for: add
add(str) click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 79
def add(str)
  @format_string << str
  @format_string_bright << str
  self
end
Also aliased as: <<
add_arg(arg, modify=false) click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 86
def add_arg(arg, modify=false)
  if modify
    @args.last << arg
  else
    @args << arg
  end
  self
end
add_colored(string,pattern_name,arg=nil) click to toggle source

@param [String] pattern_name like 'message' or 'time' @param [String] string the string that needs coloring

# File lib/logging/layouts/odd_even_pattern.rb, line 62
def add_colored(string,pattern_name,arg=nil)
  if @color_scheme and !@color_scheme.lines?
    @format_string << @color_scheme.color(string,@color_alias_table[pattern_name])
    @format_string_bright << @color_scheme.color(string,"#{@color_alias_table[pattern_name]}_bright")
  else
    self << string
  end

  directive=@directive_table[pattern_name]
  if @directive_table[pattern_name].respond_to?(:call)
    @args << directive.call(arg)
  else
    @args << directive.dup
  end
  self
end
add_variable(value,arg="@var") click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 95
def add_variable(value,arg="@var")
  map_name="@map_name_#{@name_map.size}"
  @name_map[map_name]=value
  @args << arg.gsub("@var",map_name)
  self
end
set_variables(obj) click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 102
def set_variables(obj)
  @name_map.each_pair do |name, value|
    obj.instance_variable_set(name.to_sym, value)
  end
end
to_sprintf(bright=false) click to toggle source
# File lib/logging/layouts/odd_even_pattern.rb, line 108
def to_sprintf(bright=false)
  format = bright ? @format_string_bright : @format_string
  sprintf = "sprintf("
  sprintf <<  format + '"'
  sprintf << ', ' + @args.join(', ') unless @args.empty?
  sprintf << ")"

  if @color_scheme and @color_scheme.lines? #generate colors at runtime
    sprintf = "color_scheme.color(#{sprintf}, event.even? ? ::Logging::LNAMES[event.level] : ::Logging::LNAMES[event.level].to_s + '_bright' )"

  end

  sprintf
end