class Computering::Cmd

Constants

CONTROL_C
CONTROL_R
ENTER

Public Class Methods

new(file, stdin = STDIN, stdout = STDOUT) click to toggle source
# File lib/computering/cmd.rb, line 12
def initialize(file, stdin = STDIN, stdout = STDOUT)
  @file       = file
  @stdin      = stdin
  @stdout     = stdout
  @container  = Container.new File.read(file)
end

Public Instance Methods

execute() click to toggle source
# File lib/computering/cmd.rb, line 19
def execute
  @container.items.each do |item|
    readchars item unless item.blank?
  end
end
readchars(item) click to toggle source
# File lib/computering/cmd.rb, line 25
def readchars(item)
  i = 0
  @stdin.noecho do |io|
    @stdout.write item.padding if item.padding
    while char = io.getch
      raise Exit if char.ord == CONTROL_C
      raise Reload if char.ord == CONTROL_R
      if char.ord == ENTER
        @stdout.puts item[i..-1]
        item.execute
        @stdout.puts "#{item.padding}#{item.buffer}" if item.buffer
        @stdout.puts
        break
      else
        if item[i]
          while item[i] =~ /\s/
            @stdout.write item[i]
            i += 1
          end
          @stdout.write item[i]
        end
        i += 1
      end
    end
  end
end