aboutsummaryrefslogtreecommitdiff
path: root/forward-please.rb
diff options
context:
space:
mode:
Diffstat (limited to 'forward-please.rb')
-rw-r--r--forward-please.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/forward-please.rb b/forward-please.rb
new file mode 100644
index 0000000..fc36a6e
--- /dev/null
+++ b/forward-please.rb
@@ -0,0 +1,67 @@
+require './01-hub2.rb'
+
+$level = L1_Hub2
+
+puts $level.description
+
+def help
+ puts <<~EOF
+ Commands:
+ f {frame} {iface}: forward a frame to iface
+ h: this help
+ c: click on
+ d: show the level description
+ i: show the interfaces
+ a: show the click frames and actions
+ q: quit
+ EOF
+end
+
+$instructions = []
+
+def forward(frame, iface)
+ $instructions << [frame, $clickframes[frame].to(iface)]
+end
+
+def clickactions
+ puts "Frames:"
+ $clickframes.each do |i, frame|
+ puts " #{i}: Interface #{frame.iface} -> #{frame.description}"
+ end
+
+ l = 1
+ puts "Actions:"
+ $instructions.each do |instr|
+ puts " #{l}: Forward frame #{instr[0]} to interface #{instr[1].iface}"
+ end
+end
+
+def click
+end
+
+def handle(cmd)
+ case cmd[0]
+ when ?h
+ help
+ when ?f
+ forward(*cmd.split[1..])
+ when ?d
+ puts $level.description
+ when ?i
+ puts $level.interfaces
+ when ?a
+ clickactions
+ when ?c
+ click
+ when :q
+ exit 0
+ end
+end
+
+$clickframes = $level.generate
+pp $clickframes
+
+loop do
+ print ">: "
+ handle(gets.strip)
+end