#!/usr/bin/env python3 """ Edison theme demonstration script. This script shows how Edison's theme functionality works with its markdown_utils module. """ import sys import os import yaml from rich.console import Console from rich.table import Table # Add the parent directory to the path so we can import Edison modules sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # Import Edison's markdown_utils module from edison.utils.markdown_utils import print_command_rich, format_command_rich # Sample commands to demonstrate syntax highlighting COMMANDS = { "Simple": "ls -la /var/log", "Moderate": "find /home -type f -name '*.txt' -size +1M | xargs grep -l 'ERROR' | sort", "Complex": """#!/bin/bash # This script processes log files for file in $(find /var/log -name "*.log" -mtime -1); do echo "Processing $file..." if grep -q "ERROR" "$file"; then echo "Errors found in $file" grep "ERROR" "$file" | awk '{print $1, $2, $NF}' > "/tmp/$(basename $file).errors" fi done""" } def load_edison_config(): """Load Edison's configuration file.""" config_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "edison", "edison.yaml") try: with open(config_path, 'r') as file: return yaml.safe_load(file) except Exception as e: print(f"Error loading Edison configuration: {e}") return {"ui": {"theme": "monokai"}} def main(): """Main function to demonstrate Edison's theme functionality.""" console = Console() # List of themes to demonstrate themes = [ "monokai", "github-dark", "solarized-dark", "dracula", "nord", "gruvbox-dark", ] # Print header console.print("\n[bold cyan]Edison Theme Integration Demonstration[/bold cyan]") console.print("This shows how Edison's theme functionality works with its markdown_utils module.\n") # Load Edison's configuration edison_config = load_edison_config() current_theme = edison_config.get("ui", {}).get("theme", "monokai") console.print(f"[bold]Current Edison theme:[/bold] [green]{current_theme}[/green]\n") # Display theme usage examples console.print("[bold]1. How Edison uses themes in the code:[/bold]") console.print(""" # In edison/utils/markdown_utils.py: def print_command_rich(command, shell="bash", theme="monokai"): console = Console() syntax = Syntax(command, shell, theme=theme, word_wrap=True) panel = Panel(syntax, title="Command", border_style="blue") console.print(panel) # In edison/ui/console.py: def print_command(command, config=None): if config and config.get("ui", {}).get("rich_formatting", True): command_style = config.get("ui", {}).get("command_style", "panel") theme = config.get("ui", {}).get("theme", "monokai") shell = config.get("shell", "bash") if command_style == "panel": from edison.utils.markdown_utils import print_command_rich print_command_rich(command, shell=shell, theme=theme) """) console.print("\n[bold]2. Theme comparison with different commands:[/bold]\n") # For each complexity level, show the command with different themes for complexity, command in COMMANDS.items(): console.print(f"[bold yellow]Command Complexity: {complexity}[/bold yellow]") console.print(f"[dim]{command}[/dim]\n") for theme in themes: console.print(f"[bold]Theme: [green]{theme}[/green][/bold]") print_command_rich(command, theme=theme) console.print() if complexity != list(COMMANDS.keys())[-1]: console.print("[italic]Press Enter to see the next command complexity...[/italic]") input() # Show how to use Edison's theme functionality in custom code console.print("\n[bold]3. How to use Edison's theme functionality in your own code:[/bold]") console.print(""" # Import Edison's markdown_utils module from edison.utils.markdown_utils import print_command_rich # Print a command with a specific theme print_command_rich("ls -la", theme="github-dark") # Or get the formatted string to use elsewhere from edison.utils.markdown_utils import format_command_rich formatted = format_command_rich("grep -r 'pattern' .", theme="nord") print(formatted) """) if __name__ == "__main__": main()