package main import ( "fmt" "os" "github.com/landaiqing/freezelib" ) func main() { fmt.Println("๐Ÿ“‹ FreezeLib Supported Options Examples") fmt.Println("=======================================") // Create output directory err := os.MkdirAll("output", 0755) if err != nil { fmt.Printf("โŒ Error creating output directory: %v\n", err) return } // Run examples languageListExample() themeListExample() presetListExample() generateExamples() } // Language list example func languageListExample() { fmt.Println("\n๐Ÿ’ป Supported Languages") fmt.Println("---------------------") freeze := freezelib.New() // Get all supported languages allLanguages := freeze.GetSupportedLanguages() fmt.Printf("๐Ÿ“ˆ Total supported languages: %d\n", len(allLanguages)) // Show first 20 languages as examples fmt.Println("\n๐Ÿ“‹ First 20 supported languages:") for i, lang := range allLanguages[:min(20, len(allLanguages))] { fmt.Printf(" %2d. %s\n", i+1, lang) } // Test language support testLanguages := []string{"go", "python", "javascript", "rust", "unknown-lang"} fmt.Println("\n๐Ÿงช Testing language support:") for _, lang := range testLanguages { supported := freeze.IsLanguageSupported(lang) status := "โŒ" if supported { status = "โœ…" } fmt.Printf(" %s %s\n", status, lang) } } // Theme list example func themeListExample() { fmt.Println("\n๐ŸŽจ Supported Themes") fmt.Println("------------------") freeze := freezelib.New() // Get all supported themes allThemes := freeze.GetSupportedThemes() fmt.Printf("๐Ÿ“ˆ Total supported themes: %d\n", len(allThemes)) // Show first 20 themes as examples fmt.Println("\n๐Ÿ“‹ First 20 supported themes:") for i, theme := range allThemes[:min(20, len(allThemes))] { fmt.Printf(" %2d. %s\n", i+1, theme) } // Test theme support testThemes := []string{"github", "dracula", "monokai", "unknown-theme"} fmt.Println("\n๐Ÿงช Testing theme support:") for _, theme := range testThemes { supported := freeze.IsThemeSupported(theme) status := "โŒ" if supported { status = "โœ…" } fmt.Printf(" %s %s\n", status, theme) } } // Preset list example func presetListExample() { fmt.Println("\nโš™๏ธ Available Presets") fmt.Println("-------------------") freeze := freezelib.New() // Get all available presets presets := freeze.GetAvailablePresets() fmt.Printf("๐Ÿ“ˆ Total available presets: %d\n", len(presets)) // Show all presets fmt.Println("\n๐Ÿ“‹ Available presets:") for i, preset := range presets { fmt.Printf(" %2d. %s\n", i+1, preset) } // Test preset validity testPresets := []string{"base", "full", "terminal", "dark", "light", "unknown-preset"} fmt.Println("\n๐Ÿงช Testing preset validity:") for _, preset := range testPresets { valid := freezelib.IsValidPreset(preset) status := "โŒ" if valid { status = "โœ…" } fmt.Printf(" %s %s\n", status, preset) } } // Generate examples with different options func generateExamples() { fmt.Println("\n๐ŸŽจ Generating Examples") fmt.Println("---------------------") freeze := freezelib.New() // Sample code for examples sampleCode := `package main import "fmt" func main() { fmt.Println("Hello, World!") // This is a comment for i := 0; i < 10; i++ { fmt.Printf("Count: %d\n", i) } }` // Generate examples with different themes themes := []string{"github", "github-dark", "dracula", "monokai"} for _, theme := range themes { if !freeze.IsThemeSupported(theme) { continue } fmt.Printf("๐ŸŽจ Generating example with %s theme...\n", theme) svgData, err := freeze.WithTheme(theme). WithFont("JetBrains Mono", 14). WithWindow(true). WithLineNumbers(true). WithShadow(15, 0, 8). WithPadding(20). GenerateFromCode(sampleCode, "go") if err != nil { fmt.Printf("โŒ Error with theme %s: %v\n", theme, err) continue } filename := fmt.Sprintf("output/theme_%s.svg", theme) err = os.WriteFile(filename, svgData, 0644) if err != nil { fmt.Printf("โŒ Error saving %s: %v\n", filename, err) continue } fmt.Printf("โœ… Generated: %s\n", filename) } // Generate examples with different presets presets := []string{"base", "full", "terminal", "dark", "light"} bashCode := `#!/bin/bash echo "Starting deployment..." if [ ! -d "dist" ]; then echo "Building project..." npm run build fi echo "Deploying to server..." rsync -av dist/ user@server:/var/www/html/ echo "Deployment complete!"` for _, preset := range presets { if !freezelib.IsValidPreset(preset) { continue } fmt.Printf("โš™๏ธ Generating example with %s preset...\n", preset) presetFreeze := freezelib.NewWithPreset(preset) svgData, err := presetFreeze.GenerateFromCode(bashCode, "bash") if err != nil { fmt.Printf("โŒ Error with preset %s: %v\n", preset, err) continue } filename := fmt.Sprintf("output/preset_%s.svg", preset) err = os.WriteFile(filename, svgData, 0644) if err != nil { fmt.Printf("โŒ Error saving %s: %v\n", filename, err) continue } fmt.Printf("โœ… Generated: %s\n", filename) } } // Helper function func min(a, b int) int { if a < b { return a } return b }