Module: SuperDiff::Csi

Defined in:
lib/super_diff/csi.rb,
lib/super_diff/csi/color.rb,
lib/super_diff/csi/document.rb,
lib/super_diff/csi/bold_sequence.rb,
lib/super_diff/csi/four_bit_color.rb,
lib/super_diff/csi/reset_sequence.rb,
lib/super_diff/csi/eight_bit_color.rb,
lib/super_diff/csi/colorized_document.rb,
lib/super_diff/csi/color_sequence_block.rb,
lib/super_diff/csi/uncolorized_document.rb,
lib/super_diff/csi/twenty_four_bit_color.rb

Defined Under Namespace

Classes: BoldSequence, Color, ColorSequenceBlock, ColorizedDocument, Document, EightBitColor, FourBitColor, ResetSequence, TwentyFourBitColor, UncolorizedDocument

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.color_enabled=(value) ⇒ Object (writeonly)

Sets the attribute color_enabled

Parameters:

  • value

    the value to set the attribute color_enabled to.



16
17
18
# File 'lib/super_diff/csi.rb', line 16

def color_enabled=(value)
  @color_enabled = value
end

Class Method Details

.already_colorized?(text) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/super_diff/csi.rb', line 39

def self.already_colorized?(text)
  text.match?(/\e\[\d+m/)
end

.color_enabled?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/super_diff/csi.rb', line 23

def self.color_enabled?
  @color_enabled
end

.colorize(*args, **opts, &block) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/super_diff/csi.rb', line 27

def self.colorize(*args, **opts, &block)
  if color_enabled?
    ColorizedDocument.new(*args, **opts, &block)
  else
    UncolorizedDocument.new(*args, **opts, &block)
  end
end

.decolorize(text) ⇒ Object



35
36
37
# File 'lib/super_diff/csi.rb', line 35

def self.decolorize(text)
  text.gsub(/\e\[\d+(?:;\d+)*m(.+?)\e\[0m/, '\1')
end

.inspect_colors_in(text) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/super_diff/csi.rb', line 43

def self.inspect_colors_in(text)
  [FourBitColor, EightBitColor, TwentyFourBitColor].reduce(
    text
  ) do |str, klass|
    klass.sub_colorized_areas_in(str) do |area, color|
      color_block = colorize("◼︎", color.to_foreground)

      layer_indicator = (color.foreground? ? "(fg)" : "(bg)")

      "#{color_block} #{layer_indicator}#{area}"
    end
  end
end

.reset_sequenceObject



19
20
21
# File 'lib/super_diff/csi.rb', line 19

def self.reset_sequence
  ResetSequence.new
end