Skip to content

Commit 039916f

Browse files
committed
feat (core): 增加其他语言模版
1 parent 425f833 commit 039916f

7 files changed

Lines changed: 17 additions & 9 deletions

File tree

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ CodeForge 是一款轻量级、高性能的桌面代码执行器,专为开发
2222

2323
## 支持的语言
2424

25-
- **Python 2**
26-
- **Python 3**
27-
- **Node.js**
2825
- **Go**
2926
- **Java**
30-
- **Shell**
27+
- **Node.js**
28+
- **Python 2**
29+
- **Python 3**
3130
- **Rust**
31+
- **Shell**
32+
- **Swift**
3233
- **...更多语言敬请期待**
3334

3435
## 安装

src-tauri/src/plugins/go.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ impl LanguagePlugin for GoPlugin {
3434
run_command: Some(String::from("go run $filename")),
3535
after_compile: None,
3636
template: Some(String::from(
37-
"package main\n\nimport \"fmt\"\n\nfunc main() {\n\t// Your code here\n\tfmt.Println(\"Hello, Go!\")\n}\n",
37+
"package main\n\nimport (\n\t\"fmt\"\n)\n\n// Go 示例代码 - CodeForge 代码执行环境\n\nfunc main() {\n\tfmt.Println(\"🎉 欢迎使用 CodeForge!\")\n\tfmt.Println(\"Welcome to CodeForge!\")\n\tfmt.Println(\"\")\n\n\tfmt.Println(\"=========================================\")\n\tfmt.Println(\" CodeForge Go \")\n\tfmt.Println(\"=========================================\")\n\tfmt.Println(\"\")\n\n\t// 基本输出示例\n\tfmt.Println(\"✅ Go 运行成功! (Go is working!)\")\n\tfmt.Println(\"🐹 这是 Go 程序 (This is Go program)\")\n\tfmt.Println(\"\")\n\n\t// 变量操作\n\tname := \"CodeForge\"\n\tversion := \"Go\"\n\tnumber1 := 10\n\tnumber2 := 20\n\tresult := number1 + number2\n\n\tfmt.Println(\"🔢 简单计算 (Simple calculation):\")\n\tfmt.Printf(\"%d + %d = %d\\n\", number1, number2, result)\n\tfmt.Println(\"\")\n\n\t// 字符串操作\n\tfmt.Println(\"📝 字符串操作 (String operations):\")\n\tfmt.Printf(\"平台名称 (Platform): %s\\n\", name)\n\tfmt.Printf(\"语言版本 (Language): %s\\n\", version)\n\tfmt.Printf(\"完整信息 (Full info): %s - %s\\n\", name, version)\n\tfmt.Println(\"\")\n\n\t// 循环示例\n\tfmt.Println(\"🔄 循环输出 (Loop output):\")\n\tfor i := 1; i <= 5; i++ {\n\t\tfmt.Printf(\"第 %d 次输出 (Output #%d): Hello from CodeForge!\\n\", i, i)\n\t}\n\tfmt.Println(\"\")\n\n\t// 切片操作\n\tfruits := []string{\"苹果\", \"香蕉\", \"橙子\", \"葡萄\"}\n\tfmt.Println(\"🍎 水果列表 (Fruit list):\")\n\tfor i, fruit := range fruits {\n\t\tfmt.Printf(\"%d. %s\\n\", i+1, fruit)\n\t}\n\tfmt.Println(\"\")\n\n\t// 条件判断\n\tscore := 85\n\tfmt.Println(\"📊 成绩评估 (Score evaluation):\")\n\tif score >= 90 {\n\t\tfmt.Println(\"优秀! (Excellent!)\")\n\t} else if score >= 80 {\n\t\tfmt.Println(\"良好! (Good!)\")\n\t} else if score >= 60 {\n\t\tfmt.Println(\"及格 (Pass)\")\n\t} else {\n\t\tfmt.Println(\"需要努力 (Need improvement)\")\n\t}\n\n\t// 指针示例\n\tvalue := 42\n\tptr := &value\n\tfmt.Println(\"\")\n\tfmt.Println(\"🔍 指针示例 (Pointer example):\")\n\tfmt.Printf(\"值: %d, 地址: %p (Value: %d, Address: %p)\\n\", *ptr, ptr, *ptr, ptr)\n\n\t// 函数示例\n\tgreeting := greetUser(\"CodeForge用户\")\n\tfmt.Println(\"\")\n\tfmt.Println(\"🎭 函数示例 (Function example):\")\n\tfmt.Println(greeting)\n\n\tfmt.Println(\"\")\n\tfmt.Println(\"🎯 CodeForge Go 代码执行完成!\")\n\tfmt.Println(\"🎯 CodeForge Go execution completed!\")\n\tfmt.Println(\"\")\n\tfmt.Println(\"感谢使用 CodeForge 代码执行环境! 🚀\")\n\tfmt.Println(\"Thank you for using CodeForge! 🚀\")\n}\n\nfunc greetUser(name string) string {\n\treturn fmt.Sprintf(\"Hello, %s! 👋\", name)\n}",
3838
)),
3939
timeout: Some(30),
4040
}

