Sha256: 0aa0f4e3e694b5824f3928c48c64f5e114f42aa3d7b7f1ad463edada0a3929d5

Contents?: true

Size: 1.71 KB

Versions: 6

Compression:

Stored size: 1.71 KB

Contents

require 'dry-initializer'
require 'gm/notepad/container'
require 'gm/notepad/line_renderer'
require 'gm/notepad/throughput_text'
require 'gm/notepad/input_processor'

module Gm
  module Notepad
    # Responsible for recording entries and then dumping them accordingly.
    class App
      extend Dry::Initializer
      option :table_registry, default: -> { Container.resolve(:table_registry) }, reader: :private
      option :report_config, default: -> { Container.resolve(:config).report_config }, reader: :private
      option :list_tables, default: -> { Container.resolve(:config).list_tables }, reader: :private

      def initialize(*args, input_processor: nil, renderer: nil)
        super
        @renderer = renderer || LineRenderer.new(table_registry: table_registry)
        @input_processor = input_processor || InputProcessor.new(table_registry: table_registry)
        open!
      end
      attr_reader :renderer, :input_processor

      def process(text:)
        output = input_processor.convert_to_output(input: text)
        renderer.render(output: output)
      end

      def close!
        renderer.close!
      end

      private

      def open!
        renderer.call("Welcome to gm-notepad. type \"?\" for help.", to_interactive: true, to_output: false)
        return unless report_config
        lines = ["# Configuration Parameters:"]
        Config.settings.each do |setting|
          lines << "#   config[#{setting.inspect}] = #{Config.public_send(setting).inspect}"
        end
        # When running :list_tables by default I don't want to report
        # that to the output buffer.
        to_output = !list_tables
        renderer.call(lines, to_interactive: true, to_output: to_output)
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
gm-notepad-0.0.17 lib/gm/notepad/app.rb
gm-notepad-0.0.16 lib/gm/notepad/app.rb
gm-notepad-0.0.15 lib/gm/notepad/app.rb
gm-notepad-0.0.14 lib/gm/notepad/app.rb
gm-notepad-0.0.13 lib/gm/notepad/app.rb
gm-notepad-0.0.12 lib/gm/notepad/app.rb