Sha256: 042ec459361b6f52373eb9da18b5a2022198504c70fe8e3066d3f8fa5ca947d7
Contents?: true
Size: 1.18 KB
Versions: 8
Compression:
Stored size: 1.18 KB
Contents
require 'dry-initializer' require 'term/ansicolor' require 'gm/notepad/container' module Gm module Notepad # To provide a means for colorizing the output and defering output class BufferWrapper def self.for_interactive(buffer:) new(buffer: buffer, color: Container[:config].interactive_color, append_new_line_on_close: true) end def self.for_output(buffer:) new(buffer: buffer, color: Container[:config].output_color, append_new_line_on_close: false) end private_class_method :new extend Dry::Initializer option :buffer option :color, default: -> { false } option :append_new_line_on_close, default: -> { false } option :lines, default: -> { [] } def initialize(*args) super if color buffer.extend(Term::ANSIColor) end end def puts(text) if color buffer.puts("#{buffer.public_send(color)}#{text}#{buffer.reset}") else buffer.puts("#{text}") end end def close! self.lines.each do |line| puts(line) end buffer.print("\n") if append_new_line_on_close end end end end
Version data entries
8 entries across 8 versions & 1 rubygems