src-tauri/src/plugins/java.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ impl LanguagePlugin for JavaPlugin {
4040
run_command: Some(String::from("java $filename")),
4141
after_compile: Some(String::from("rm -f *.class")),
4242
template: Some(String::from(
43-
"public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello, World!\");\n }\n}",
43+
"import java.util.*;\n\n// Java 示例代码 - CodeForge 代码执行环境\n\npublic class Main {\n public static void main(String[] args) {\n System.out.println(\"🎉 欢迎使用 CodeForge!\");\n System.out.println(\"Welcome to CodeForge!\");\n System.out.println(\"\");\n\n System.out.println(\"=========================================\");\n System.out.println(\" CodeForge Java \");\n System.out.println(\"=========================================\");\n System.out.println(\"\");\n\n // 基本输出示例\n System.out.println(\"✅ Java 运行成功! (Java is working!)\");\n System.out.println(\"☕ 这是 Java 程序 (This is Java program)\");\n System.out.println(\"\");\n\n // 变量操作\n String name = \"CodeForge\";\n String version = \"Java\";\n int number1 = 10;\n int number2 = 20;\n int result = number1 + number2;\n\n System.out.println(\"🔢 简单计算 (Simple calculation):\");\n System.out.printf(\"%d + %d = %d%n\", number1, number2, result);\n System.out.println(\"\");\n\n // 字符串操作\n System.out.println(\"📝 字符串操作 (String operations):\");\n System.out.println(\"平台名称 (Platform): \" + name);\n System.out.println(\"语言版本 (Language): \" + version);\n System.out.println(\"完整信息 (Full info): \" + name + \" - \" + version);\n System.out.println(\"\");\n\n // 循环示例\n System.out.println(\"🔄 循环输出 (Loop output):\");\n for (int i = 1; i <= 5; i++) {\n System.out.printf(\"第 %d 次输出 (Output #%d): Hello from CodeForge!%n\", i, i);\n }\n System.out.println(\"\");\n\n // 数组操作\n String[] fruits = {\"苹果\", \"香蕉\", \"橙子\", \"葡萄\"};\n System.out.println(\"🍎 水果列表 (Fruit list):\");\n for (int i = 0; i < fruits.length; i++) {\n System.out.printf(\"%d. %s%n\", i + 1, fruits[i]);\n }\n System.out.println(\"\");\n\n // 条件判断\n int score = 85;\n System.out.println(\"📊 成绩评估 (Score evaluation):\");\n if (score >= 90) {\n System.out.println(\"优秀! (Excellent!)\");\n } else if (score >= 80) {\n System.out.println(\"良好! (Good!)\");\n } else if (score >= 60) {\n System.out.println(\"及格 (Pass)\");\n } else {\n System.out.println(\"需要努力 (Need improvement)\");\n }\n\n // 集合操作示例\n List<String> languages = new ArrayList<>();\n languages.add(\"Java\");\n languages.add(\"Python\");\n languages.add(\"JavaScript\");\n languages.add(\"Go\");\n\n System.out.println(\"\");\n System.out.println(\"📋 编程语言列表 (Programming languages):\");\n for (int i = 0; i < languages.size(); i++) {\n System.out.printf(\"%d. %s%n\", i + 1, languages.get(i));\n }\n\n // 方法调用示例\n String greeting = greetUser(\"CodeForge用户\");\n System.out.println(\"\");\n System.out.println(\"🎭 方法示例 (Method example):\");\n System.out.println(greeting);\n\n System.out.println(\"\");\n System.out.println(\"🎯 CodeForge Java 代码执行完成!\");\n System.out.println(\"🎯 CodeForge Java execution completed!\");\n System.out.println(\"\");\n System.out.println(\"感谢使用 CodeForge 代码执行环境! 🚀\");\n System.out.println(\"Thank you for using CodeForge! 🚀\");\n }\n\n public static String greetUser(String name) {\n return String.format(\"Hello, %s! 👋\", name);\n }\n}",
4444
)),
4545
timeout: Some(30),
4646
}

