import type { LanguageMetadata } from "../types/language"; /** *语言元数据配置列表 * 只包含语言的静态元数据,不包含题目相关的代码模板 * ⭐ 新增语言只需在这里添加基础配置 */ export const LANGUAGE_CONFIGS: LanguageMetadata[] = [ { id: "javascript", name: "JavaScript", monacoId: "javascript", extensions: [".js"], fallbackTemplate: `// JavaScript 示例 console.log("Hello, World!"); // 定义一个函数 function fibonacci(n) { if (n <= 1) return n; return fibonacci(n - 1) + fibonacci(n - 2); } console.log("斐波那契数列前10项:"); for (let i = 0; i < 10; i++) { console.log(\`F(\${i}) = \${fibonacci(i)}\`); }`, canRun: true, }, { id: "typescript", name: "TypeScript", monacoId: "typescript", extensions: [".ts"], fallbackTemplate: `// TypeScript 示例 interface User { name: string; age: number; } const user: User = { name: "张三", age: 25 }; console.log(\`用户: \${user.name}, 年龄: \${user.age}\`);`, canRun: true, }, { id: "python", name: "Python", monacoId: "python", extensions: [".py"], fallbackTemplate: `# Python 示例 print("Hello, World!") # 列表推导式 squares = [x**2 for x in range(10)] print("前10个平方数:", squares) # 定义一个类 class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): return f"你好,我是{self.name},今年{self.age}岁" person = Person("李四", 30) print(person.greet())`, canRun: true, }, { id: "html", name: "HTML", monacoId: "html", fallbackTemplate: ` Hello HTML

欢迎使用智能代码编辑器

这是一个 HTML 示例

`, canRun: false, extensions: [".html"], }, { id: "css", name: "CSS", monacoId: "css", fallbackTemplate: `/* CSS 示例 */ body { font-family: 'Arial', sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; } .container { max-width: 1200px; margin: 0 auto; background: rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 30px; } h1 { font-size: 2.5rem; margin-bottom: 20px; }`, canRun: false, extensions: [".css"], }, { id: "java", name: "Java", monacoId: "java", fallbackTemplate: `public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); // 数组示例 int[] numbers = {1, 2, 3, 4, 5}; int sum = 0; for (int num : numbers) { sum += num; } System.out.println("数组总和: " + sum); } }`, canRun: true, // 需要远程编译服务 extensions: [".java"], }, { id: "cpp", name: "C++", monacoId: "cpp", fallbackTemplate: `#include #include using namespace std; int main() { cout << "Hello, World!" << endl; // 向量示例 vector vec = {1, 2, 3, 4, 5}; int sum = 0; for(int num : vec) { sum += num; } cout << "向量总和: " << sum << endl; return 0; }`, canRun: true, extensions: [".cpp", ".cc", ".cxx"], }, { id: "go", name: "Go", monacoId: "go", fallbackTemplate: `package main import "fmt" func main() { fmt.Println("Hello, World!") // 切片示例 numbers := []int{1, 2, 3, 4, 5} sum := 0 for _, num := range numbers { sum += num } fmt.Printf("切片总和: %d\\n", sum) }`, canRun: true, extensions: [".go"], }, { id: "rust", name: "Rust", monacoId: "rust", fallbackTemplate: `fn main() { println!("Hello, World!"); // 向量示例 let numbers = vec![1, 2, 3, 4, 5]; let sum: i32 = numbers.iter().sum(); println!("总和: {}", sum); }`, canRun: true, extensions: [".rs"], }, { id: "c", name: "C", monacoId: "c", fallbackTemplate: `#include int main() { printf("Hello, World!\\n"); // 数组示例 int numbers[] = {1, 2, 3, 4, 5}; int sum = 0; int size = sizeof(numbers) / sizeof(numbers[0]); for(int i = 0; i < size; i++) { sum += numbers[i]; } printf("数组总和: %d\\n", sum); return 0; }`, canRun: true, extensions: [".c"], }, { id: "csharp", name: "C#", monacoId: "csharp", fallbackTemplate: `using System; using System.Collections.Generic; using System.Linq; public static class Program { public static void Main() { Console.WriteLine("Hello, World!"); } }`, canRun: true, extensions: [".cs"], }, { id: "php", name: "PHP", monacoId: "php", fallbackTemplate: `name = $name; $this->age = $age; } public function greet(): string { return "你好,我是{$this->name},今年{$this->age}岁"; } } $person = new Person("张三", 25); echo $person->greet() . "\\n"; `, canRun: true, extensions: [".php"], }, { id: "sql", name: "SQL", monacoId: "sql", fallbackTemplate: `-- SQL 示例 SELECT users.name, users.email, COUNT(orders.id) as order_count, SUM(orders.amount) as total_amount FROM users LEFT JOIN orders ON users.id = orders.user_id WHERE users.created_at >= '2024-01-01' GROUP BY users.id, users.name, users.email HAVING COUNT(orders.id) > 0 ORDER BY total_amount DESC LIMIT 10;`, canRun: false, extensions: [".sql"], }, ]; /** * 根据 ID 获取语言配置 */ export function getLanguageConfig(id: string): LanguageMetadata | undefined { return LANGUAGE_CONFIGS.find((lang) => lang.id === id); } /** * 获取所有支持的语言 */ export function getAllLanguages(): LanguageMetadata[] { return LANGUAGE_CONFIGS; } /** * 获取可运行的语言列表 */ export function getRunnableLanguages(): LanguageMetadata[] { return LANGUAGE_CONFIGS.filter((lang) => lang.canRun); }