Class: Yay::Colourizer

Inherits:
Object
  • Object
show all
Defined in:
lib/yay/colourizer.rb

Instance Method Summary collapse

Constructor Details

#initialize(rules, input, output) ⇒ Colourizer

Returns a new instance of Colourizer.



5
6
7
8
9
# File 'lib/yay/colourizer.rb', line 5

def initialize rules, input, output
  colourize_rules rules
  @input   = input
  @output  = output
end

Instance Method Details

#colourize_pipeObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/yay/colourizer.rb', line 39

def colourize_pipe
  default_end_colour = ColourWheel::end_colour
  
  @input.each_line { |line|

    # track the line_rules end colour so we can return to this after each match
    end_colour = default_end_colour

    #
    @line_rules.each { |rule| 
      if line.match(rule[0])
        line = "#{rule[1]}#{line.rstrip}#{default_end_colour}"
        end_colour = rule[1]
        # only allow one line
        break
      end
    }

    # 
    @part_rules.each { |rule|
      line.gsub!(rule[0], "#{rule[1]}\\0#{end_colour}")
    }

    @output.puts line
  }
end

#colourize_rules(rules) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/yay/colourizer.rb', line 19

def colourize_rules rules
  @line_rules = []
  @part_rules = []

  rules.each { |rule|

    regex   = rule[0]
    colours = rule[1]
    is_line = rule[2]

    colour_string = ColourWheel::begin_colours(colours)

    if is_line
      @line_rules.unshift [regex, colour_string]
    else
      @part_rules.unshift [regex, colour_string]
    end
  }
end

#line_rulesObject



11
12
13
# File 'lib/yay/colourizer.rb', line 11

def line_rules
  @line_rules
end

#part_rulesObject



15
16
17
# File 'lib/yay/colourizer.rb', line 15

def part_rules
  @part_rules
end