Class: Computering::Cmd

Inherits:
Object
  • Object
show all
Defined in:
lib/computering/cmd.rb

Defined Under Namespace

Classes: Exit

Constant Summary collapse

CONTROL_C =
3
ENTER =
13

Instance Method Summary collapse

Constructor Details

#initialize(file, stdin = STDIN, stdout = STDOUT) ⇒ Cmd

Returns a new instance of Cmd.



10
11
12
13
14
15
# File 'lib/computering/cmd.rb', line 10

def initialize(file, stdin = STDIN, stdout = STDOUT)
  @file       = file
  @stdin      = stdin
  @stdout     = stdout
  @container  = Container.new File.read(file)
end

Instance Method Details

#executeObject



17
18
19
20
21
# File 'lib/computering/cmd.rb', line 17

def execute
  @container.items.each do |item|
    readchars item unless item.blank?
  end
end

#readchars(item) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/computering/cmd.rb', line 23

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
      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