class SuperDiff::Csi::ColorizedDocument
Attributes
color_sequences_open_in_parent[R]
Public Class Methods
new(&block)
click to toggle source
Calls superclass method
# File lib/super_diff/csi/colorized_document.rb, line 4 def initialize(&block) @color_sequences_open_in_parent = [] super end
Protected Instance Methods
colorize_block(colors, opts, &block)
click to toggle source
# File lib/super_diff/csi/colorized_document.rb, line 11 def colorize_block(colors, opts, &block) color_sequence = build_initial_color_sequence_from(colors, opts) if color_sequences_open_in_parent.any? add_part(Csi.reset_sequence) end add_part(color_sequence) color_sequences_open_in_parent << color_sequence evaluate_block(&block) add_part(Csi.reset_sequence) color_sequence_to_reopen = color_sequences_open_in_parent.pop if color_sequences_open_in_parent.any? add_part(color_sequence_to_reopen) end end
colorize_inline(contents, colors, opts)
click to toggle source
# File lib/super_diff/csi/colorized_document.rb, line 29 def colorize_inline(contents, colors, opts) color_sequence = build_initial_color_sequence_from(colors, opts) add_part(color_sequence) contents.each do |content| if content.is_a?(self.class) content.each do |part| if part.is_a?(ColorSequenceBlock) add_part(Csi.reset_sequence) end add_part(part) if part.is_a?(ResetSequence) add_part(color_sequence) end end else add_part(content) end end add_part(Csi.reset_sequence) end
Private Instance Methods
build_initial_color_sequence_from(colors, opts)
click to toggle source
# File lib/super_diff/csi/colorized_document.rb, line 59 def build_initial_color_sequence_from(colors, opts) ColorSequenceBlock.new(colors).tap do |sequence| if opts[:fg] sequence << Color.resolve(opts[:fg], layer: :foreground) end if opts[:bg] sequence << Color.resolve(opts[:bg], layer: :background) end end end