Module: Vic::Convert

Defined in:
lib/vic/convert.rb

Class Method Summary collapse

Class Method Details

.hex_to_rgb(hex) ⇒ Object



3
4
5
# File 'lib/vic/convert.rb', line 3

def self.hex_to_rgb(hex)
  hex.match(/#?(..)(..)(..)/).captures.map { |v| v.to_i(16) }
end

.hex_to_xterm(hex) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/vic/convert.rb', line 7

def self.hex_to_xterm(hex)
  rgb = hex_to_rgb(hex)

  return XtermColor.table.index(rgb) if XtermColor.table.include?(rgb)

  increments = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff]

  rgb.map! do |part|
    for i in (0...5)
      lower, upper = increments[i], increments[i + 1]

      next unless part.between?(lower, upper)

      distance_from_lower = (lower - part).abs
      distance_from_upper = (upper - part).abs
      closest = distance_from_lower < distance_from_upper ? lower : upper
    end
    closest
  end
  XtermColor.table.index(rgb)
end

.xterm_to_hex(code) ⇒ Object



29
30
31
# File 'lib/vic/convert.rb', line 29

def self.xterm_to_hex(code)
  '#' + XtermColor.table[code].map { |v| (v.to_s(16) * 2)[0...2] }.join
end