diff options
| -rwxr-xr-x | telem.lua | 51 | 
1 files changed, 23 insertions, 28 deletions
| @@ -36,6 +36,23 @@ function getchar()  	return char  end +function dispatch_loop(dispatch_table, quit_char, prompt_func, err_str) +	repeat +		-- Show prompt and read 1 char from keyboard +		io.write(prompt_func()) +		local c = getchar() +		if c ~= "\n" then io.write("\n") end +		-- Use char as index into dispatch table +		if c == "\n" then +			-- pass +		elseif dispatch_table[c] == nil then +			print(err_str) +		else +			dispatch_table[c]() +		end +	until c == quit_char +end +  -- Internals  function update_boards() @@ -276,20 +293,9 @@ function do_type()  	current_thread_posts = get_posts(current_thread)  	current_post_index = #current_thread_posts  	do_type_show_post() -	repeat -		-- Show prompt and read one char -		io.write("[f]irst, [n]ext, [p]rev, [l]last, [r]eply, [d]one > ") -		c = getchar() -		if c ~= "\n" then io.write("\n") end -		-- Dispatch to sub-command -		if c == "\n" then -			-- pass -		elseif type_dispatch[c] == nil then -			print("Invalid command!") -		elseif c ~= "\n" then -			type_dispatch[c]() -		end -	until c == "d" +	dispatch_loop(type_dispatch, "d", +		function() return "[f]irst, [n]ext, [p]rev, [l]last, [r]eply, [d]one > " end, +		"Unrecognised command!")  end  -- end of "type" command implementation @@ -353,17 +359,6 @@ dispatch["b"] = do_board  dispatch["c"] = do_unimplemented  -- Infinite loop of command dispatch -repeat -	-- Show prompt and read 1 char from keyboard -	io.write("["..current_board.."] COMMAND :> ") -	c = getchar() -	if c ~= "\n" then io.write("\n") end -	-- Use char as index into dispatch table -	if c == "\n" then -		-- pass -	elseif dispatch[c] == nil then -		print("Unrecognised command, hit `h` for help.") -	else -		dispatch[c]() -	end -until c == "q" +dispatch_loop(dispatch, "q", +	function() return "["..current_board.."] COMMAND :> " end, +	"Unrecognised command, hit `h` for help.") | 