src-tauri/src/plugins/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ pub struct PluginConfig {
4646
// 语言插件接口
4747
pub trait LanguagePlugin: Send + Sync {
4848
// 获取插件优先级
49+
#[allow(dead_code)]
4950
fn get_order(&self) -> i32 {
5051
0
5152
}

src-tauri/src/plugins/nodejs.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ impl LanguagePlugin for NodeJSPlugin {
3838
execute_home: None,
3939
run_command: Option::from(String::from("node $filename")),
4040
after_compile: None,
41-
template: None,
41+
template: Some(String::from(
42+
"// Node.js 示例代码 - CodeForge 代码执行环境\n\nconsole.log(\"🎉 欢迎使用 CodeForge!\");\nconsole.log(\"Welcome to CodeForge!\");\nconsole.log(\"\");\n\nconsole.log(\"=========================================\");\nconsole.log(\" CodeForge Node.js \");\nconsole.log(\"=========================================\");\nconsole.log(\"\");\n\n// 基本输出示例\nconsole.log(\"✅ Node.js 运行成功! (Node.js is working!)\");\nconsole.log(\"🟢 这是 JavaScript 程序 (This is JavaScript program)\");\nconsole.log(\"\");\n\n// 变量操作\nconst name = \"CodeForge\";\nconst version = \"Node.js\";\nlet number1 = 10;\nlet number2 = 20;\nlet result = number1 + number2;\n\nconsole.log(\"🔢 简单计算 (Simple calculation):\");\nconsole.log(`${number1} + ${number2} = ${result}`);\nconsole.log(\"\");\n\n// 字符串操作\nconsole.log(\"📝 字符串操作 (String operations):\");\nconsole.log(`平台名称 (Platform): ${name}`);\nconsole.log(`语言版本 (Language): ${version}`);\nconsole.log(`完整信息 (Full info): ${name} - ${version}`);\nconsole.log(\"\");\n\n// 循环示例\nconsole.log(\"🔄 循环输出 (Loop output):\");\nfor (let i = 1; i <= 5; i++) {\n console.log(`第 ${i} 次输出 (Output #${i}): Hello from CodeForge!`);\n}\nconsole.log(\"\");\n\n// 数组操作\nconst fruits = [\"苹果\", \"香蕉\", \"橙子\", \"葡萄\"];\nconsole.log(\"🍎 水果列表 (Fruit list):\");\nfruits.forEach((fruit, index) => {\n console.log(`${index + 1}. ${fruit}`);\n});\nconsole.log(\"\");\n\n// 条件判断\nconst score = 85;\nconsole.log(\"📊 成绩评估 (Score evaluation):\");\nif (score >= 90) {\n console.log(\"优秀! (Excellent!)\");\n} else if (score >= 80) {\n console.log(\"良好! (Good!)\");\n} else if (score >= 60) {\n console.log(\"及格 (Pass)\");\n} else {\n console.log(\"需要努力 (Need improvement)\");\n}\n\n// 对象操作示例\nconst user = {\n name: \"CodeForge用户\",\n age: 25,\n skills: [\"JavaScript\", \"Node.js\", \"React\"]\n};\n\nconsole.log(\"\");\nconsole.log(\"📦 对象操作 (Object operations):\");\nconsole.log(`用户名: ${user.name}`);\nconsole.log(`年龄: ${user.age}`);\nconsole.log(`技能: ${user.skills.join(\", \")}`);\n\n// 函数示例\nfunction greetUser(name) {\n return `Hello, ${name}! 👋`;\n}\n\n// 箭头函数示例\nconst calculateSquare = (num) => num * num;\n\nconsole.log(\"\");\nconsole.log(\"🎭 函数示例 (Function examples):\");\nconst greeting = greetUser(\"CodeForge用户\");\nconsole.log(greeting);\nconsole.log(`5 的平方是: ${calculateSquare(5)}`);\n\n// Promise 示例\nconst delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));\n\nasync function asyncExample() {\n console.log(\"\");\n console.log(\"⏱️ 异步操作示例 (Async operation example):\");\n console.log(\"开始异步操作... (Starting async operation...)\");\n await delay(100);\n console.log(\"异步操作完成! (Async operation completed!)\");\n}\n\n// 执行异步示例\nasyncExample().then(() => {\n console.log(\"\");\n console.log(\"🎯 CodeForge Node.js 代码执行完成!\");\n console.log(\"🎯 CodeForge Node.js execution completed!\");\n console.log(\"\");\n console.log(\"感谢使用 CodeForge 代码执行环境! 🚀\");\n console.log(\"Thank you for using CodeForge! 🚀\");\n});",
43+
)),
4244
timeout: Some(30),
4345
}
4446
}

src-tauri/src/plugins/python2.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ impl LanguagePlugin for Python2Plugin {
3939
execute_home: None,
4040
run_command: Option::from(String::from("python2 $filename")),
4141
after_compile: None,
42-
template: None,
42+
template: Some(String::from(
43+
"# -*- coding: utf-8 -*-\n# Python2 示例代码 - CodeForge 代码执行环境\n\nprint u\"🎉 欢迎使用 CodeForge!\"\nprint u\"Welcome to CodeForge!\"\nprint u\"\"\n\nprint u\"=========================================\"\nprint u\" CodeForge Python2 \"\nprint u\"=========================================\"\nprint u\"\"\n\n# 基本输出示例\nprint u\"✅ Python2 运行成功! (Python2 is working!)\"\nprint u\"🐍 这是 Python2 程序 (This is Python2 program)\"\nprint u\"\"\n\n# 变量操作\nname = u\"CodeForge\"\nversion = u\"Python2\"\nnumber1 = 10\nnumber2 = 20\nresult = number1 + number2\n\nprint u\"🔢 简单计算 (Simple calculation):\"\nprint u\"{} + {} = {}\".format(number1, number2, result)\nprint u\"\"\n\n# 字符串操作\nprint u\"📝 字符串操作 (String operations):\"\nprint u\"平台名称 (Platform): {}\".format(name)\nprint u\"语言版本 (Language): {}\".format(version)\nprint u\"完整信息 (Full info): {} - {}\".format(name, version)\nprint u\"\"\n\n# 循环示例\nprint u\"🔄 循环输出 (Loop output):\"\nfor i in range(1, 6):\n print u\"第 {} 次输出 (Output #{}): Hello from CodeForge!\".format(i, i)\nprint u\"\"\n\n# 列表操作\nfruits = [u\"苹果\", u\"香蕉\", u\"橙子\", u\"葡萄\"]\nprint u\"🍎 水果列表 (Fruit list):\"\nfor i, fruit in enumerate(fruits):\n print u\"{}. {}\".format(i + 1, fruit)\nprint u\"\"\n\n# 条件判断\nscore = 85\nprint u\"📊 成绩评估 (Score evaluation):\"\nif score >= 90:\n print u\"优秀! (Excellent!)\"\nelif score >= 80:\n print u\"良好! (Good!)\"\nelif score >= 60:\n print u\"及格 (Pass)\"\nelse:\n print u\"需要努力 (Need improvement)\"\n\n# 字典操作示例\nuser = {\n u\"name\": u\"CodeForge用户\",\n u\"age\": 25,\n u\"skills\": [u\"Python\", u\"JavaScript\", u\"Java\"]\n}\n\nprint u\"\"\nprint u\"📦 字典操作 (Dictionary operations):\"\nprint u\"用户名: {}\".format(user[u\"name\"])\nprint u\"年龄: {}\".format(user[u\"age\"])\nprint u\"技能: {}\".format(u\", \".join(user[u\"skills\"]))\n\n# 函数示例\ndef greet_user(name):\n return u\"Hello, {}! 👋\".format(name)\n\n# 列表推导式示例\nnumbers = [1, 2, 3, 4, 5]\nsquares = [x * x for x in numbers]\n\nprint u\"\"\nprint u\"🎭 函数和列表推导示例 (Function and list comprehension examples):\"\ngreeting = greet_user(u\"CodeForge用户\")\nprint greeting\nprint u\"数字: {}\".format(numbers)\nprint u\"平方: {}\".format(squares)\n\n# 类示例\nclass Calculator(object):\n def __init__(self):\n self.name = u\"CodeForge计算器\"\n \n def add(self, a, b):\n return a + b\n \n def multiply(self, a, b):\n return a * b\n\nprint u\"\"\nprint u\"🧮 类示例 (Class example):\"\ncalc = Calculator()\nprint u\"计算器名称: {}\".format(calc.name)\nprint u\"3 + 7 = {}\".format(calc.add(3, 7))\nprint u\"4 × 6 = {}\".format(calc.multiply(4, 6))\n\nprint u\"\"\nprint u\"🎯 CodeForge Python2 代码执行完成!\"\nprint u\"🎯 CodeForge Python2 execution completed!\"\nprint u\"\"\nprint u\"感谢使用 CodeForge 代码执行环境! 🚀\"\nprint u\"Thank you for using CodeForge! 🚀\"",
44+
)),
4345
timeout: Some(30),
4446
}
4547
}

