Class: Computering::Cmd

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

Defined Under Namespace

Classes: Exit

Constant Summary collapse

CONTROL_C =
3
ENTER =
13

Instance Method Summary collapse

Methods included from Dsl

#command, #headline, #link, #paragraph

Constructor Details

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

Returns a new instance of Cmd.



12
13
14
15
16
17
18
19
# File 'lib/computering/cmd.rb', line 12

def initialize(file, stdin = STDIN, stdout = STDOUT)
  @file   = file
  @stdin  = stdin
  @stdout = stdout
  @code   = File.readlines(file).join "\n"

  instance_eval @code
end

Instance Method Details

#executeObject



21
22
23
24
25
26
27
28
29
# File 'lib/computering/cmd.rb', line 21

def execute
  items.each do |item|
    if item.blank?
      @stdout.puts
    else
      readchars item
    end
  end
end

#readchars(item) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/computering/cmd.rb', line 31

def readchars(item)
  i = 0
  @stdin.noecho do |io|
    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.buffer
        break
      else
        @stdout.putc item[i] if item[i]
        i += 1
      end
    end
  end
end