class Canis::DefaultColorParser
Public Instance Methods
parse_format(s) { |:endcolor| ... }
click to toggle source
187compat 2013-03-20 - 19:33 not working in 187 so added ,1 in some cases for string
# File lib/canis/core/util/defaultcolorparser.rb, line 31 def parse_format s # yields attribs or text ## set default colors # 2014-09-01 - 11:46 setting default fg and bg is wrong, it should either set the # objects default (which we do not know in case of statusline, or maybe remain nil) color = $def_fg_color bgcolor = $def_bg_color color = nil bgcolor = nil attrib = FFI::NCurses::A_NORMAL text = "" ## split #[...] a = s.split /(#\[[^\]]*\])/ a.each { |e| ## process color or attrib portion if e[0,2] == "#[" && e[-1,1] == "]" # now resetting 1:20 PM November 3, 2011 , earlier we were carrying over color, bgcolor, attrib = nil, nil, nil style = nil catch(:done) do e = e[2..-2] # TODO we could atthis point check against a hash to see if this string exists, and take # the array from there and pass back so we don't keep splitting and parsing. ## first split on commas to separate fg, bg and attr atts = e.split /\s*,\s*/ atts.each { |att| ## next split on = part = att.split /\s*=\s*/ case part[0] when "fg" color = part[1] when "bg" bgcolor = part[1] when "style" style = part[1] when "/end", "end" yield :endcolor if block_given? #next throw :done else # attrib attrib = part[0] end } # 2013-03-25 - 13:31 if numeric color specified color = color.to_i if color =~ /^[0-9]+$/ bgcolor = bgcolor.to_i if bgcolor =~ /^[0-9]+$/ yield [color,bgcolor,attrib,style] if block_given? end # catch else text = e yield text if block_given? end } end