src-tauri/src/plugins/python3.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ impl LanguagePlugin for Python3Plugin {
3838
execute_home: None,
3939
run_command: Option::from(String::from("python3 $filename")),
4040
after_compile: None,
41-
template: None,
41+
template: Some(String::from(
42+
"#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n# Python3 示例代码 - CodeForge 代码执行环境\n\nprint(\"🎉 欢迎使用 CodeForge!\")\nprint(\"Welcome to CodeForge!\")\nprint(\"\")\n\nprint(\"=========================================\")\nprint(\" CodeForge Python3 \")\nprint(\"=========================================\")\nprint(\"\")\n\n# 基本输出示例\nprint(\"✅ Python3 运行成功! (Python3 is working!)\")\nprint(\"🐍 这是 Python3 程序 (This is Python3 program)\")\nprint(\"\")\n\n# 变量操作\nname = \"CodeForge\"\nversion = \"Python3\"\nnumber1 = 10\nnumber2 = 20\nresult = number1 + number2\n\nprint(\"🔢 简单计算 (Simple calculation):\")\nprint(f\"{number1} + {number2} = {result}\")\nprint(\"\")\n\n# 字符串操作\nprint(\"📝 字符串操作 (String operations):\")\nprint(f\"平台名称 (Platform): {name}\")\nprint(f\"语言版本 (Language): {version}\")\nprint(f\"完整信息 (Full info): {name} - {version}\")\nprint(\"\")\n\n# 循环示例\nprint(\"🔄 循环输出 (Loop output):\")\nfor i in range(1, 6):\n print(f\"第 {i} 次输出 (Output #{i}): Hello from CodeForge!\")\nprint(\"\")\n\n# 列表操作\nfruits = [\"苹果\", \"香蕉\", \"橙子\", \"葡萄\"]\nprint(\"🍎 水果列表 (Fruit list):\")\nfor i, fruit in enumerate(fruits, 1):\n print(f\"{i}. {fruit}\")\nprint(\"\")\n\n# 条件判断\nscore = 85\nprint(\"📊 成绩评估 (Score evaluation):\")\nif score >= 90:\n print(\"优秀! (Excellent!)\")\nelif score >= 80:\n print(\"良好! (Good!)\")\nelif score >= 60:\n print(\"及格 (Pass)\")\nelse:\n print(\"需要努力 (Need improvement)\")\n\n# 字典操作示例\nuser = {\n \"name\": \"CodeForge用户\",\n \"age\": 25,\n \"skills\": [\"Python\", \"JavaScript\", \"Java\"],\n \"is_active\": True\n}\n\nprint(\"\")\nprint(\"📦 字典操作 (Dictionary operations):\")\nprint(f\"用户名: {user['name']}\")\nprint(f\"年龄: {user['age']}\")\nprint(f\"技能: {', '.join(user['skills'])}\")\nprint(f\"活跃状态: {'是' if user['is_active'] else '否'}\")\n\n# 函数示例\ndef greet_user(name: str) -> str:\n \"\"\"问候用户的函数\"\"\"\n return f\"Hello, {name}! 👋\"\n\n# Lambda函数示例\nsquare = lambda x: x ** 2\n\n# 列表推导式示例\nnumbers = [1, 2, 3, 4, 5]\nsquares = [x ** 2 for x in numbers]\neven_squares = [x ** 2 for x in numbers if x % 2 == 0]\n\nprint(\"\")\nprint(\"🎭 函数和推导式示例 (Function and comprehension examples):\")\ngreeting = greet_user(\"CodeForge用户\")\nprint(greeting)\nprint(f\"数字: {numbers}\")\nprint(f\"平方: {squares}\")\nprint(f\"偶数的平方: {even_squares}\")\nprint(f\"5的平方 (使用lambda): {square(5)}\")\n\n# 类示例(使用现代Python特性)\nclass Calculator:\n \"\"\"简单的计算器类\"\"\"\n \n def __init__(self, name: str = \"CodeForge计算器\"):\n self.name = name\n self.history = []\n \n def add(self, a: float, b: float) -> float:\n result = a + b\n self.history.append(f\"{a} + {b} = {result}\")\n return result\n \n def multiply(self, a: float, b: float) -> float:\n result = a * b\n self.history.append(f\"{a} × {b} = {result}\")\n return result\n \n def get_history(self) -> list:\n return self.history\n\nprint(\"\")\nprint(\"🧮 类示例 (Class example):\")\ncalc = Calculator()\nprint(f\"计算器名称: {calc.name}\")\nresult1 = calc.add(3.5, 7.2)\nresult2 = calc.multiply(4, 6)\nprint(f\"3.5 + 7.2 = {result1}\")\nprint(f\"4 × 6 = {result2}\")\nprint(f\"计算历史: {calc.get_history()}\")\n\n# 异常处理示例\nprint(\"\")\nprint(\"⚠️ 异常处理示例 (Exception handling example):\")\ntry:\n division_result = 10 / 2\n print(f\"10 ÷ 2 = {division_result}\")\n # 模拟一个可能的错误\n risky_operation = 10 / 0 # 这会引发异常\nexcept ZeroDivisionError as e:\n print(f\"捕获到除零错误: {e}\")\nexcept Exception as e:\n print(f\"捕获到其他错误: {e}\")\nelse:\n print(\"没有发生异常\")\nfinally:\n print(\"异常处理完成\")\n\nprint(\"\")\nprint(\"🎯 CodeForge Python3 代码执行完成!\")\nprint(\"🎯 CodeForge Python3 execution completed!\")\nprint(\"\")\nprint(\"感谢使用 CodeForge 代码执行环境! 🚀\")\nprint(\"Thank you for using CodeForge! 🚀\")",
43+
)),
4244
timeout: Some(30),
4345
}
4446
}

0 commit comments

Comments
 (0)