Object
# File lib/term/ansicolor/attribute.rb, line 13 def self.[](name) case when self === name then name when name.to_s =~ /\A(on_)?(\d+)\z/ then get "#$1color#$2" when name.to_s =~ /\A#([0-9a-f]{3}){1,2}\z/ then nearest_rgb_color name when name.to_s =~ /\Aon_#([0-9a-f]{3}){1,2}\z/ then nearest_rgb_on_color name else get name end end
# File lib/term/ansicolor/attribute.rb, line 27 def self.attributes(&block) @__store__.each_value(&block) end
# File lib/term/ansicolor/attribute.rb, line 23 def self.get(name) @__store__[name.to_sym] end
# File lib/term/ansicolor/attribute.rb, line 35 def self.named_attributes(&block) @named_attributes ||= attributes.reject(&:rgb_color?).each(&block) end
# File lib/term/ansicolor/attribute.rb, line 39 def self.nearest_rgb_color(color) rgb = RGBTriple[color] rgb_colors.reject(&:background?).min_by { |c| c.distance_to(rgb) } end
# File lib/term/ansicolor/attribute.rb, line 44 def self.nearest_rgb_on_color(color) rgb = RGBTriple[color] rgb_colors.select(&:background?).min_by { |c| c.distance_to(rgb) } end
# File lib/term/ansicolor/attribute.rb, line 49 def initialize(name, code, options = {}) @name = name.to_sym @code = code.to_s if html = options[:html] @rgb = RGBTriple.from_html(html) elsif !options.empty? @rgb = RGBTriple.from_hash(options) end end
# File lib/term/ansicolor/attribute.rb, line 69 def background? @name.to_s.start_with?('on_') end
# File lib/term/ansicolor/attribute.rb, line 61 def code if rgb_color? background? ? "48;5;#{@code}" : "38;5;#{@code}" else @code end end
# File lib/term/ansicolor/attribute.rb, line 83 def distance_to(other) if our_rgb = to_rgb_triple and other.respond_to?(:to_rgb_triple) and other_rgb = other.to_rgb_triple then our_rgb.distance_to other_rgb else 1 / 0.0 end end
Generated with the Darkfish Rdoc Generator 2.