Class: HighLine::Style

### Home Classes Methods

### In Files

- lib/highline/style.rb

### Parent

Object

### Methods

- ::ansi_rgb_to_hex
- ::code_index
- ::index
- ::list
- ::new
- ::rgb
- ::rgb_hex
- ::rgb_number
- ::rgb_parts
- ::uncolor
- #blue
- #bright
- #code
- #color
- #dup
- #green
- #light
- #on
- #red
- #to_hash
- #variant

### Files

- INSTALL
- LICENSE
- README.rdoc
- TODO

### Class/Module Index

Quicksearch

- HighLine
- HighLine::ColorScheme
- HighLine::HighLine
- HighLine::HighLine::HighLine
- HighLine::HighLine::HighLine::String
- HighLine::Menu
- HighLine::Question
- HighLine::Question::NoAutoCompleteMatch
- HighLine::QuestionError
- HighLine::SampleColorScheme
- HighLine::Simulate
- HighLine::StringExtensions
- HighLine::Style
- HighLine::SystemExtensions
- HighLine::SystemExtensions::WinAPI
- IO
- Kernel
- Object
- String
- StringIO

No matching classes.

# HighLine::Style

### Attributes

builtin[RW]
list[R]
name[R]
rgb[RW]

### Public Class Methods

ansi_rgb_to_hex(ansi_number) click to toggle source

    # File lib/highline/style.rb, line 83
    def self.ansi_rgb_to_hex(ansi_number)
      raise "Invalid ANSI rgb code #{ansi_number}" unless (16..231).include?(ansi_number)
      parts = (ansi_number-16).to_s(6).rjust(3,'0').scan(/./).map{|d| (d.to_i*255.0/6.0).ceil}
      rgb_hex(*parts)
    end

code_index() click to toggle source

    # File lib/highline/style.rb, line 93
    def self.code_index
      @@code_index ||= {}
    end

index(style) click to toggle source

    # File lib/highline/style.rb, line 43
    def self.index(style)
      if style.name
        @@styles ||= {}
        @@styles[style.name] = style
      end
      if !style.list
        @@code_index ||= {}
        @@code_index[style.code] ||= []
        @@code_index[style.code].reject!{|indexed_style| indexed_style.name == style.name}
        @@code_index[style.code] << style
      end
      style
    end

list() click to toggle source

    # File lib/highline/style.rb, line 89
    def self.list
      @@styles ||= {}
    end

new(defn = {}) click to toggle source

Single color/styles have :name, :code, :rgb (possibly), :builtin Compound styles have :name, :list, :builtin

    # File lib/highline/style.rb, line 106
    def initialize(defn = {})
      @definition = defn
      @name    = defn[:name]
      @code    = defn[:code]
      @rgb     = defn[:rgb]
      @list    = defn[:list]
      @builtin = defn[:builtin]
      if @rgb
        hex = self.class.rgb_hex(@rgb)
        @name ||= 'rgb_' + hex
      elsif @list
        @name ||= @list
      end
      self.class.index self unless defn[:no_index]
    end

rgb(*colors) click to toggle source

    # File lib/highline/style.rb, line 67
    def self.rgb(*colors)
      hex = rgb_hex(*colors)
      name = ('rgb_' + hex).to_sym
      if style = list[name]
        style
      else
        parts = rgb_parts(hex)
        new(:name=>name, :code=>"\e[38;5;#{rgb_number(parts)}m", :rgb=>parts)
      end
    end

rgb_hex(*colors) click to toggle source

    # File lib/highline/style.rb, line 57
    def self.rgb_hex(*colors)
      colors.map do |color|
        color.is_a?(Numeric) ? '%02x'%color : color.to_s
      end.join
    end

rgb_number(*parts) click to toggle source

    # File lib/highline/style.rb, line 78
    def self.rgb_number(*parts)
      parts = parts.flatten
      16 + parts.inject(0) {|kode, part| kode*6 + (part/256.0*6.0).floor}
    end

rgb_parts(hex) click to toggle source

    # File lib/highline/style.rb, line 63
    def self.rgb_parts(hex)
      hex.scan(/../).map{|part| part.to_i(16)}
    end

uncolor(string) click to toggle source

    # File lib/highline/style.rb, line 97
    def self.uncolor(string)
      string.gsub(/\e\[\d+(;\d+)*m/, '')
    end

### Public Instance Methods

blue() click to toggle source

    # File lib/highline/style.rb, line 150
    def blue
      @rgb && @rgb[2]
    end

bright() click to toggle source

    # File lib/highline/style.rb, line 170
    def bright
      create_bright_variant(:bright)
    end

code() click to toggle source

    # File lib/highline/style.rb, line 134
    def code
      if @list
        @list.map{|element| HighLine.Style(element).code}.join
      else
        @code
      end
    end

color(string) click to toggle source

    # File lib/highline/style.rb, line 130
    def color(string)
      code + string + HighLine::CLEAR
    end

dup() click to toggle source

    # File lib/highline/style.rb, line 122
    def dup
      self.class.new(@definition)
    end

green() click to toggle source

    # File lib/highline/style.rb, line 146
    def green
      @rgb && @rgb[1]
    end

light() click to toggle source

    # File lib/highline/style.rb, line 174
    def light
      create_bright_variant(:light)
    end

on() click to toggle source

    # File lib/highline/style.rb, line 165
    def on
      new_name = ('on_'+@name.to_s).to_sym
      self.class.list[new_name] ||= variant(new_name, :increment=>10)
    end

red() click to toggle source

    # File lib/highline/style.rb, line 142
    def red
      @rgb && @rgb[0]
    end

to_hash() click to toggle source

    # File lib/highline/style.rb, line 126
    def to_hash
      @definition
    end

variant(new_name, options={}) click to toggle source

    # File lib/highline/style.rb, line 154
    def variant(new_name, options={})
      raise "Cannot create a variant of a style list (#{inspect})" if @list
      new_code = options[:code] || code
      if options[:increment]
        raise "Unexpected code in #{inspect}" unless new_code =~ /^(.*?)(\d+)(.*)/
        new_code = $1 + ($2.to_i + options[:increment]).to_s + $3
      end
      new_rgb = options[:rgb] || @rgb
      self.class.new(self.to_hash.merge(:name=>new_name, :code=>new_code, :rgb=>new_rgb))
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.