Class: Computering::Cmd
Defined Under Namespace
Classes: Exit
Constant Summary collapse
- CONTROL_C =
3- ENTER =
13
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(file, stdin = STDIN, stdout = STDOUT) ⇒ Cmd
constructor
A new instance of Cmd.
- #readchars(item) ⇒ Object
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
#execute ⇒ Object
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 |