diff options
| author | grothedev <grothedev@gmail.com> | 2026-04-29 01:00:18 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-29 01:00:18 -0400 |
| commit | fe210355a480b2386a05ba385aa5a265c4f7c966 (patch) | |
| tree | ed10fcc4dd1153d983164bff9523f594b4d63ff8 /repl-template.py | |
| parent | e757d3020571cb139d9480f97e1b0fa86222660e (diff) | |
| parent | 00a8a558aa2984401728c5027cf054b9d7a97b6f (diff) | |
Merge pull request #1 from grothedev/copilot/clean-up-and-organize-repomaster
Clean up top-level repo layout and document the script inventory
Diffstat (limited to 'repl-template.py')
| -rw-r--r-- | repl-template.py | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/repl-template.py b/repl-template.py deleted file mode 100644 index 715eaf8..0000000 --- a/repl-template.py +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/python3 - -import readline - -import sys - -class SimpleREPL: - def __init__(self): - self.prompt = ">> " - self.commands = { - "help": self._show_help, - "exit": self._exit_repl, - "quit": self._exit_repl, # Alias for exit - "echo": self._echo, - # Add more commands here - # "my_command": self._handle_my_command, - } - # Application-specific state can be initialized here - # self.app_state = {} - - def _show_help(self, *args): - """Displays available commands.""" - print("Available commands:") - for cmd, func in self.commands.items(): - docstring = func.__doc__ or "No description available." - print(f" {cmd:<15} - {docstring.strip().splitlines()[0]}") # Show first line of docstring - return None # No printable result for help - - def _exit_repl(self, *args): - """Exits the REPL.""" - print("Exiting REPL. Goodbye!") - sys.exit(0) - - def _echo(self, *args): - """Echoes the input arguments back to the user. - Usage: echo <arg1> <arg2> ... - """ - if not args: - return "Echo: Nothing to echo!" - return "Echo: " + " ".join(args) - - # --- Placeholder for your custom commands --- - # def _handle_my_command(self, arg1, arg2=None, *other_args): - # """ - # Description of my_command. - # Usage: my_command <required_arg> [optional_arg] ... - # """ - # # Your command logic here - # # Example: - # # self.app_state['something'] = arg1 - # # return f"Processed {arg1} and {arg2}" - # pass - - - def evaluate(self, line): - """Evaluates a single line of input.""" - parts = line.strip().split() - if not parts: - return None # Empty line - - command_name = parts[0].lower() # Case-insensitive command matching - args = parts[1:] - - if command_name in self.commands: - command_func = self.commands[command_name] - try: - return command_func(*args) - except TypeError as e: - # Catch errors related to incorrect number of arguments - return f"Error: Invalid arguments for '{command_name}'. Usage: {command_func.__doc__ or ''}" - except Exception as e: - return f"Error executing '{command_name}': {e}" - else: #todo check for partial str match - - return f"Unknown command: '{command_name}'. Type 'help' for available commands." - - def run(self): - """Runs the REPL main loop.""" - print("Welcome to SimpleREPL! Type 'help' for commands or 'exit' to quit.") - while True: - try: - line = input(self.prompt) - if line.strip(): # Process only if line is not empty - result = self.evaluate(line) - if result is not None: # Print only if there's a result - print(result) - except EOFError: # Ctrl+D - print("\nExiting REPL (EOF).") - break - except KeyboardInterrupt: # Ctrl+C - print("\nInterrupted. Type 'exit' or 'quit' to exit.") - # Optionally, you might want to clear any partial input here - # or reset some state if an operation was interrupted. - except Exception as e: - print(f"An unexpected error occurred: {e}") - # Depending on severity, you might want to break or continue - -if __name__ == "__main__": - repl_app = SimpleREPL() - repl_app.run() |
