Sha256: 4a8a750836559c677e51a661a945c07738e8aad8097815c441c829d4c0c34076
Contents?: true
Size: 1.2 KB
Versions: 2
Compression:
Stored size: 1.2 KB
Contents
require_relative 'input/input' require_relative 'output/output' require_relative 'process/process' require_relative 'support/terminal' module Vedeu ModeSwitch = Class.new(StandardError) class Application # :nocov: def self.start(options = {}) new(options).start end def initialize(options = {}) @options = options end def start Terminal.open(mode) do Terminal.set_cursor_mode Output.render runner { main_sequence } end end private attr_reader :options def runner if interactive? interactive { yield } else run_once { yield } end end def main_sequence Input.capture Process.evaluate Output.render end def interactive? options.fetch(:interactive) end def interactive loop { yield } rescue StopIteration rescue ModeSwitch Terminal.mode_switch end def run_once yield end def mode options.fetch(:mode) end def options defaults.merge!(@options) end def defaults { interactive: true, mode: :raw } end # :nocov: end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.0.36 | lib/vedeu/application.rb |
vedeu-0.0.35 | lib/vedeu/application.rb |