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

Version Path
gm-notepad-0.0.18 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.17 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.16 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.15 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.14 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.13 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.12 lib/gm/notepad/buffer_wrapper.rb
gm-notepad-0.0.11 lib/gm/notepad/buffer_wrapper.rb