From 338ac358db0da25cc07aefa310cfc7b8f94a916f Mon Sep 17 00:00:00 2001 From: landaiqing Date: Wed, 17 Sep 2025 00:12:39 +0800 Subject: [PATCH] :construction: Modify toml,powershell prettier plugin(beta) --- frontend/package-lock.json | 65 +- frontend/package.json | 4 +- frontend/public/go.wasm | Bin 3996160 -> 3996866 bytes .../src/common/prettier/plugins/go/go.mjs | 105 ++- .../src/common/prettier/plugins/go/go.wasm | Bin 3996160 -> 3996866 bytes .../common/prettier/plugins/powershell/ast.ts | 391 +++++++++ .../plugins/powershell/code-generator.ts | 566 ++++++++++++ .../plugins/powershell/formatter-rules.ts | 440 ++++++++++ .../prettier/plugins/powershell/index.ts | 196 +++-- .../prettier/plugins/powershell/lexer.ts | 722 +++++++++++++++ .../prettier/plugins/powershell/parse.ts | 787 ----------------- .../prettier/plugins/powershell/parser.ts | 821 ++++++++++++++++++ .../src/common/prettier/plugins/toml/index.ts | 72 ++ .../src/common/prettier/plugins/toml/loc.ts | 82 ++ .../prettier/plugins/toml/printer-utils.ts | 284 ++++++ .../common/prettier/plugins/toml/printer.ts | 413 +++++++++ .../src/common/prettier/plugins/toml/types.ts | 62 ++ frontend/src/stores/themeStore.ts | 4 + .../codeblock/lang-parser/languages.ts | 2 +- .../src/views/settings/pages/TestPage.vue | 531 +++++++++++ 20 files changed, 4635 insertions(+), 912 deletions(-) create mode 100644 frontend/src/common/prettier/plugins/powershell/ast.ts create mode 100644 frontend/src/common/prettier/plugins/powershell/code-generator.ts create mode 100644 frontend/src/common/prettier/plugins/powershell/formatter-rules.ts create mode 100644 frontend/src/common/prettier/plugins/powershell/lexer.ts delete mode 100644 frontend/src/common/prettier/plugins/powershell/parse.ts create mode 100644 frontend/src/common/prettier/plugins/powershell/parser.ts create mode 100644 frontend/src/common/prettier/plugins/toml/index.ts create mode 100644 frontend/src/common/prettier/plugins/toml/loc.ts create mode 100644 frontend/src/common/prettier/plugins/toml/printer-utils.ts create mode 100644 frontend/src/common/prettier/plugins/toml/printer.ts create mode 100644 frontend/src/common/prettier/plugins/toml/types.ts diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3941872..4aafb22 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -42,6 +42,8 @@ "@lezer/lr": "^1.4.2", "@prettier/plugin-xml": "^3.4.2", "@reteps/dockerfmt": "^0.3.6", + "@toml-tools/lexer": "^1.0.0", + "@toml-tools/parser": "^1.0.0", "codemirror": "^6.0.2", "codemirror-lang-elixir": "^4.0.0", "colors-named": "^1.0.2", @@ -52,14 +54,12 @@ "java-parser": "^3.0.1", "jinx-rust": "^0.1.6", "jsox": "^1.2.123", - "lezer": "^0.13.5", "linguist-languages": "^9.0.0", "node-sql-parser": "^5.3.12", "php-parser": "^3.2.5", "pinia": "^3.0.3", "pinia-plugin-persistedstate": "^4.5.0", "prettier": "^3.6.2", - "prettier-plugin-toml": "^2.0.6", "remarkable": "^2.0.1", "sass": "^1.92.1", "sh-syntax": "^0.5.8", @@ -2236,19 +2236,23 @@ "win32" ] }, - "node_modules/@taplo/core": { - "version": "0.2.0", - "resolved": "https://registry.npmmirror.com/@taplo/core/-/core-0.2.0.tgz", - "integrity": "sha512-r8bl54Zj1In3QLkiW/ex694bVzpPJ9EhwqT9xkcUVODnVUGirdB1JTsmiIv0o1uwqZiwhi8xNnTOQBRQCpizrQ==", - "license": "MIT" - }, - "node_modules/@taplo/lib": { - "version": "0.5.0", - "resolved": "https://registry.npmmirror.com/@taplo/lib/-/lib-0.5.0.tgz", - "integrity": "sha512-+xIqpQXJco3T+VGaTTwmhxLa51qpkQxCjRwezjFZgr+l21ExlywJFcDfTrNmL6lG6tqb0h8GyJKO3UPGPtSCWg==", + "node_modules/@toml-tools/lexer": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@toml-tools/lexer/-/lexer-1.0.0.tgz", + "integrity": "sha512-rVoOC9FibF2CICwCBWQnYcjAEOmLCJExer178K2AsY0Nk9FjJNVoVJuR5UAtuq42BZOajvH+ainf6Gj2GpCnXQ==", "license": "MIT", "dependencies": { - "@taplo/core": "^0.2.0" + "chevrotain": "^11.0.1" + } + }, + "node_modules/@toml-tools/parser": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@toml-tools/parser/-/parser-1.0.0.tgz", + "integrity": "sha512-j8cd3A3ccLHppGoWI69urbiVJslrpwI6sZ61ySDUPxM/FTkQWRx/JkkF8aipnl0Ds0feWXyjyvmWzn70mIohYg==", + "license": "MIT", + "dependencies": { + "@toml-tools/lexer": "^1.0.0", + "chevrotain": "^11.0.1" } }, "node_modules/@types/estree": { @@ -5127,16 +5131,6 @@ "node": ">= 0.8.0" } }, - "node_modules/lezer": { - "version": "0.13.5", - "resolved": "https://registry.npmmirror.com/lezer/-/lezer-0.13.5.tgz", - "integrity": "sha512-cAiMQZGUo2BD8mpcz7Nv1TlKzWP7YIdIRrX41CiP5bk5t4GHxskOxWUx2iAOuHlz8dO+ivbuXr0J1bfHsWD+lQ==", - "deprecated": "This package has been replaced by @lezer/lr", - "license": "MIT", - "dependencies": { - "lezer-tree": "^0.13.2" - } - }, "node_modules/lezer-elixir": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/lezer-elixir/-/lezer-elixir-1.1.2.tgz", @@ -5146,13 +5140,6 @@ "@lezer/lr": "^1.3.0" } }, - "node_modules/lezer-tree": { - "version": "0.13.2", - "resolved": "https://registry.npmmirror.com/lezer-tree/-/lezer-tree-0.13.2.tgz", - "integrity": "sha512-15ZxW8TxVNAOkHIo43Iouv4zbSkQQ5chQHBpwXcD2bBFz46RB4jYLEEww5l1V0xyIx9U2clSyyrLes+hAUFrGQ==", - "deprecated": "This package has been replaced by @lezer/common", - "license": "MIT" - }, "node_modules/linguist-languages": { "version": "9.0.0", "resolved": "https://registry.npmmirror.com/linguist-languages/-/linguist-languages-9.0.0.tgz", @@ -6004,24 +5991,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-plugin-toml": { - "version": "2.0.6", - "resolved": "https://registry.npmmirror.com/prettier-plugin-toml/-/prettier-plugin-toml-2.0.6.tgz", - "integrity": "sha512-12N/wBuHa9jd/KVy9pRP20NMKxQfQLMseQCt66lIbLaPLItvGUcSIryE1eZZMJ7loSws6Ig3M2Elc2EreNh76w==", - "license": "MIT", - "dependencies": { - "@taplo/lib": "^0.5.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - }, - "peerDependencies": { - "prettier": "^3.0.3" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz", diff --git a/frontend/package.json b/frontend/package.json index 7ca1cac..ac9cd5e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -46,6 +46,8 @@ "@lezer/lr": "^1.4.2", "@prettier/plugin-xml": "^3.4.2", "@reteps/dockerfmt": "^0.3.6", + "@toml-tools/lexer": "^1.0.0", + "@toml-tools/parser": "^1.0.0", "codemirror": "^6.0.2", "codemirror-lang-elixir": "^4.0.0", "colors-named": "^1.0.2", @@ -56,14 +58,12 @@ "java-parser": "^3.0.1", "jinx-rust": "^0.1.6", "jsox": "^1.2.123", - "lezer": "^0.13.5", "linguist-languages": "^9.0.0", "node-sql-parser": "^5.3.12", "php-parser": "^3.2.5", "pinia": "^3.0.3", "pinia-plugin-persistedstate": "^4.5.0", "prettier": "^3.6.2", - "prettier-plugin-toml": "^2.0.6", "remarkable": "^2.0.1", "sass": "^1.92.1", "sh-syntax": "^0.5.8", diff --git a/frontend/public/go.wasm b/frontend/public/go.wasm index 9d16000f7d2dc07e5027eacfd25acac01bc76e1f..10a967e6c0bf2d79606226da6752f4920b96367d 100644 GIT binary patch delta 271802 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Π;W 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
=HZcRgoYPu#nnv$ZGQR?oT8 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 gMZsftrko?v=2!k{zF&|?P7kQp;mO;w`u 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%0DAWhM+71g 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≷XL9a}E{Zp99|hToXATr$Trg_EUS*YfLM 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 sQW2FBhR)hi1i2fnd@7_ODxoqXnHFl8 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%0DrsucezD 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 { // Browser Go runtime initialization const initGoRuntimeBrowser = async () => { - if (globalThis.Go) return; - + // 总是重新初始化,因为可能存在版本不兼容问题 try { - // Load wasm_exec.js dynamically in browser + // 移除旧的 Go 运行时 + delete globalThis.Go; + + // 动态导入本地的 wasm_exec.js 内容 + const wasmExecResponse = await fetch('/wasm_exec.js'); + if (!wasmExecResponse.ok) { + throw new Error(`Failed to fetch wasm_exec.js: ${wasmExecResponse.status}`); + } + + const wasmExecCode = await wasmExecResponse.text(); + + // 在全局作用域中执行 wasm_exec.js 代码 const script = document.createElement('script'); - script.src = '/wasm_exec.js'; + script.textContent = wasmExecCode; document.head.appendChild(script); - - await new Promise((resolve, reject) => { - script.onload = resolve; - script.onerror = () => reject(new Error('Failed to load wasm_exec.js')); - }); + + // 等待一小段时间确保脚本执行完成 + await new Promise(resolve => setTimeout(resolve, 100)); if (!globalThis.Go) { - throw new Error('Go WASM runtime not available after loading wasm_exec.js'); + throw new Error('Go WASM runtime not available after executing wasm_exec.js'); } + + console.log('Go runtime initialized successfully'); } catch (error) { console.error('Browser Go runtime initialization failed:', error); throw error; @@ -108,37 +118,70 @@ const initialize = async () => { initializePromise = (async () => { let wasmBuffer; + console.log('Starting Go WASM initialization...'); + // Environment-specific initialization if (isNode()) { + console.log('Initializing for Node.js environment'); await initGoRuntimeNode(); wasmBuffer = await loadWasmNode(); } else if (isBrowser()) { + console.log('Initializing for Browser environment'); await initGoRuntimeBrowser(); wasmBuffer = await loadWasmBrowser(); } else { throw new Error('Unsupported environment: neither Node.js nor Browser detected'); } + console.log('Creating Go instance...'); const go = new globalThis.Go(); - const { instance } = await WebAssembly.instantiate(wasmBuffer, go.importObject); - - // Run Go program (don't await as it's a long-running service) - go.run(instance).catch(err => { - console.error('Go WASM program exit error:', err); - }); + + // 详细检查 importObject + console.log('Go import object keys:', Object.keys(go.importObject)); + if (go.importObject.gojs) { + console.log('gojs import keys:', Object.keys(go.importObject.gojs)); + console.log('scheduleTimeoutEvent type:', typeof go.importObject.gojs['runtime.scheduleTimeoutEvent']); + } + + console.log('Instantiating WebAssembly module...'); + + try { + const { instance } = await WebAssembly.instantiate(wasmBuffer, go.importObject); + console.log('WebAssembly instantiation successful'); + + console.log('Running Go program...'); + // Run Go program (don't await as it's a long-running service) + go.run(instance).catch(err => { + console.error('Go WASM program exit error:', err); + }); + } catch (instantiateError) { + console.error('WebAssembly instantiation failed:', instantiateError); + console.error('Error details:', { + message: instantiateError.message, + name: instantiateError.name, + stack: instantiateError.stack + }); + throw instantiateError; + } // Wait for Go program to initialize and expose formatGo function + console.log('Waiting for formatGo function to be available...'); let retries = 0; - const maxRetries = 10; + const maxRetries = 20; // 增加重试次数 while (typeof globalThis.formatGo !== 'function' && retries < maxRetries) { - await new Promise(resolve => setTimeout(resolve, 100)); + await new Promise(resolve => setTimeout(resolve, 200)); // 增加等待时间 retries++; + if (retries % 5 === 0) { + console.log(`Waiting for formatGo function... (${retries}/${maxRetries})`); + } } if (typeof globalThis.formatGo !== 'function') { - throw new Error('Go WASM module not properly initialized - formatGo function not available'); + throw new Error('Go WASM module not properly initialized - formatGo function not available after 20 retries'); } + + console.log('Go WASM initialization completed successfully'); })(); return initializePromise; @@ -147,14 +190,14 @@ const initialize = async () => { export const languages = [ { name: "Go", - parsers: ["go"], + parsers: ["go-format"], extensions: [".go"], vscodeLanguageIds: ["go"], }, ]; export const parsers = { - go: { + "go-format": { parse: (text) => text, astFormat: "go-format", locStart: (node) => 0, @@ -164,23 +207,35 @@ export const parsers = { export const printers = { "go-format": { - print: async (path) => { - await initialize(); + print: (path) => { const text = path.getValue(); if (typeof globalThis.formatGo !== 'function') { - throw new Error('Go WASM module not properly initialized - formatGo function missing'); + // 如果 formatGo 函数不可用,尝试初始化 + initialize().then(() => { + // 初始化完成后,formatGo 应该可用 + }).catch(err => { + console.error('Go WASM initialization failed:', err); + }); + + // 如果还是不可用,返回原始文本 + return text; } try { return globalThis.formatGo(text); } catch (error) { - throw new Error(`Go formatting failed: ${error.message}`); + console.error('Go formatting failed:', error); + // 返回原始文本而不是抛出错误 + return text; } }, }, }; +// Export initialize function for manual initialization +export { initialize }; + // Default export for Prettier plugin compatibility export default { languages, diff --git a/frontend/src/common/prettier/plugins/go/go.wasm b/frontend/src/common/prettier/plugins/go/go.wasm index 9d16000f7d2dc07e5027eacfd25acac01bc76e1f..10a967e6c0bf2d79606226da6752f4920b96367d 100644 GIT binary patch delta 271802 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Π;W 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
=HZcRgoYPu#nnv$ZGQR?oT8 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 gMZsftrko?v=2!k{zF&|?P7kQp;mO;w`u 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%0DAWhM+71g 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≷XL9a}E{Zp99|hToXATr$Trg_EUS*YfLM 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 sQW2FBhR)hi1i2fnd@7_ODxoqXnHFl8 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%0DrsucezD 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 { + visitScriptBlock(node: ScriptBlockAst): T; + visitPipeline(node: PipelineAst): T; + visitCommand(node: CommandAst): T; + visitAssignment(node: AssignmentAst): T; + visitVariable(node: VariableAst): T; + visitLiteral(node: LiteralAst): T; + visitBinaryExpression(node: BinaryExpressionAst): T; + visitIfStatement(node: IfStatementAst): T; + visitFunctionDefinition(node: FunctionDefinitionAst): T; + visitComment(node: CommentAst): T; +} + +// AST遍历工具类 +export class ASTTraverser { + static traverse(node: ASTNode, visitor: Partial>): T | undefined { + switch (node.type) { + case 'ScriptBlock': + return visitor.visitScriptBlock?.(node as ScriptBlockAst); + case 'Pipeline': + return visitor.visitPipeline?.(node as PipelineAst); + case 'Command': + return visitor.visitCommand?.(node as CommandAst); + case 'Assignment': + return visitor.visitAssignment?.(node as AssignmentAst); + case 'Variable': + return visitor.visitVariable?.(node as VariableAst); + case 'Literal': + return visitor.visitLiteral?.(node as LiteralAst); + case 'BinaryExpression': + return visitor.visitBinaryExpression?.(node as BinaryExpressionAst); + case 'IfStatement': + return visitor.visitIfStatement?.(node as IfStatementAst); + case 'FunctionDefinition': + return visitor.visitFunctionDefinition?.(node as FunctionDefinitionAst); + case 'Comment': + return visitor.visitComment?.(node as CommentAst); + default: + return undefined; + } + } +} diff --git a/frontend/src/common/prettier/plugins/powershell/code-generator.ts b/frontend/src/common/prettier/plugins/powershell/code-generator.ts new file mode 100644 index 0000000..ee80bf1 --- /dev/null +++ b/frontend/src/common/prettier/plugins/powershell/code-generator.ts @@ -0,0 +1,566 @@ +/** + * PowerShell 代码生成器 + * 遍历AST并根据格式化规则生成格式化的PowerShell代码 + */ + +import { + ASTNode, + ScriptBlockAst, + StatementAst, + ExpressionAst, + PipelineAst, + CommandAst, + AssignmentAst, + VariableAst, + LiteralAst, + BinaryExpressionAst, + IfStatementAst, + FunctionDefinitionAst, + ParameterAst, + CommentAst, + PipelineElementAst, + ElseIfClauseAst, + ASTTraverser +} from './ast'; +import { FormatterRules, FormatterOptions } from './formatter-rules'; + +export class PowerShellCodeGenerator { + private rules: FormatterRules; + private indentLevel: number = 0; + private output: string[] = []; + private currentLineLength: number = 0; + private needsNewline: boolean = false; + private lastWasComment: boolean = false; + + constructor(options: Partial = {}) { + this.rules = new FormatterRules(options); + } + + /** + * 生成格式化的PowerShell代码 + */ + public generate(ast: ScriptBlockAst, comments: CommentAst[] = []): string { + this.output = []; + this.indentLevel = 0; + this.currentLineLength = 0; + this.needsNewline = false; + this.lastWasComment = false; + + // 首先处理文档开头的注释 + this.generateLeadingComments(comments); + + // 生成主体代码 + this.generateScriptBlock(ast); + + // 处理文档末尾 + this.handleFinalNewline(); + + const result = this.output.join(''); + return this.postProcess(result); + } + + private generateScriptBlock(node: ScriptBlockAst): void { + for (let i = 0; i < node.statements.length; i++) { + const statement = node.statements[i]; + const nextStatement = i < node.statements.length - 1 ? node.statements[i + 1] : null; + + this.generateStatement(statement); + + // 在语句之间添加适当的空行 + if (nextStatement) { + this.addStatementSeparation(statement, nextStatement); + } + } + } + + private generateStatement(statement: StatementAst): void { + switch (statement.type) { + case 'Pipeline': + this.generatePipeline(statement as PipelineAst); + break; + case 'Assignment': + this.generateAssignment(statement as AssignmentAst); + break; + case 'IfStatement': + this.generateIfStatement(statement as IfStatementAst); + break; + case 'FunctionDefinition': + this.generateFunctionDefinition(statement as FunctionDefinitionAst); + break; + case 'RawText': + // 处理解析失败时的原始文本 + this.append((statement as any).value); + return; // 不需要添加额外的换行 + default: + this.append(`/* Unsupported statement type: ${statement.type} */`); + break; + } + + this.ensureNewline(); + } + + private generatePipeline(pipeline: PipelineAst): void { + if (!this.rules.formatPipelines) { + // 简单连接所有元素 + for (let i = 0; i < pipeline.elements.length; i++) { + if (i > 0) { + this.append(' | '); + } + this.generatePipelineElement(pipeline.elements[i]); + } + return; + } + + const style = this.rules.getPipelineStyle(pipeline.elements.length); + + if (style === 'multiline') { + this.generateMultilinePipeline(pipeline); + } else { + this.generateOnelinePipeline(pipeline); + } + } + + private generateOnelinePipeline(pipeline: PipelineAst): void { + for (let i = 0; i < pipeline.elements.length; i++) { + if (i > 0) { + this.append(' | '); + } + this.generatePipelineElement(pipeline.elements[i]); + } + } + + private generateMultilinePipeline(pipeline: PipelineAst): void { + for (let i = 0; i < pipeline.elements.length; i++) { + if (i > 0) { + this.appendLine(' |'); + this.appendIndent(); + } + this.generatePipelineElement(pipeline.elements[i]); + } + } + + private generatePipelineElement(element: PipelineElementAst): void { + this.generateExpression(element.expression); + } + + private generateExpression(expression: ExpressionAst): void { + switch (expression.type) { + case 'Command': + this.generateCommand(expression as CommandAst); + break; + case 'Variable': + this.generateVariable(expression as VariableAst); + break; + case 'Literal': + this.generateLiteral(expression as LiteralAst); + break; + case 'BinaryExpression': + this.generateBinaryExpression(expression as BinaryExpressionAst); + break; + case 'ParenthesizedExpression': + this.append('('); + this.generateExpression((expression as any).expression); + this.append(')'); + break; + case 'Array': + this.generateArray(expression as any); + break; + case 'Hashtable': + this.generateHashtable(expression as any); + break; + case 'ScriptBlockExpression': + this.generateScriptBlockExpression(expression as any); + break; + default: + this.append(`/* Unsupported expression type: ${expression.type} */`); + break; + } + } + + private generateCommand(command: CommandAst): void { + // 保持cmdlet名称的连字符,不进行破坏性的格式化 + let commandName = command.commandName; + + // 只有在明确指定要改变大小写时才进行格式化 + // 但绝对不能删除连字符 + if (this.rules.shouldFormatCommandCase()) { + commandName = this.rules.formatCommandCase(commandName); + } + + this.append(commandName); + + // 生成参数 + for (const param of command.parameters) { + this.append(' '); + this.generateParameter(param); + } + + // 生成位置参数 + for (const arg of command.arguments) { + this.append(' '); + this.generateExpression(arg); + } + } + + private generateParameter(parameter: ParameterAst): void { + const paramName = this.rules.formatParameterCase(parameter.name); + this.append(paramName); + + if (parameter.value) { + this.append(' '); + this.generateExpression(parameter.value); + } + } + + private generateVariable(variable: VariableAst): void { + const formattedName = this.rules.formatVariableCase(variable.name); + this.append(formattedName); + } + + private generateLiteral(literal: LiteralAst): void { + if (literal.literalType === 'String') { + const formattedString = this.rules.formatQuotes(literal.value as string); + this.append(formattedString); + } else { + this.append(String(literal.value)); + } + } + + private generateBinaryExpression(expression: BinaryExpressionAst): void { + this.generateExpression(expression.left); + + // 根据PowerShell官方规范,属性访问操作符绝对不能加空格 + if (expression.operator === '.' || + expression.operator === '::' || + expression.operator === '[' || + expression.operator === ']' || + expression.operator === '@{') { + // 属性访问是PowerShell面向对象的核心,必须保持紧凑 + this.append(expression.operator); + } else { + // 使用格式化规则处理其他操作符 + const formattedOperator = this.rules.formatOperatorSpacing(expression.operator); + this.append(formattedOperator); + } + + this.generateExpression(expression.right); + } + + private generateAssignment(assignment: AssignmentAst): void { + this.generateExpression(assignment.left); + + const formattedOperator = this.rules.formatOperatorSpacing(assignment.operator); + this.append(formattedOperator); + + this.generateExpression(assignment.right); + } + + private generateIfStatement(ifStmt: IfStatementAst): void { + // if 条件 + this.append('if '); + this.append(this.rules.formatParentheses('')); + this.append('('); + this.generateExpression(ifStmt.condition); + this.append(')'); + + // if 主体 + this.append(this.rules.getBraceStart()); + this.appendLine(''); + this.indent(); + this.generateScriptBlock(ifStmt.ifBody); + this.outdent(); + this.appendIndent(); + this.append('}'); + + // elseif 子句 + for (const elseIfClause of ifStmt.elseIfClauses) { + this.generateElseIfClause(elseIfClause); + } + + // else 子句 + if (ifStmt.elseBody) { + this.append(' else'); + this.append(this.rules.getBraceStart()); + this.appendLine(''); + this.indent(); + this.generateScriptBlock(ifStmt.elseBody); + this.outdent(); + this.appendIndent(); + this.append('}'); + } + } + + private generateElseIfClause(elseIf: ElseIfClauseAst): void { + this.append(' elseif ('); + this.generateExpression(elseIf.condition); + this.append(')'); + this.append(this.rules.getBraceStart()); + this.appendLine(''); + this.indent(); + this.generateScriptBlock(elseIf.body); + this.outdent(); + this.appendIndent(); + this.append('}'); + } + + private generateFunctionDefinition(func: FunctionDefinitionAst): void { + // 函数前的空行 + if (this.rules.blankLinesAroundFunctions > 0) { + for (let i = 0; i < this.rules.blankLinesAroundFunctions; i++) { + this.appendLine(''); + } + } + + this.append('function '); + this.append(func.name); + + // 参数列表 + if (func.parameters.length > 0) { + this.append('('); + for (let i = 0; i < func.parameters.length; i++) { + if (i > 0) { + this.append(this.rules.formatComma()); + } + this.generateParameter(func.parameters[i]); + } + this.append(')'); + } + + // 函数体 + this.append(this.rules.getBraceStart()); + this.appendLine(''); + this.indent(); + this.generateScriptBlock(func.body); + this.outdent(); + this.appendIndent(); + this.append('}'); + + // 函数后的空行 + if (this.rules.blankLinesAroundFunctions > 0) { + for (let i = 0; i < this.rules.blankLinesAroundFunctions; i++) { + this.appendLine(''); + } + } + } + + private generateLeadingComments(comments: CommentAst[]): void { + const leadingComments = comments.filter(c => this.isLeadingComment(c)); + for (const comment of leadingComments) { + this.generateComment(comment); + this.appendLine(''); + } + } + + private generateComment(comment: CommentAst): void { + if (!this.rules.formatComments) { + this.append(comment.text); + return; + } + + if (comment.isMultiline) { + this.generateMultilineComment(comment.text); + } else { + this.generateSingleLineComment(comment.text); + } + + this.lastWasComment = true; + } + + private generateArray(arrayExpr: any): void { + this.append('@('); + if (arrayExpr.elements && arrayExpr.elements.length > 0) { + for (let i = 0; i < arrayExpr.elements.length; i++) { + if (i > 0) { + this.append(this.rules.formatComma()); + } + this.generateExpression(arrayExpr.elements[i]); + } + } + this.append(')'); + } + + private generateHashtable(hashtableExpr: any): void { + this.append('@{'); + + if (hashtableExpr.entries && hashtableExpr.entries.length > 0) { + // 强制使用紧凑格式,避免换行问题 + for (let i = 0; i < hashtableExpr.entries.length; i++) { + const entry = hashtableExpr.entries[i]; + + this.generateExpression(entry.key); + this.append('='); + this.generateExpression(entry.value); + + // 如果不是最后一个条目,添加分号和空格 + if (i < hashtableExpr.entries.length - 1) { + this.append('; '); + } + } + } + + this.append('}'); + } + + private generateScriptBlockExpression(scriptBlockExpr: any): void { + this.append('{'); + + // 对原始内容应用基本的格式化规则 + if (scriptBlockExpr.rawContent) { + const formattedContent = this.formatScriptBlockContent(scriptBlockExpr.rawContent); + this.append(formattedContent); + } else if (scriptBlockExpr.expression) { + // 兼容旧格式 + this.generateExpression(scriptBlockExpr.expression); + } + + this.append('}'); + } + + private formatScriptBlockContent(content: string): string { + if (!content || !content.trim()) { + return content; + } + + // 应用PowerShell官方规范的格式化规则 + let formatted = content.trim(); + + // 1. 保护所有属性访问操作符 - 这是最关键的 + // 匹配所有形式的属性访问:$var.Property, $_.Property, $obj.Method.Property等 + formatted = formatted.replace(/(\$[a-zA-Z_][a-zA-Z0-9_]*|\$_)\s*\.\s*([a-zA-Z_][a-zA-Z0-9_]*)/g, '$1.$2'); + + // 2. 保护方法调用中的点号 + formatted = formatted.replace(/(\w)\s*\.\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\(/g, '$1.$2('); + + // 3. 确保数字单位不被分离 + formatted = formatted.replace(/(\d+)\s*(KB|MB|GB|TB|PB)/gi, '$1$2'); + + // 4. PowerShell比较和逻辑操作符需要前后空格 + const powershellOps = [ + '-eq', '-ne', '-lt', '-le', '-gt', '-ge', + '-like', '-notlike', '-match', '-notmatch', + '-contains', '-notcontains', '-in', '-notin', + '-is', '-isnot', '-as', '-and', '-or', '-not', '-xor' + ]; + + for (const op of powershellOps) { + const regex = new RegExp(`\\s*${op.replace('-', '\\-')}\\s*`, 'gi'); + formatted = formatted.replace(regex, ` ${op} `); + } + + // 5. 清理多余空格,但保护属性访问 + formatted = formatted.replace(/\s{2,}/g, ' ').trim(); + + // 6. 最终检查:确保没有属性访问被破坏 + formatted = formatted.replace(/(\$\w+|\$_)\s+\.\s*/g, '$1.'); + + return formatted; + } + + + private generateSingleLineComment(text: string): void { + // 确保单行注释以 # 开头 + const cleanText = text.startsWith('#') ? text : `# ${text}`; + this.append(cleanText); + } + + private generateMultilineComment(text: string): void { + // 多行注释保持原格式 + this.append(text); + } + + private isLeadingComment(comment: CommentAst): boolean { + // 简单判断:如果注释在文档开头,就认为是前导注释 + return comment.line <= 3; + } + + private addStatementSeparation(current: StatementAst, next: StatementAst): void { + // 函数之间添加空行 + if (current.type === 'FunctionDefinition' || next.type === 'FunctionDefinition') { + this.appendLine(''); + } + + // 控制结构前添加空行 + if (next.type === 'IfStatement' && !this.lastWasComment) { + this.appendLine(''); + } + } + + private handleFinalNewline(): void { + if (this.rules.insertFinalNewline && this.output.length > 0) { + const lastLine = this.output[this.output.length - 1]; + if (!lastLine.endsWith(this.rules.getNewline())) { + this.appendLine(''); + } + } + } + + private postProcess(code: string): string { + let result = code; + + // 清理多余的空行 + if (this.rules.maxConsecutiveEmptyLines >= 0) { + const maxEmpty = this.rules.maxConsecutiveEmptyLines; + const emptyLinePattern = new RegExp(`(${this.rules.getNewline()}){${maxEmpty + 2},}`, 'g'); + const replacement = this.rules.getNewline().repeat(maxEmpty + 1); + result = result.replace(emptyLinePattern, replacement); + } + + // 清理行尾空白 + if (this.rules.trimTrailingWhitespace) { + result = result.replace(/ +$/gm, ''); + } + + return result; + } + + // 辅助方法 + private append(text: string): void { + this.output.push(text); + this.currentLineLength += text.length; + this.needsNewline = false; + this.lastWasComment = false; + } + + private appendLine(text: string): void { + this.output.push(text + this.rules.getNewline()); + this.currentLineLength = 0; + this.needsNewline = false; + this.lastWasComment = false; + } + + private appendIndent(): void { + const indent = this.rules.getIndent(this.indentLevel); + this.append(indent); + } + + private ensureNewline(): void { + if (!this.needsNewline) { + this.appendLine(''); + this.needsNewline = true; + } + } + + private indent(): void { + this.indentLevel++; + } + + private outdent(): void { + this.indentLevel = Math.max(0, this.indentLevel - 1); + } + + private shouldWrapLine(): boolean { + return this.currentLineLength > this.rules.printWidth; + } +} + +/** + * 便捷函数:格式化PowerShell AST + */ +export function formatPowerShellAST( + ast: ScriptBlockAst, + comments: CommentAst[] = [], + options: Partial = {} +): string { + const generator = new PowerShellCodeGenerator(options); + return generator.generate(ast, comments); +} diff --git a/frontend/src/common/prettier/plugins/powershell/formatter-rules.ts b/frontend/src/common/prettier/plugins/powershell/formatter-rules.ts new file mode 100644 index 0000000..b589d76 --- /dev/null +++ b/frontend/src/common/prettier/plugins/powershell/formatter-rules.ts @@ -0,0 +1,440 @@ +/** + * PowerShell 格式化规则引擎 + * 定义各种可配置的代码格式化规则和策略 + */ + +export interface FormatterOptions { + // 基本格式化选项 + indentSize: number; // 缩进大小 + useTabsForIndentation: boolean; // 使用制表符还是空格 + printWidth: number; // 行最大长度 + endOfLine: 'lf' | 'crlf' | 'cr' | 'auto'; // 行尾符类型 + + // 空格和间距 + spaceAroundOperators: boolean; // 操作符周围的空格 + spaceAfterCommas: boolean; // 逗号后的空格 + spaceAfterSemicolons: boolean; // 分号后的空格 + spaceInsideParentheses: boolean; // 括号内的空格 + spaceInsideBrackets: boolean; // 方括号内的空格 + spaceInsideBraces: boolean; // 大括号内的空格 + + // 换行和空行 + maxConsecutiveEmptyLines: number; // 最大连续空行数 + insertFinalNewline: boolean; // 文件末尾插入换行符 + trimTrailingWhitespace: boolean; // 删除行尾空白 + blankLinesAroundFunctions: number; // 函数前后的空行数 + blankLinesAroundClasses: number; // 类前后的空行数 + blankLinesAroundIfStatements: boolean; // if语句前后的空行 + + // 括号和大括号 + braceStyle: 'allman' | 'otbs' | 'stroustrup'; // 大括号风格 + alwaysParenthesizeArrowFunctions: boolean; // 箭头函数总是用括号 + + // PowerShell特定选项 + formatPipelines: boolean; // 格式化管道 + pipelineStyle: 'oneline' | 'multiline' | 'auto'; // 管道风格 + formatParameters: boolean; // 格式化参数 + parameterAlignment: 'left' | 'right' | 'auto'; // 参数对齐方式 + formatHashtables: boolean; // 格式化哈希表 + hashtableStyle: 'compact' | 'expanded'; // 哈希表风格 + formatArrays: boolean; // 格式化数组 + arrayStyle: 'compact' | 'expanded'; // 数组风格 + formatComments: boolean; // 格式化注释 + commentAlignment: 'left' | 'preserve'; // 注释对齐方式 + + // 命名和大小写 + preferredCommandCase: 'lowercase' | 'uppercase' | 'pascalcase' | 'preserve'; // 命令大小写 + preferredParameterCase: 'lowercase' | 'uppercase' | 'pascalcase' | 'preserve'; // 参数大小写 + preferredVariableCase: 'camelcase' | 'pascalcase' | 'preserve'; // 变量大小写 + + // 引号和字符串 + quotestyle: 'single' | 'double' | 'preserve'; // 引号风格 + escapeNonAscii: boolean; // 转义非ASCII字符 + + // 长度和换行 + wrapLongLines: boolean; // 自动换行长行 + wrapParameters: boolean; // 换行长参数列表 + wrapArrays: boolean; // 换行长数组 + wrapHashtables: boolean; // 换行长哈希表 +} + +export const DEFAULT_OPTIONS: FormatterOptions = { + // 基本选项 + indentSize: 4, + useTabsForIndentation: false, + printWidth: 120, + endOfLine: 'auto', + + // 空格设置 + spaceAroundOperators: true, + spaceAfterCommas: true, + spaceAfterSemicolons: true, + spaceInsideParentheses: false, + spaceInsideBrackets: false, + spaceInsideBraces: true, + + // 空行设置 + maxConsecutiveEmptyLines: 2, + insertFinalNewline: true, + trimTrailingWhitespace: true, + blankLinesAroundFunctions: 1, + blankLinesAroundClasses: 1, + blankLinesAroundIfStatements: false, + + // 括号风格 + braceStyle: 'otbs', // One True Brace Style + alwaysParenthesizeArrowFunctions: false, + + // PowerShell特定 + formatPipelines: true, + pipelineStyle: 'auto', + formatParameters: true, + parameterAlignment: 'left', + formatHashtables: true, + hashtableStyle: 'compact', + formatArrays: true, + arrayStyle: 'compact', + formatComments: true, + commentAlignment: 'preserve', + + // 命名约定 + preferredCommandCase: 'pascalcase', + preferredParameterCase: 'preserve', + preferredVariableCase: 'preserve', + + // 字符串设置 + quotestyle: 'preserve', + escapeNonAscii: false, + + // 长度处理 + wrapLongLines: true, + wrapParameters: true, + wrapArrays: true, + wrapHashtables: true +}; + +/** + * 格式化规则类,包含各种格式化策略的实现 + */ +export class FormatterRules { + private options: FormatterOptions; + + constructor(options: Partial = {}) { + this.options = { ...DEFAULT_OPTIONS, ...options }; + } + + /** + * 获取缩进字符串 + */ + getIndent(level: number): string { + if (level <= 0) return ''; + + const indentChar = this.options.useTabsForIndentation ? '\t' : ' '; + const indentSize = this.options.useTabsForIndentation ? 1 : this.options.indentSize; + + return indentChar.repeat(level * indentSize); + } + + /** + * 获取换行符 + */ + getNewline(): string { + switch (this.options.endOfLine) { + case 'lf': return '\n'; + case 'crlf': return '\r\n'; + case 'cr': return '\r'; + case 'auto': + default: + // 在浏览器环境中默认使用 LF + return '\n'; + } + } + + /** + * 格式化操作符周围的空格 + */ + formatOperatorSpacing(operator: string): string { + if (!this.options.spaceAroundOperators) { + return operator; + } + + // PowerShell语法中绝对不能加空格的操作符(官方规范) + const noSpaceOperators = [ + '.', '::', // 属性访问和静态成员访问 - 这是PowerShell面向对象的核心 + '[', ']', // 数组索引和类型转换 + '(', ')', '{', '}', // 括号 + '@{', // 哈希表字面量开始 + ';', // 哈希表和语句分隔符 + '-', // cmdlet连字符(Get-ChildItem中的-) + '::' // 静态成员访问 + ]; + + if (noSpaceOperators.includes(operator)) { + return operator; + } + + // PowerShell比较操作符需要空格 + const powershellOperators = ['-eq', '-ne', '-lt', '-le', '-gt', '-ge', + '-like', '-notlike', '-match', '-notmatch', + '-contains', '-notcontains', '-in', '-notin', + '-is', '-isnot', '-as', '-and', '-or', '-not', '-xor']; + + if (powershellOperators.some(op => operator.toLowerCase() === op)) { + return ` ${operator} `; + } + + // 算术和赋值操作符需要空格 + const spaceOperators = ['=', '+=', '-=', '*=', '/=', '%=', '+', '*', '/', '%']; + if (spaceOperators.includes(operator)) { + return ` ${operator} `; + } + + return operator; + } + + /** + * 格式化逗号后的空格 + */ + formatComma(): string { + return this.options.spaceAfterCommas ? ', ' : ','; + } + + /** + * 格式化分号后的空格 + */ + formatSemicolon(): string { + return this.options.spaceAfterSemicolons ? '; ' : ';'; + } + + /** + * 格式化括号内的空格 + */ + formatParentheses(content: string): string { + if (this.options.spaceInsideParentheses) { + return `( ${content} )`; + } + return `(${content})`; + } + + /** + * 格式化方括号内的空格 + */ + formatBrackets(content: string): string { + if (this.options.spaceInsideBrackets) { + return `[ ${content} ]`; + } + return `[${content}]`; + } + + /** + * 格式化大括号内的空格 + */ + formatBraces(content: string): string { + if (this.options.spaceInsideBraces) { + return `{ ${content} }`; + } + return `{${content}}`; + } + + /** + * 获取大括号的开始位置 + */ + getBraceStart(): string { + switch (this.options.braceStyle) { + case 'allman': + return this.getNewline() + '{'; + case 'stroustrup': + return this.getNewline() + '{'; + case 'otbs': + default: + return ' {'; + } + } + + /** + * 格式化命令名的大小写 + */ + formatCommandCase(command: string): string { + switch (this.options.preferredCommandCase) { + case 'lowercase': + return command.toLowerCase(); + case 'uppercase': + return command.toUpperCase(); + case 'pascalcase': + return this.toPascalCasePreservingHyphens(command); + case 'preserve': + default: + return command; + } + } + + /** + * 检查是否应该格式化命令大小写 + */ + shouldFormatCommandCase(): boolean { + return this.options.preferredCommandCase !== 'preserve'; + } + + /** + * 格式化参数名的大小写 + */ + formatParameterCase(parameter: string): string { + switch (this.options.preferredParameterCase) { + case 'lowercase': + return parameter.toLowerCase(); + case 'uppercase': + return parameter.toUpperCase(); + case 'pascalcase': + return this.toPascalCase(parameter); + case 'preserve': + default: + return parameter; + } + } + + /** + * 格式化变量名的大小写 + */ + formatVariableCase(variable: string): string { + if (!variable.startsWith('$')) { + return variable; + } + + const variableName = variable.substring(1); + let formattedName: string; + + switch (this.options.preferredVariableCase) { + case 'camelcase': + formattedName = this.toCamelCase(variableName); + break; + case 'pascalcase': + formattedName = this.toPascalCase(variableName); + break; + case 'preserve': + default: + formattedName = variableName; + break; + } + + return '$' + formattedName; + } + + /** + * 格式化字符串引号 + */ + formatQuotes(value: string): string { + if (this.options.quotestyle === 'preserve') { + return value; + } + + const content = this.extractStringContent(value); + + switch (this.options.quotestyle) { + case 'single': + return `'${content.replace(/'/g, "''")}'`; + case 'double': + return `"${content.replace(/"/g, '""')}"`; + default: + return value; + } + } + + /** + * 检查是否需要换行 + */ + shouldWrapLine(line: string): boolean { + return this.options.wrapLongLines && line.length > this.options.printWidth; + } + + /** + * 获取管道样式 + */ + getPipelineStyle(elementCount: number): 'oneline' | 'multiline' { + switch (this.options.pipelineStyle) { + case 'oneline': + return 'oneline'; + case 'multiline': + return 'multiline'; + case 'auto': + default: + return elementCount > 2 ? 'multiline' : 'oneline'; + } + } + + /** + * 获取哈希表样式 + */ + getHashtableStyle(entryCount: number): 'compact' | 'expanded' { + if (this.options.hashtableStyle === 'compact') { + return 'compact'; + } + if (this.options.hashtableStyle === 'expanded') { + return 'expanded'; + } + // auto logic: 对于小型哈希表默认使用compact,避免不必要的换行 + return entryCount > 5 ? 'expanded' : 'compact'; + } + + /** + * 获取数组样式 + */ + getArrayStyle(elementCount: number): 'compact' | 'expanded' { + if (this.options.arrayStyle === 'compact') { + return 'compact'; + } + if (this.options.arrayStyle === 'expanded') { + return 'expanded'; + } + // auto logic could be added here + return elementCount > 5 ? 'expanded' : 'compact'; + } + + // 辅助方法 + private toPascalCase(str: string): string { + return str.split(/[-_\s]/) + .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(''); + } + + /** + * 转换为PascalCase但保留连字符(专门用于PowerShell cmdlet) + */ + private toPascalCasePreservingHyphens(str: string): string { + return str.split('-') + .map(part => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()) + .join('-'); + } + + private toCamelCase(str: string): string { + const pascalCase = this.toPascalCase(str); + return pascalCase.charAt(0).toLowerCase() + pascalCase.slice(1); + } + + private extractStringContent(str: string): string { + if ((str.startsWith('"') && str.endsWith('"')) || + (str.startsWith("'") && str.endsWith("'"))) { + return str.slice(1, -1); + } + return str; + } + + // Getter methods for options + get indentSize(): number { return this.options.indentSize; } + get printWidth(): number { return this.options.printWidth; } + get maxConsecutiveEmptyLines(): number { return this.options.maxConsecutiveEmptyLines; } + get insertFinalNewline(): boolean { return this.options.insertFinalNewline; } + get trimTrailingWhitespace(): boolean { return this.options.trimTrailingWhitespace; } + get blankLinesAroundFunctions(): number { return this.options.blankLinesAroundFunctions; } + get formatPipelines(): boolean { return this.options.formatPipelines; } + get formatParameters(): boolean { return this.options.formatParameters; } + get formatHashtables(): boolean { return this.options.formatHashtables; } + get formatArrays(): boolean { return this.options.formatArrays; } + get formatComments(): boolean { return this.options.formatComments; } + + /** + * 创建规则的副本,可以重写部分选项 + */ + withOptions(overrides: Partial): FormatterRules { + return new FormatterRules({ ...this.options, ...overrides }); + } +} diff --git a/frontend/src/common/prettier/plugins/powershell/index.ts b/frontend/src/common/prettier/plugins/powershell/index.ts index 49d9023..7d595be 100644 --- a/frontend/src/common/prettier/plugins/powershell/index.ts +++ b/frontend/src/common/prettier/plugins/powershell/index.ts @@ -1,20 +1,21 @@ /** - * Prettier Plugin for PowerShell file formatting + * Prettier Plugin for PowerShell file formatting - Modular Version * * This plugin provides support for formatting PowerShell files (.ps1, .psm1, .psd1) - * using PowerShell's native AST parser for accurate syntax analysis. + * using a modular architecture with lexer, parser, AST, and code generator. */ import type { Plugin, Parser, Printer, AstPath, Doc } from 'prettier'; -import parse, { formatPowerShellCode } from './parse'; +import { PowerShellLexer } from './lexer'; +import { PowerShellParser } from './parser'; +import { ScriptBlockAst, CommentAst } from './ast'; +import { formatPowerShellAST } from './code-generator'; +import { FormatterOptions, DEFAULT_OPTIONS } from './formatter-rules'; -// PowerShell AST节点接口 -interface PowerShellAstNode { - type: string; - value: string; - start?: number; - end?: number; - parent?: PowerShellAstNode; - extent?: any; +// PowerShell格式化结果接口 +interface PowerShellParseResult { + ast: ScriptBlockAst; + comments: CommentAst[]; + originalText: string; } const parserName = 'powershell'; @@ -35,62 +36,159 @@ const languages = [ ]; // 解析器配置 -const powershellParser: Parser = { - parse, +const powershellParser: Parser = { + parse: parseCode, astFormat: 'powershell', - locStart: () => 0, - locEnd: () => 0, + locStart: (node: PowerShellParseResult) => 0, + locEnd: (node: PowerShellParseResult) => node.originalText.length, }; -const printPosh = (path: AstPath, options: any, print: any): Doc => { - const pathNode = path.node; - - if (Array.isArray(pathNode)) { - return pathNode.map(node => handleAst(node, path, options, print)).join('\n'); - } - - return handleAst(pathNode, path, options, print); -}; - -const handleAst = (node: PowerShellAstNode, path: AstPath, options: any, print: any): Doc => { - if (typeof node === 'undefined') { - return ''; - } - - // 使用修复后的PowerShell格式化器 +/** + * 解析PowerShell代码 + */ +async function parseCode(text: string, parsers?: any, options?: any): Promise { try { - const formattedCode = formatPowerShellCode(node.value, { - indentSize: options.tabWidth || 4, - useTabsForIndentation: options.useTabs || false, - printWidth: options.printWidth || 120, + // 词法分析 + const lexer = new PowerShellLexer(text); + const tokens = lexer.tokenize(); + + // 语法分析 + const parser = new PowerShellParser(tokens, text); + const ast = parser.parse(); + const comments = parser.getComments(); + + return { + ast, + comments, + originalText: text + }; + } catch (error) { + console.warn('PowerShell parsing failed, using fallback:', error); + + // 解析失败时,创建一个包含原始文本的简单AST + // 这样可以确保格式化失败时返回原始代码而不是空内容 + return { + ast: { + type: 'ScriptBlock', + statements: [{ + type: 'RawText', + value: text, + start: 0, + end: text.length, + line: 1, + column: 1 + } as any], + start: 0, + end: text.length, + line: 1, + column: 1 + }, + comments: [], + originalText: text + }; + } +} + +/** + * PowerShell代码打印器 + */ +const printPowerShell = (path: AstPath, options: any): Doc => { + const parseResult = path.node; + + try { + // 构建格式化选项 - 优先保持原有格式,避免破坏PowerShell语法 + const formatterOptions: Partial = { + indentSize: options.tabWidth || DEFAULT_OPTIONS.indentSize, + useTabsForIndentation: options.useTabs || DEFAULT_OPTIONS.useTabsForIndentation, + printWidth: options.printWidth || DEFAULT_OPTIONS.printWidth, spaceAroundOperators: true, - formatComments: true, - removeExtraBlankLines: true, formatPipelines: true, - formatParentheses: true, - formatArraysAndHashtables: true, + formatParameters: true, + formatHashtables: true, + hashtableStyle: 'compact', // 强制使用紧凑格式,避免不必要的换行 + formatArrays: true, + arrayStyle: 'compact', + formatComments: true, maxConsecutiveEmptyLines: 1, - addBlankLinesAroundBlocks: true, - formatLongLines: true, - formatFunctionDefinitions: true, - formatPowerShellSyntax: true, - }); + insertFinalNewline: true, + trimTrailingWhitespace: true, + blankLinesAroundFunctions: 1, + braceStyle: 'otbs', + preferredCommandCase: 'preserve', // 保持原有命令大小写,不破坏语法 + preferredParameterCase: 'preserve', + preferredVariableCase: 'preserve', + quotestyle: 'preserve', + wrapLongLines: true + }; + + // 使用新的模块化格式化器 + const formattedCode = formatPowerShellAST( + parseResult.ast, + parseResult.comments, + formatterOptions + ); return formattedCode; } catch (error) { console.warn('PowerShell formatting failed, returning original code:', error); - return node.value || ''; + return parseResult.originalText; } }; // 打印器配置 -const powershellPrinter: Printer = { - print: printPosh, +const powershellPrinter: Printer = { + print: printPowerShell, }; -// 插件选项 +// 插件选项配置 const options = { - + // PowerShell特定格式化选项 + powershellBraceStyle: { + type: 'choice' as const, + category: 'PowerShell', + default: DEFAULT_OPTIONS.braceStyle, + description: 'PowerShell大括号样式', + choices: [ + { value: 'allman', description: 'Allman风格(大括号另起一行)' }, + { value: 'otbs', description: '1TBS风格(大括号同行)' }, + { value: 'stroustrup', description: 'Stroustrup风格' } + ] + }, + powershellCommandCase: { + type: 'choice' as const, + category: 'PowerShell', + default: DEFAULT_OPTIONS.preferredCommandCase, + description: 'PowerShell命令大小写风格', + choices: [ + { value: 'lowercase', description: '小写' }, + { value: 'uppercase', description: '大写' }, + { value: 'pascalcase', description: 'Pascal大小写' }, + { value: 'preserve', description: '保持原样' } + ] + }, + powershellPipelineStyle: { + type: 'choice' as const, + category: 'PowerShell', + default: DEFAULT_OPTIONS.pipelineStyle, + description: 'PowerShell管道样式', + choices: [ + { value: 'oneline', description: '单行' }, + { value: 'multiline', description: '多行' }, + { value: 'auto', description: '自动' } + ] + }, + powershellSpaceAroundOperators: { + type: 'boolean' as const, + category: 'PowerShell', + default: DEFAULT_OPTIONS.spaceAroundOperators, + description: '在操作符周围添加空格' + }, + powershellMaxEmptyLines: { + type: 'int' as const, + category: 'PowerShell', + default: DEFAULT_OPTIONS.maxConsecutiveEmptyLines, + description: '最大连续空行数' + } }; const powershellPlugin: Plugin = { diff --git a/frontend/src/common/prettier/plugins/powershell/lexer.ts b/frontend/src/common/prettier/plugins/powershell/lexer.ts new file mode 100644 index 0000000..1913594 --- /dev/null +++ b/frontend/src/common/prettier/plugins/powershell/lexer.ts @@ -0,0 +1,722 @@ +/** + * PowerShell 词法分析器 (Lexer) + * 将PowerShell代码分解为tokens,用于后续的语法分析和格式化 + */ + +export enum TokenType { + // 字面量 + STRING = 'STRING', + NUMBER = 'NUMBER', + VARIABLE = 'VARIABLE', + + // 关键字 + KEYWORD = 'KEYWORD', + FUNCTION = 'FUNCTION', + + // 操作符 + OPERATOR = 'OPERATOR', + ASSIGNMENT = 'ASSIGNMENT', + COMPARISON = 'COMPARISON', + LOGICAL = 'LOGICAL', + ARITHMETIC = 'ARITHMETIC', + + // 分隔符 + LEFT_PAREN = 'LEFT_PAREN', + RIGHT_PAREN = 'RIGHT_PAREN', + LEFT_BRACE = 'LEFT_BRACE', + RIGHT_BRACE = 'RIGHT_BRACE', + LEFT_BRACKET = 'LEFT_BRACKET', + RIGHT_BRACKET = 'RIGHT_BRACKET', + SEMICOLON = 'SEMICOLON', + COMMA = 'COMMA', + DOT = 'DOT', + PIPE = 'PIPE', + + // 特殊 + WHITESPACE = 'WHITESPACE', + NEWLINE = 'NEWLINE', + COMMENT = 'COMMENT', + MULTILINE_COMMENT = 'MULTILINE_COMMENT', + HERE_STRING = 'HERE_STRING', + + // 控制结构 + IF = 'IF', + ELSE = 'ELSE', + ELSEIF = 'ELSEIF', + WHILE = 'WHILE', + FOR = 'FOR', + FOREACH = 'FOREACH', + SWITCH = 'SWITCH', + TRY = 'TRY', + CATCH = 'CATCH', + FINALLY = 'FINALLY', + + // 其他 + IDENTIFIER = 'IDENTIFIER', + CMDLET = 'CMDLET', + PARAMETER = 'PARAMETER', + EOF = 'EOF', + UNKNOWN = 'UNKNOWN' +} + +export interface Token { + type: TokenType; + value: string; + line: number; + column: number; + startIndex: number; + endIndex: number; +} + +export class PowerShellLexer { + private code: string; + private position: number = 0; + private line: number = 1; + private column: number = 1; + private tokens: Token[] = []; + + // PowerShell关键字 + private readonly keywords = new Set([ + 'if', 'else', 'elseif', 'switch', 'while', 'for', 'foreach', 'do', + 'try', 'catch', 'finally', 'throw', 'return', 'break', 'continue', + 'function', 'filter', 'param', 'begin', 'process', 'end', + 'class', 'enum', 'using', 'namespace', 'workflow', 'configuration', + 'dynamicparam', 'exit' + ]); + + // PowerShell比较操作符 + private readonly comparisonOperators = new Set([ + '-eq', '-ne', '-lt', '-le', '-gt', '-ge', + '-like', '-notlike', '-match', '-notmatch', + '-contains', '-notcontains', '-in', '-notin', + '-is', '-isnot', '-as' + ]); + + // PowerShell逻辑操作符 + private readonly logicalOperators = new Set([ + '-and', '-or', '-not', '-xor', '-band', '-bor', '-bxor', '-bnot' + ]); + + constructor(code: string) { + this.code = code; + } + + /** + * 对代码进行词法分析,返回token数组 + */ + public tokenize(): Token[] { + this.position = 0; + this.line = 1; + this.column = 1; + this.tokens = []; + + while (this.position < this.code.length) { + this.skipWhitespace(); + + if (this.position >= this.code.length) { + break; + } + + const token = this.nextToken(); + if (token) { + this.tokens.push(token); + } + } + + this.tokens.push({ + type: TokenType.EOF, + value: '', + line: this.line, + column: this.column, + startIndex: this.position, + endIndex: this.position + }); + + return this.tokens; + } + + private nextToken(): Token | null { + const startPos = this.position; + const startLine = this.line; + const startColumn = this.column; + + const char = this.code[this.position]; + + // 处理换行 + if (char === '\n') { + this.advance(); + return this.createToken(TokenType.NEWLINE, '\n', startPos, startLine, startColumn); + } + + // 处理注释 + if (char === '#') { + return this.tokenizeComment(startPos, startLine, startColumn); + } + + // 处理多行注释 + if (char === '<' && this.peek() === '#') { + return this.tokenizeMultilineComment(startPos, startLine, startColumn); + } + + // 处理字符串 + if (char === '"' || char === "'") { + return this.tokenizeString(startPos, startLine, startColumn); + } + + // 处理Here-String + if (char === '@' && (this.peek() === '"' || this.peek() === "'")) { + return this.tokenizeHereString(startPos, startLine, startColumn); + } + + // 处理哈希表字面量 @{ + if (char === '@' && this.peek() === '{') { + this.advance(); // skip '@' + this.advance(); // skip '{' + return this.createToken(TokenType.LEFT_BRACE, '@{', startPos, startLine, startColumn); + } + + // 处理变量 + if (char === '$') { + return this.tokenizeVariable(startPos, startLine, startColumn); + } + + // 处理数字 + if (this.isDigit(char) || (char === '.' && this.isDigit(this.peek()))) { + return this.tokenizeNumber(startPos, startLine, startColumn); + } + + // 处理操作符和分隔符 + const operatorToken = this.tokenizeOperator(startPos, startLine, startColumn); + if (operatorToken) { + return operatorToken; + } + + // 优先处理PowerShell比较操作符(以-开头) + if (char === '-' && this.isIdentifierStart(this.peek())) { + const potentialOperator = this.peekPowerShellOperator(); + if (potentialOperator) { + return this.tokenizePowerShellOperator(startPos, startLine, startColumn); + } + // 如果不是操作符,可能是参数 + return this.tokenizeParameter(startPos, startLine, startColumn); + } + + // 处理标识符(包括cmdlet和关键字) + if (this.isIdentifierStart(char)) { + return this.tokenizeIdentifier(startPos, startLine, startColumn); + } + + // 处理PowerShell特殊字符 + if (char === '?') { + this.advance(); + return this.createToken(TokenType.OPERATOR, char, startPos, startLine, startColumn); + } + + // 处理独立的减号(可能是负数或减法) + if (char === '-') { + this.advance(); + return this.createToken(TokenType.ARITHMETIC, char, startPos, startLine, startColumn); + } + + // 处理其他可能的特殊字符,作为标识符处理而不是未知字符 + if (this.isPrintableChar(char)) { + this.advance(); + return this.createToken(TokenType.IDENTIFIER, char, startPos, startLine, startColumn); + } + + // 真正的未知字符(非打印字符等) + this.advance(); + return this.createToken(TokenType.UNKNOWN, char, startPos, startLine, startColumn); + } + + private tokenizeComment(startPos: number, startLine: number, startColumn: number): Token { + let value = ''; + while (this.position < this.code.length && this.code[this.position] !== '\n') { + value += this.code[this.position]; + this.advance(); + } + return this.createToken(TokenType.COMMENT, value, startPos, startLine, startColumn); + } + + private tokenizeMultilineComment(startPos: number, startLine: number, startColumn: number): Token { + let value = ''; + this.advance(); // skip '<' + this.advance(); // skip '#' + value += '<#'; + + while (this.position < this.code.length - 1) { + if (this.code[this.position] === '#' && this.code[this.position + 1] === '>') { + value += '#>'; + this.advance(); + this.advance(); + break; + } + value += this.code[this.position]; + this.advance(); + } + + return this.createToken(TokenType.MULTILINE_COMMENT, value, startPos, startLine, startColumn); + } + + private tokenizeString(startPos: number, startLine: number, startColumn: number): Token { + const quote = this.code[this.position]; + let value = quote; + this.advance(); + + while (this.position < this.code.length) { + const char = this.code[this.position]; + value += char; + + if (char === quote) { + this.advance(); + break; + } + + // 处理转义字符 + if (char === '`' && quote === '"') { + this.advance(); + if (this.position < this.code.length) { + value += this.code[this.position]; + this.advance(); + } + } else { + this.advance(); + } + } + + return this.createToken(TokenType.STRING, value, startPos, startLine, startColumn); + } + + private tokenizeHereString(startPos: number, startLine: number, startColumn: number): Token { + const quote = this.code[this.position + 1]; // " or ' + let value = `@${quote}`; + this.advance(); // skip '@' + this.advance(); // skip quote + + while (this.position < this.code.length - 1) { + if (this.code[this.position] === quote && this.code[this.position + 1] === '@') { + value += `${quote}@`; + this.advance(); + this.advance(); + break; + } + value += this.code[this.position]; + this.advance(); + } + + return this.createToken(TokenType.HERE_STRING, value, startPos, startLine, startColumn); + } + + private tokenizeVariable(startPos: number, startLine: number, startColumn: number): Token { + let value = '$'; + this.advance(); // skip '$' + + // 处理特殊变量如 $_, $$, $^ + const specialVars = ['_', '$', '^', '?']; + if (specialVars.includes(this.code[this.position])) { + value += this.code[this.position]; + this.advance(); + return this.createToken(TokenType.VARIABLE, value, startPos, startLine, startColumn); + } + + // 处理大括号变量 ${variable name} + if (this.code[this.position] === '{') { + this.advance(); // skip '{' + value += '{'; + while (this.position < this.code.length && this.code[this.position] !== '}') { + value += this.code[this.position]; + this.advance(); + } + if (this.position < this.code.length) { + value += '}'; + this.advance(); // skip '}' + } + return this.createToken(TokenType.VARIABLE, value, startPos, startLine, startColumn); + } + + // 普通变量名 + while (this.position < this.code.length && this.isIdentifierChar(this.code[this.position])) { + value += this.code[this.position]; + this.advance(); + } + + return this.createToken(TokenType.VARIABLE, value, startPos, startLine, startColumn); + } + + private tokenizeNumber(startPos: number, startLine: number, startColumn: number): Token { + let value = ''; + let hasDecimal = false; + + while (this.position < this.code.length) { + const char = this.code[this.position]; + + if (this.isDigit(char)) { + value += char; + this.advance(); + } else if (char === '.' && !hasDecimal && this.isDigit(this.peek())) { + hasDecimal = true; + value += char; + this.advance(); + } else { + break; + } + } + + // 检查是否有PowerShell数字单位后缀(KB, MB, GB, TB, PB) + const unitPattern = /^(KB|MB|GB|TB|PB)/i; + const remainingCode = this.code.substring(this.position); + const unitMatch = remainingCode.match(unitPattern); + + if (unitMatch) { + value += unitMatch[0]; // 使用 [0] 获取完整匹配 + // 移动position到单位后面 + for (let i = 0; i < unitMatch[0].length; i++) { + this.advance(); + } + } + + return this.createToken(TokenType.NUMBER, value, startPos, startLine, startColumn); + } + + private tokenizeOperator(startPos: number, startLine: number, startColumn: number): Token | null { + const char = this.code[this.position]; + + // 双字符操作符 + const twoChar = this.code.substring(this.position, this.position + 2); + const doubleOperators = ['==', '!=', '<=', '>=', '++', '--', '+=', '-=', '*=', '/=', '%=']; + + if (doubleOperators.includes(twoChar)) { + this.advance(); + this.advance(); + return this.createToken(TokenType.OPERATOR, twoChar, startPos, startLine, startColumn); + } + + // 单字符操作符 + switch (char) { + case '=': + this.advance(); + return this.createToken(TokenType.ASSIGNMENT, char, startPos, startLine, startColumn); + case '+': + case '*': + case '/': + case '%': + this.advance(); + return this.createToken(TokenType.ARITHMETIC, char, startPos, startLine, startColumn); + case '-': + // 不在这里处理'-',让PowerShell操作符检查优先处理 + return null; + case '(': + this.advance(); + return this.createToken(TokenType.LEFT_PAREN, char, startPos, startLine, startColumn); + case ')': + this.advance(); + return this.createToken(TokenType.RIGHT_PAREN, char, startPos, startLine, startColumn); + case '{': + this.advance(); + return this.createToken(TokenType.LEFT_BRACE, char, startPos, startLine, startColumn); + case '}': + this.advance(); + return this.createToken(TokenType.RIGHT_BRACE, char, startPos, startLine, startColumn); + case '[': + // 检查是否是PowerShell类型转换 [type] + const typePattern = this.peekTypeConversion(); + if (typePattern) { + return this.tokenizeTypeConversion(startPos, startLine, startColumn); + } + this.advance(); + return this.createToken(TokenType.LEFT_BRACKET, char, startPos, startLine, startColumn); + case ']': + this.advance(); + return this.createToken(TokenType.RIGHT_BRACKET, char, startPos, startLine, startColumn); + case ';': + this.advance(); + return this.createToken(TokenType.SEMICOLON, char, startPos, startLine, startColumn); + case ',': + this.advance(); + return this.createToken(TokenType.COMMA, char, startPos, startLine, startColumn); + case '.': + this.advance(); + return this.createToken(TokenType.DOT, char, startPos, startLine, startColumn); + case '|': + this.advance(); + return this.createToken(TokenType.PIPE, char, startPos, startLine, startColumn); + } + + return null; + } + + private tokenizeIdentifier(startPos: number, startLine: number, startColumn: number): Token { + let value = ''; + + // 改进的标识符识别,支持PowerShell cmdlet格式(动词-名词) + while (this.position < this.code.length) { + const char = this.code[this.position]; + + if (this.isIdentifierChar(char)) { + value += char; + this.advance(); + } else if (char === '-' && value.length > 0 && this.isIdentifierStart(this.peek())) { + // 检查是否是cmdlet格式(动词-名词) + const nextPart = this.peekIdentifierPart(); + if (nextPart && !this.isPowerShellOperator('-' + nextPart)) { + // 这是cmdlet名字的一部分,继续 + value += char; + this.advance(); + } else { + // 这可能是操作符,停止 + break; + } + } else { + break; + } + } + + const lowerValue = value.toLowerCase(); + + // 检查是否是关键字 + if (this.keywords.has(lowerValue)) { + return this.createToken(this.getKeywordTokenType(lowerValue), value, startPos, startLine, startColumn); + } + + // 检查是否是函数(以动词-名词格式) + if (this.isCmdletName(value)) { + return this.createToken(TokenType.CMDLET, value, startPos, startLine, startColumn); + } + + return this.createToken(TokenType.IDENTIFIER, value, startPos, startLine, startColumn); + } + + private tokenizeParameter(startPos: number, startLine: number, startColumn: number): Token { + let value = ''; + + while (this.position < this.code.length && (this.isIdentifierChar(this.code[this.position]) || this.code[this.position] === '-')) { + value += this.code[this.position]; + this.advance(); + } + + const lowerValue = value.toLowerCase(); + + // 检查是否是比较操作符 + if (this.comparisonOperators.has(lowerValue)) { + return this.createToken(TokenType.COMPARISON, value, startPos, startLine, startColumn); + } + + // 检查是否是逻辑操作符 + if (this.logicalOperators.has(lowerValue)) { + return this.createToken(TokenType.LOGICAL, value, startPos, startLine, startColumn); + } + + return this.createToken(TokenType.PARAMETER, value, startPos, startLine, startColumn); + } + + private getKeywordTokenType(keyword: string): TokenType { + switch (keyword) { + case 'if': return TokenType.IF; + case 'else': return TokenType.ELSE; + case 'elseif': return TokenType.ELSEIF; + case 'while': return TokenType.WHILE; + case 'for': return TokenType.FOR; + case 'foreach': return TokenType.FOREACH; + case 'switch': return TokenType.SWITCH; + case 'try': return TokenType.TRY; + case 'catch': return TokenType.CATCH; + case 'finally': return TokenType.FINALLY; + case 'function': return TokenType.FUNCTION; + default: return TokenType.KEYWORD; + } + } + + private isCmdletName(name: string): boolean { + // PowerShell cmdlet通常遵循 Verb-Noun 格式,可能包含多个连字符 + const verbNounPattern = /^[A-Za-z]+(-[A-Za-z]+)+$/; + return verbNounPattern.test(name); + } + + private peekPowerShellOperator(): string | null { + // 检查是否是PowerShell比较或逻辑操作符 + const operatorPatterns = [ + '-eq', '-ne', '-lt', '-le', '-gt', '-ge', + '-like', '-notlike', '-match', '-notmatch', + '-contains', '-notcontains', '-in', '-notin', + '-is', '-isnot', '-as', + '-and', '-or', '-not', '-xor', + '-band', '-bor', '-bxor', '-bnot' + ]; + + for (const op of operatorPatterns) { + if (this.matchesOperator(op)) { + return op; + } + } + return null; + } + + private matchesOperator(operator: string): boolean { + if (this.position + operator.length > this.code.length) { + return false; + } + + const substr = this.code.substring(this.position, this.position + operator.length); + if (substr.toLowerCase() !== operator.toLowerCase()) { + return false; + } + + // 确保操作符后面不是字母数字字符(避免匹配部分单词) + const nextChar = this.position + operator.length < this.code.length + ? this.code[this.position + operator.length] + : ' '; + return !this.isIdentifierChar(nextChar); + } + + private tokenizePowerShellOperator(startPos: number, startLine: number, startColumn: number): Token { + const operator = this.peekPowerShellOperator(); + if (!operator) { + // 如果不是操作符,作为参数处理 + return this.tokenizeParameter(startPos, startLine, startColumn); + } + + // 消费操作符字符 + for (let i = 0; i < operator.length; i++) { + this.advance(); + } + + const lowerOp = operator.toLowerCase(); + + // 确定操作符类型 + if (this.comparisonOperators.has(lowerOp)) { + return this.createToken(TokenType.COMPARISON, operator, startPos, startLine, startColumn); + } else if (this.logicalOperators.has(lowerOp)) { + return this.createToken(TokenType.LOGICAL, operator, startPos, startLine, startColumn); + } else { + return this.createToken(TokenType.OPERATOR, operator, startPos, startLine, startColumn); + } + } + + private peekIdentifierPart(): string | null { + if (this.position + 1 >= this.code.length) { + return null; + } + + let result = ''; + let pos = this.position + 1; // 跳过连字符 + + while (pos < this.code.length && this.isIdentifierChar(this.code[pos])) { + result += this.code[pos]; + pos++; + } + + return result.length > 0 ? result : null; + } + + private isPowerShellOperator(text: string): boolean { + const lowerText = text.toLowerCase(); + return this.comparisonOperators.has(lowerText) || this.logicalOperators.has(lowerText); + } + + private peekTypeConversion(): string | null { + // 检查是否是PowerShell类型转换,如 [int], [string], [datetime] 等 + if (this.code[this.position] !== '[') { + return null; + } + + let pos = this.position + 1; // 跳过 '[' + let typeContent = ''; + + // 查找类型名称 + while (pos < this.code.length && this.code[pos] !== ']') { + typeContent += this.code[pos]; + pos++; + } + + if (pos >= this.code.length || this.code[pos] !== ']') { + return null; // 没有找到匹配的 ']' + } + + // 检查是否是有效的PowerShell类型 + const validTypes = [ + 'int', 'int32', 'int64', 'string', 'bool', 'boolean', 'char', 'byte', + 'double', 'float', 'decimal', 'long', 'short', 'datetime', 'timespan', + 'array', 'hashtable', 'object', 'psobject', 'xml', 'scriptblock', + 'guid', 'uri', 'version', 'regex', 'mailaddress', 'ipaddress' + ]; + + const lowerType = typeContent.toLowerCase().trim(); + if (validTypes.includes(lowerType) || lowerType.includes('.')) { + return `[${typeContent}]`; + } + + return null; + } + + private tokenizeTypeConversion(startPos: number, startLine: number, startColumn: number): Token { + const typeConversion = this.peekTypeConversion(); + if (!typeConversion) { + // 这不应该发生,但作为安全措施 + this.advance(); + return this.createToken(TokenType.LEFT_BRACKET, '[', startPos, startLine, startColumn); + } + + // 消费整个类型转换 + for (let i = 0; i < typeConversion.length; i++) { + this.advance(); + } + + return this.createToken(TokenType.IDENTIFIER, typeConversion, startPos, startLine, startColumn); + } + + private isIdentifierStart(char: string): boolean { + return /[a-zA-Z_]/.test(char); + } + + private isIdentifierChar(char: string): boolean { + return /[a-zA-Z0-9_]/.test(char); + } + + private isDigit(char: string): boolean { + return char >= '0' && char <= '9'; + } + + private isPrintableChar(char: string): boolean { + // 检查是否为可打印字符(非控制字符) + const charCode = char.charCodeAt(0); + return charCode >= 32 && charCode <= 126; + } + + private advance(): void { + if (this.position < this.code.length) { + if (this.code[this.position] === '\n') { + this.line++; + this.column = 1; + } else { + this.column++; + } + this.position++; + } + } + + private peek(): string { + return this.position + 1 < this.code.length ? this.code[this.position + 1] : ''; + } + + private skipWhitespace(): void { + while (this.position < this.code.length) { + const char = this.code[this.position]; + if (char === ' ' || char === '\t' || char === '\r') { + this.advance(); + } else { + break; + } + } + } + + private createToken(type: TokenType, value: string, startPos: number, line: number, column: number): Token { + return { + type, + value, + line, + column, + startIndex: startPos, + endIndex: this.position + }; + } +} diff --git a/frontend/src/common/prettier/plugins/powershell/parse.ts b/frontend/src/common/prettier/plugins/powershell/parse.ts deleted file mode 100644 index 8f0cddb..0000000 --- a/frontend/src/common/prettier/plugins/powershell/parse.ts +++ /dev/null @@ -1,787 +0,0 @@ -/** - * PowerShell 代码解析器和格式化器 - */ - -// PowerShell AST节点类型 -interface PowerShellAstNode { - type: string; - value: string; - start?: number; - end?: number; - parent?: PowerShellAstNode; - extent?: any; -} - -// 解析器函数类型 -type PowerShellParserResult = PowerShellAstNode | PowerShellAstNode[]; - -// PowerShell格式化选项 -export interface PowerShellFormatterOptions { - /** 缩进大小,默认为4 */ - indentSize?: number; - /** 使用制表符还是空格,默认为空格 */ - useTabsForIndentation?: boolean; - /** 行最大长度,默认为120 */ - printWidth?: number; - /** 是否在操作符周围添加空格,默认为true */ - spaceAroundOperators?: boolean; - /** 是否格式化注释,默认为true */ - formatComments?: boolean; - /** 是否去除多余的空行,默认为true */ - removeExtraBlankLines?: boolean; - /** 是否格式化管道符,默认为true */ - formatPipelines?: boolean; - /** 是否格式化括号内空格,默认为true */ - formatParentheses?: boolean; - /** 是否格式化数组和哈希表,默认为true */ - formatArraysAndHashtables?: boolean; - /** 最大连续空行数,默认为1 */ - maxConsecutiveEmptyLines?: number; - /** 是否在代码块前后添加空行,默认为true */ - addBlankLinesAroundBlocks?: boolean; - /** 是否格式化长行(自动换行),默认为true */ - formatLongLines?: boolean; - /** 是否格式化函数定义,默认为true */ - formatFunctionDefinitions?: boolean; - /** 是否格式化PowerShell特有语法(switch、try-catch、param等),默认为true */ - formatPowerShellSyntax?: boolean; -} - -/** - * PowerShell代码格式化器 - 修复版本 - */ -class PowerShellFormatter { - private options: Required; - - constructor(options: PowerShellFormatterOptions = {}) { - this.options = { - indentSize: options.indentSize ?? 4, - useTabsForIndentation: options.useTabsForIndentation ?? false, - printWidth: options.printWidth ?? 120, - spaceAroundOperators: options.spaceAroundOperators ?? true, - formatComments: options.formatComments ?? true, - removeExtraBlankLines: options.removeExtraBlankLines ?? true, - formatPipelines: options.formatPipelines ?? true, - formatParentheses: options.formatParentheses ?? true, - formatArraysAndHashtables: options.formatArraysAndHashtables ?? true, - maxConsecutiveEmptyLines: options.maxConsecutiveEmptyLines ?? 1, - addBlankLinesAroundBlocks: options.addBlankLinesAroundBlocks ?? true, - formatLongLines: options.formatLongLines ?? true, - formatFunctionDefinitions: options.formatFunctionDefinitions ?? true, - formatPowerShellSyntax: options.formatPowerShellSyntax ?? true, - }; - } - - /** - * 格式化PowerShell代码 - */ - format(code: string): string { - if (!code || code.trim().length === 0) { - return code; - } - - try { - const lines = code.split('\n'); - let formattedLines = this.formatLines(lines); - - // 处理多余空行 - if (this.options.removeExtraBlankLines) { - formattedLines = this.removeExtraBlankLines(formattedLines); - } - - // 在代码块前后添加适当的空行 - if (this.options.addBlankLinesAroundBlocks) { - formattedLines = this.addBlankLinesAroundBlocks(formattedLines); - } - - return formattedLines.join('\n'); - } catch (error) { - console.warn('PowerShell formatting failed:', error); - return code; // 返回原始代码 - } - } - - private formatLines(lines: string[]): string[] { - const result: string[] = []; - let indentLevel = 0; - let inMultiLineComment = false; - let inHereString = false; - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - const trimmedLine = line.trim(); - - // 检查 Here-String (@"..."@ 或 @'...'@) - if (trimmedLine.startsWith('@"') || trimmedLine.startsWith("@'")) { - if (!trimmedLine.endsWith('"@') && !trimmedLine.endsWith("'@")) { - inHereString = true; - } - } - if (inHereString && (trimmedLine.endsWith('"@') || trimmedLine.endsWith("'@"))) { - inHereString = false; - result.push(line); // Here-String 结束行保持原样 - continue; - } - - // 在 Here-String 内部不处理 - if (inHereString) { - result.push(line); - continue; - } - - // 检查多行注释 - if (trimmedLine.includes('<#')) { - inMultiLineComment = true; - } - if (trimmedLine.includes('#>')) { - inMultiLineComment = false; - result.push(this.getIndent(indentLevel) + trimmedLine); - continue; - } - if (inMultiLineComment) { - result.push(this.getIndent(indentLevel) + trimmedLine); - continue; - } - - // 处理空行 - if (trimmedLine.length === 0) { - result.push(''); - continue; - } - - // 检查是否需要减少缩进级别 - if (this.shouldDecreaseIndent(trimmedLine)) { - indentLevel = Math.max(0, indentLevel - 1); - } - - // 格式化当前行 - const formattedLine = this.formatLine(trimmedLine); - result.push(this.getIndent(indentLevel) + formattedLine); - - // 检查是否需要增加缩进级别 - if (this.shouldIncreaseIndent(trimmedLine)) { - indentLevel++; - } - } - - return result; - } - - private formatLine(line: string): string { - let formatted = line; - - // 处理操作符周围的空格 - if (this.options.spaceAroundOperators) { - formatted = this.addSpacesAroundOperators(formatted); - } - - // 格式化注释 - if (this.options.formatComments) { - formatted = this.formatComment(formatted); - } - - // 格式化管道符 - if (this.options.formatPipelines) { - formatted = this.formatPipelines(formatted); - } - - // 格式化括号 - if (this.options.formatParentheses) { - formatted = this.formatParentheses(formatted); - } - - // 格式化数组和哈希表 - if (this.options.formatArraysAndHashtables) { - formatted = this.formatArraysAndHashtables(formatted); - } - - // 格式化函数定义 - if (this.options.formatFunctionDefinitions) { - formatted = this.formatFunctionDefinitions(formatted); - } - - // 格式化PowerShell特有语法 - if (this.options.formatPowerShellSyntax) { - formatted = this.formatPowerShellSyntax(formatted); - } - - // 格式化长行(如果需要) - if (this.options.formatLongLines && formatted.length > this.options.printWidth) { - formatted = this.formatLongLine(formatted); - } - - return formatted; - } - - private addSpacesAroundOperators(line: string): string { - // 定义PowerShell操作符映射 - 修复版本 - const operatorMappings = [ - // 赋值操作符 - { pattern: /\s*=\s*/g, replacement: ' = ' }, - { pattern: /\s*\+=\s*/g, replacement: ' += ' }, - { pattern: /\s*-=\s*/g, replacement: ' -= ' }, - { pattern: /\s*\*=\s*/g, replacement: ' *= ' }, - { pattern: /\s*\/=\s*/g, replacement: ' /= ' }, - { pattern: /\s*%=\s*/g, replacement: ' %= ' }, - - // 算术操作符 (避免与参数冲突) - { pattern: /(\w)\s*\+\s*(\w)/g, replacement: '$1 + $2' }, - { pattern: /(\w)\s*-\s*(\w)/g, replacement: '$1 - $2' }, - { pattern: /(\w)\s*\*\s*(\w)/g, replacement: '$1 * $2' }, - { pattern: /(\w)\s*\/\s*(\w)/g, replacement: '$1 / $2' }, - { pattern: /(\w)\s*%\s*(\w)/g, replacement: '$1 % $2' }, - - // 比较操作符 - { pattern: /\s*-eq\s*/g, replacement: ' -eq ' }, - { pattern: /\s*-ne\s*/g, replacement: ' -ne ' }, - { pattern: /\s*-lt\s*/g, replacement: ' -lt ' }, - { pattern: /\s*-le\s*/g, replacement: ' -le ' }, - { pattern: /\s*-gt\s*/g, replacement: ' -gt ' }, - { pattern: /\s*-ge\s*/g, replacement: ' -ge ' }, - { pattern: /\s*-like\s*/g, replacement: ' -like ' }, - { pattern: /\s*-notlike\s*/g, replacement: ' -notlike ' }, - { pattern: /\s*-match\s*/g, replacement: ' -match ' }, - { pattern: /\s*-notmatch\s*/g, replacement: ' -notmatch ' }, - { pattern: /\s*-contains\s*/g, replacement: ' -contains ' }, - { pattern: /\s*-notcontains\s*/g, replacement: ' -notcontains ' }, - { pattern: /\s*-in\s*/g, replacement: ' -in ' }, - { pattern: /\s*-notin\s*/g, replacement: ' -notin ' }, - - // 逻辑操作符 - { pattern: /\s*-and\s*/g, replacement: ' -and ' }, - { pattern: /\s*-or\s*/g, replacement: ' -or ' }, - { pattern: /\s*-not\s*/g, replacement: ' -not ' }, - { pattern: /\s*-xor\s*/g, replacement: ' -xor ' }, - ]; - - let result = line; - - // 先保护字符串字面量 - const strings: string[] = []; - let stringIndex = 0; - - // 保护双引号字符串 - result = result.replace(/"([^"\\]*(\\.[^"\\]*)*)"/g, (match) => { - const placeholder = `__STRING_${stringIndex++}__`; - strings.push(match); - return placeholder; - }); - - // 保护单引号字符串 - result = result.replace(/'([^'\\]*(\\.[^'\\]*)*)'/g, (match) => { - const placeholder = `__STRING_${stringIndex++}__`; - strings.push(match); - return placeholder; - }); - - // 应用操作符格式化 - operatorMappings.forEach(({ pattern, replacement }) => { - result = result.replace(pattern, replacement); - }); - - // 清理多余的空格,但不要合并所有空格 - result = result.replace(/\s{2,}/g, ' '); - - // 还原字符串 - strings.forEach((str, index) => { - result = result.replace(`__STRING_${index}__`, str); - }); - - return result.trim(); - } - - private removeExtraBlankLines(lines: string[]): string[] { - const result: string[] = []; - let consecutiveEmptyLines = 0; - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - const isEmptyLine = line.trim() === ''; - - if (isEmptyLine) { - consecutiveEmptyLines++; - // 只保留指定数量的连续空行 - if (consecutiveEmptyLines <= this.options.maxConsecutiveEmptyLines) { - result.push(line); - } - } else { - consecutiveEmptyLines = 0; - result.push(line); - } - } - - // 去除文件开头和结尾的空行 - while (result.length > 0 && result[0].trim() === '') { - result.shift(); - } - while (result.length > 0 && result[result.length - 1].trim() === '') { - result.pop(); - } - - return result; - } - - private formatPipelines(line: string): string { - // 格式化管道符 | - let result = line; - - // 保护字符串字面量 - const strings: string[] = []; - let stringIndex = 0; - - result = result.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, (match) => { - const placeholder = `__STRING_${stringIndex++}__`; - strings.push(match); - return placeholder; - }); - - // 格式化管道符,确保前后有空格 - result = result.replace(/\s*\|\s*/g, ' | '); - - // 还原字符串 - strings.forEach((str, index) => { - result = result.replace(`__STRING_${index}__`, str); - }); - - return result; - } - - private formatParentheses(line: string): string { - // 格式化括号内的空格 - let result = line; - - // 保护字符串字面量 - const strings: string[] = []; - let stringIndex = 0; - - result = result.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, (match) => { - const placeholder = `__STRING_${stringIndex++}__`; - strings.push(match); - return placeholder; - }); - - // 格式化括号:( 后和 ) 前不要多余空格,但参数之间要有空格 - result = result.replace(/\(\s+/g, '('); - result = result.replace(/\s+\)/g, ')'); - - // 格式化逗号:逗号后加空格 - result = result.replace(/,\s*/g, ', '); - - // 格式化分号:分号后加空格 - result = result.replace(/;\s*/g, '; '); - - // 还原字符串 - strings.forEach((str, index) => { - result = result.replace(`__STRING_${index}__`, str); - }); - - return result; - } - - private formatArraysAndHashtables(line: string): string { - // 格式化数组 @() 和哈希表 @{} - let result = line; - - // 保护字符串字面量 - const strings: string[] = []; - let stringIndex = 0; - - result = result.replace(/(["'])(?:(?=(\\?))\2.)*?\1/g, (match) => { - const placeholder = `__STRING_${stringIndex++}__`; - strings.push(match); - return placeholder; - }); - - // 格式化数组符号 - result = result.replace(/@\(\s*/g, '@('); - result = result.replace(/\s*\)/g, ')'); - - // 格式化哈希表符号 - result = result.replace(/@\{\s*/g, '@{'); - result = result.replace(/\s*\}/g, '}'); - - // 格式化方括号 - result = result.replace(/\[\s+/g, '['); - result = result.replace(/\s+\]/g, ']'); - - // 还原字符串 - strings.forEach((str, index) => { - result = result.replace(`__STRING_${index}__`, str); - }); - - return result; - } - - private addBlankLinesAroundBlocks(lines: string[]): string[] { - const result: string[] = []; - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - const trimmedLine = line.trim(); - const previousLine = i > 0 ? lines[i - 1].trim() : ''; - const nextLine = i < lines.length - 1 ? lines[i + 1].trim() : ''; - - // 在函数定义前添加空行(除非是文件开头或前面已经有空行) - if (this.isFunctionDefinition(trimmedLine)) { - if (i > 0 && previousLine !== '' && result.length > 0) { - result.push(''); - } - } - - // 在控制结构前添加空行(if, while, for, foreach, switch等) - if (this.isControlStructure(trimmedLine)) { - if (i > 0 && previousLine !== '' && !this.isElseOrElseIf(trimmedLine) && result.length > 0) { - result.push(''); - } - } - - result.push(line); - - // 在函数定义后的右大括号后添加空行 - if (trimmedLine === '}' && this.isPreviousLineFunctionEnd(lines, i)) { - if (i < lines.length - 1 && nextLine !== '') { - result.push(''); - } - } - } - - return result; - } - - private formatFunctionDefinitions(line: string): string { - // 格式化函数定义 - let result = line; - - // 函数定义的模式匹配 - const functionPattern = /^(\s*)(function\s+)([^\s\(]+)(\s*)(\(.*?\))(\s*)(\{?)(.*)$/i; - const match = result.match(functionPattern); - - if (match) { - const [, indent, funcKeyword, funcName, , params, , openBrace, rest] = match; - - // 标准化函数定义格式:function FunctionName(Parameters) { - if (openBrace === '{' && rest.trim() === '') { - // 单独一行的开括号 - result = `${indent}${funcKeyword}${funcName}${params} {`; - } else if (openBrace === '' && rest.trim().startsWith('{')) { - // 括号在下一行,移到同一行 - result = `${indent}${funcKeyword}${funcName}${params} {`; - } else { - // 标准格式化 - result = `${indent}${funcKeyword}${funcName}${params} {`; - } - } - - return result; - } - - private formatLongLine(line: string): string { - // 处理长行,在适当的位置换行 - if (line.length <= this.options.printWidth) { - return line; - } - - const indent = line.match(/^\s*/)?.[0] || ''; - const content = line.trim(); - - // 查找可以换行的位置:管道符、逗号、操作符等 - const breakPoints = [ - { char: ' | ', priority: 1 }, - { char: ', ', priority: 2 }, - { char: ' -and ', priority: 3 }, - { char: ' -or ', priority: 3 }, - { char: ' = ', priority: 4 }, - { char: ' + ', priority: 5 }, - { char: ' -', priority: 6 } - ]; - - // 寻找最佳换行点 - for (const breakPoint of breakPoints) { - const index = content.lastIndexOf(breakPoint.char, this.options.printWidth - indent.length); - if (index > 0) { - const firstPart = content.substring(0, index + breakPoint.char.length).trim(); - const secondPart = content.substring(index + breakPoint.char.length).trim(); - - if (secondPart.length > 0) { - const continuationIndent = indent + ' '; // 额外缩进 - return `${indent}${firstPart}\n${continuationIndent}${secondPart}`; - } - } - } - - return line; // 如果找不到合适的断点,保持原样 - } - - private isFunctionDefinition(line: string): boolean { - return /^\s*function\s+\w+/i.test(line); - } - - private isControlStructure(line: string): boolean { - const controlKeywords = [ - /^\s*if\s*\(/i, - /^\s*while\s*\(/i, - /^\s*for\s*\(/i, - /^\s*foreach\s*\(/i, - /^\s*switch\s*\(/i, - /^\s*try\s*\{?$/i, - /^\s*do\s*\{?$/i - ]; - - return controlKeywords.some(pattern => pattern.test(line)); - } - - private isElseOrElseIf(line: string): boolean { - return /^\s*(else|elseif)\b/i.test(line); - } - - private isPreviousLineFunctionEnd(lines: string[], currentIndex: number): boolean { - // 检查是否是函数结束的大括号 - let braceCount = 0; - let foundFunction = false; - - for (let i = currentIndex - 1; i >= 0; i--) { - const line = lines[i].trim(); - - if (line.includes('}')) { - braceCount += (line.match(/\}/g) || []).length; - } - if (line.includes('{')) { - braceCount -= (line.match(/\{/g) || []).length; - } - - if (this.isFunctionDefinition(line)) { - foundFunction = true; - break; - } - - if (braceCount < 0) break; // 遇到不匹配的括号 - } - - return foundFunction && braceCount === 1; - } - - private formatPowerShellSyntax(line: string): string { - let result = line; - - // 格式化switch语句 - result = this.formatSwitchStatement(result); - - // 格式化try-catch-finally语句 - result = this.formatTryCatchFinally(result); - - // 格式化param块 - result = this.formatParamBlock(result); - - // 格式化PowerShell操作符和关键字 - result = this.formatPowerShellKeywords(result); - - // 格式化变量声明 - result = this.formatVariableDeclarations(result); - - return result; - } - - private formatSwitchStatement(line: string): string { - let result = line; - - // 格式化switch语句: switch ($variable) { - const switchPattern = /^(\s*)(switch)\s*(\(.*?\))\s*(\{?)(.*)$/i; - const match = result.match(switchPattern); - - if (match) { - const [, indent, switchKeyword, condition, brace, rest] = match; - result = `${indent}${switchKeyword} ${condition} {`; - } - - // 格式化switch case标签 - if (/^\s*\{?\s*[^}]*\s*\{\s*$/.test(result) || /^\s*default\s*\{\s*$/.test(result)) { - result = result.replace(/\s*\{\s*$/, ' {'); - } - - return result; - } - - private formatTryCatchFinally(line: string): string { - let result = line; - - // 格式化try语句 - if (/^\s*try\s*\{?/i.test(result)) { - result = result.replace(/^(\s*)(try)\s*\{?(.*)$/i, '$1$2 {$3'); - } - - // 格式化catch语句 - const catchPattern = /^(\s*)(catch)\s*(\[[^\]]*\])?\s*\{?(.*)$/i; - const catchMatch = result.match(catchPattern); - if (catchMatch) { - const [, indent, catchKeyword, exceptionType, rest] = catchMatch; - const exception = exceptionType || ''; - result = `${indent}${catchKeyword}${exception} {${rest}`; - } - - // 格式化finally语句 - if (/^\s*finally\s*\{?/i.test(result)) { - result = result.replace(/^(\s*)(finally)\s*\{?(.*)$/i, '$1$2 {$3'); - } - - return result; - } - - private formatParamBlock(line: string): string { - let result = line; - - // 格式化param块开始 - if (/^\s*param\s*\(/i.test(result)) { - result = result.replace(/^(\s*)(param)\s*\(/i, '$1$2('); - } - - // 格式化参数属性 - const paramAttributePattern = /^\s*(\[Parameter\([^\]]*\)\])\s*(.*)$/i; - const attrMatch = result.match(paramAttributePattern); - if (attrMatch) { - const [, attribute, rest] = attrMatch; - result = ` ${attribute}\n ${rest}`; - } - - return result; - } - - private formatPowerShellKeywords(line: string): string { - let result = line; - - // PowerShell关键字列表 - const keywords = [ - 'begin', 'process', 'end', 'filter', 'class', 'enum', - 'using', 'namespace', 'return', 'throw', 'break', 'continue', - 'exit', 'param', 'dynamicparam', 'workflow', 'configuration' - ]; - - // 确保关键字后有适当的空格 - keywords.forEach(keyword => { - const pattern = new RegExp(`\\b(${keyword})\\s*`, 'gi'); - result = result.replace(pattern, `$1 `); - }); - - // 特殊处理某些关键字 - result = result.replace(/\breturn\s+/gi, 'return '); - result = result.replace(/\bthrow\s+/gi, 'throw '); - - return result; - } - - private formatVariableDeclarations(line: string): string { - let result = line; - - // 格式化变量类型声明: [string]$variable = value - const typeVarPattern = /^(\s*)(\[[^\]]+\])\s*(\$\w+)\s*(=.*)?$/; - const match = result.match(typeVarPattern); - - if (match) { - const [, indent, type, variable, assignment] = match; - result = `${indent}${type}${variable}${assignment || ''}`; - } - - return result; - } - - private formatComment(line: string): string { - // 单行注释格式化 - if (line.includes('#') && !line.includes('<#') && !line.includes('#>')) { - const commentIndex = line.indexOf('#'); - const beforeComment = line.substring(0, commentIndex).trim(); - const comment = line.substring(commentIndex).trim(); - - if (beforeComment.length > 0) { - // 确保注释前有适当的空格 - return `${beforeComment} ${comment}`; - } - return comment; - } - return line; - } - - private shouldIncreaseIndent(line: string): boolean { - // PowerShell 块开始模式 - const blockStartPatterns = [ - /\{\s*$/, // 单独的大括号 - /\bif\s*\([^)]*\)\s*\{\s*$/i, - /\belseif\s*\([^)]*\)\s*\{\s*$/i, - /\belse\s*\{\s*$/i, - /\bwhile\s*\([^)]*\)\s*\{\s*$/i, - /\bfor\s*\([^)]*\)\s*\{\s*$/i, - /\bforeach\s*\([^)]*\)\s*\{\s*$/i, - /\bdo\s*\{\s*$/i, - /\btry\s*\{\s*$/i, - /\bcatch\s*(\[[^\]]*\])?\s*\{\s*$/i, - /\bfinally\s*\{\s*$/i, - /\bfunction\s+\w+.*\{\s*$/i, - ]; - - return blockStartPatterns.some(pattern => pattern.test(line)); - } - - private shouldDecreaseIndent(line: string): boolean { - // PowerShell 块结束模式 - const blockEndPatterns = [ - /^\s*\}\s*$/, // 单独的右大括号 - /^\s*\}\s*else/i, - /^\s*\}\s*elseif/i, - /^\s*\}\s*catch/i, - /^\s*\}\s*finally/i, - ]; - - return blockEndPatterns.some(pattern => pattern.test(line)); - } - - private getIndent(level: number): string { - if (level <= 0) return ''; - const indentChar = this.options.useTabsForIndentation ? '\t' : ' '; - const indentSize = this.options.useTabsForIndentation ? 1 : this.options.indentSize; - return indentChar.repeat(level * indentSize); - } -} - -/** - * 便捷的格式化函数 - */ -export function formatPowerShellCode( - code: string, - options?: PowerShellFormatterOptions -): string { - const formatter = new PowerShellFormatter(options); - return formatter.format(code); -} - -/** - * PowerShell代码解析器 - */ -const parser = (scriptContent: string): Promise => { - return new Promise((resolve) => { - try { - const astNode: PowerShellAstNode = { - type: 'ScriptBlockAst', - value: scriptContent, - start: 0, - end: scriptContent.length - }; - - resolve(astNode); - } catch (error) { - console.warn('PowerShell parsing fallback used:', error); - resolve({ - type: 'ScriptBlockAst', - value: scriptContent, - start: 0, - end: scriptContent.length - }); - } - }); -}; - -/** - * Prettier解析函数 - */ -const parse = async (scriptContent: string, parsers?: any, opts?: any): Promise => { - return await parser(scriptContent); -}; - -export default parse; \ No newline at end of file diff --git a/frontend/src/common/prettier/plugins/powershell/parser.ts b/frontend/src/common/prettier/plugins/powershell/parser.ts new file mode 100644 index 0000000..a4a7424 --- /dev/null +++ b/frontend/src/common/prettier/plugins/powershell/parser.ts @@ -0,0 +1,821 @@ +/** + * PowerShell 语法分析器 (Parser) + * 将词法分析器产生的tokens转换为抽象语法树(AST) + */ + +import { Token, TokenType } from './lexer'; +import { + ASTNode, + ScriptBlockAst, + StatementAst, + ExpressionAst, + PipelineAst, + CommandAst, + AssignmentAst, + VariableAst, + LiteralAst, + BinaryExpressionAst, + IfStatementAst, + FunctionDefinitionAst, + ParameterAst, + ASTNodeFactory, + CommentAst, + PipelineElementAst, + ElseIfClauseAst, + UnaryExpressionAst, + ParenthesizedExpressionAst +} from './ast'; + +export class PowerShellParser { + private tokens: Token[]; + private currentIndex: number = 0; + private comments: CommentAst[] = []; + + private originalCode: string; + + constructor(tokens: Token[], originalCode: string = '') { + this.tokens = tokens; + this.currentIndex = 0; + this.originalCode = originalCode; + } + + /** + * 解析tokens生成AST + */ + public parse(): ScriptBlockAst { + const statements: StatementAst[] = []; + + while (!this.isAtEnd()) { + // 跳过空白和换行 + this.skipWhitespaceAndNewlines(); + + if (this.isAtEnd()) { + break; + } + + // 处理注释 + if (this.match(TokenType.COMMENT, TokenType.MULTILINE_COMMENT)) { + const comment = this.parseComment(); + this.comments.push(comment); + continue; + } + + const statement = this.parseStatement(); + if (statement) { + statements.push(statement); + } + } + + const start = this.tokens.length > 0 ? this.tokens[0].startIndex : 0; + const end = this.tokens.length > 0 ? this.tokens[this.tokens.length - 1].endIndex : 0; + const line = this.tokens.length > 0 ? this.tokens[0].line : 1; + const column = this.tokens.length > 0 ? this.tokens[0].column : 1; + + return ASTNodeFactory.createScriptBlock(statements, start, end, line, column); + } + + public getComments(): CommentAst[] { + return this.comments; + } + + private parseStatement(): StatementAst | null { + // 函数定义 + if (this.check(TokenType.FUNCTION)) { + return this.parseFunctionDefinition(); + } + + // 控制流语句 + if (this.check(TokenType.IF)) { + return this.parseIfStatement(); + } + + // 赋值或管道 + return this.parsePipeline(); + } + + private parseFunctionDefinition(): FunctionDefinitionAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + this.consume(TokenType.FUNCTION, "Expected 'function'"); + + // 函数名可能是CMDLET类型(如Get-Something)或IDENTIFIER + let nameToken: Token; + if (this.check(TokenType.CMDLET)) { + nameToken = this.consume(TokenType.CMDLET, "Expected function name"); + } else { + nameToken = this.consume(TokenType.IDENTIFIER, "Expected function name"); + } + const name = nameToken.value; + + // 解析参数 + const parameters: ParameterAst[] = []; + if (this.match(TokenType.LEFT_PAREN)) { + if (!this.check(TokenType.RIGHT_PAREN)) { + do { + const param = this.parseParameter(); + if (param) { + parameters.push(param); + } + } while (this.match(TokenType.COMMA)); + } + this.consume(TokenType.RIGHT_PAREN, "Expected ')' after parameters"); + } + + // 解析函数体 + const body = this.parseScriptBlock(); + + const end = this.previous().endIndex; + + return ASTNodeFactory.createFunctionDefinition(name, parameters, body, start, end, line, column); + } + + private parseIfStatement(): IfStatementAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + this.consume(TokenType.IF, "Expected 'if'"); + + // PowerShell的if语句可能有括号,也可能没有 + const hasParens = this.check(TokenType.LEFT_PAREN); + if (hasParens) { + this.consume(TokenType.LEFT_PAREN, "Expected '(' after 'if'"); + } + + const condition = this.parseExpression(); + + if (hasParens) { + this.consume(TokenType.RIGHT_PAREN, "Expected ')' after if condition"); + } + + const ifBody = this.parseScriptBlock(); + + const elseIfClauses: ElseIfClauseAst[] = []; + let elseBody: ScriptBlockAst | undefined; + + // 处理 elseif 子句 + while (this.match(TokenType.ELSEIF)) { + const elseIfStart = this.previous().startIndex; + const elseIfLine = this.previous().line; + const elseIfColumn = this.previous().column; + + this.consume(TokenType.LEFT_PAREN, "Expected '(' after 'elseif'"); + const elseIfCondition = this.parseExpression(); + this.consume(TokenType.RIGHT_PAREN, "Expected ')' after elseif condition"); + const elseIfBody = this.parseScriptBlock(); + + const elseIfEnd = this.previous().endIndex; + + elseIfClauses.push({ + type: 'ElseIfClause', + condition: elseIfCondition, + body: elseIfBody, + start: elseIfStart, + end: elseIfEnd, + line: elseIfLine, + column: elseIfColumn + }); + } + + // 处理 else 子句 + if (this.match(TokenType.ELSE)) { + elseBody = this.parseScriptBlock(); + } + + const end = this.previous().endIndex; + + return ASTNodeFactory.createIfStatement(condition, ifBody, elseIfClauses, elseBody, start, end, line, column); + } + + private parsePipeline(): PipelineAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + const elements: PipelineElementAst[] = []; + + // 解析第一个元素 + const firstElement = this.parsePipelineElement(); + elements.push(firstElement); + + // 解析管道链 + while (this.match(TokenType.PIPE)) { + const element = this.parsePipelineElement(); + elements.push(element); + } + + const end = this.previous().endIndex; + + return ASTNodeFactory.createPipeline(elements, start, end, line, column); + } + + private parsePipelineElement(): PipelineElementAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + const expression = this.parseAssignment(); + const end = this.previous().endIndex; + + return { + type: 'PipelineElement', + expression, + start, + end, + line, + column + }; + } + + private parseAssignment(): ExpressionAst { + const expr = this.parseLogicalOr(); + + if (this.match(TokenType.ASSIGNMENT)) { + const operator = this.previous().value; + const right = this.parseAssignment(); + + return ASTNodeFactory.createAssignment( + expr, + operator, + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } + + return expr; + } + + private parseLogicalOr(): ExpressionAst { + let expr = this.parseLogicalAnd(); + + while (this.match(TokenType.LOGICAL)) { + const operator = this.previous().value.toLowerCase(); + if (operator === '-or' || operator === '-xor') { + const right = this.parseLogicalAnd(); + expr = ASTNodeFactory.createBinaryExpression( + expr, + this.previous().value, // 使用原始大小写 + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } else { + // 如果不是预期的操作符,回退 + this.currentIndex--; + break; + } + } + + return expr; + } + + private parseLogicalAnd(): ExpressionAst { + let expr = this.parseComparison(); + + while (this.match(TokenType.LOGICAL)) { + const operator = this.previous().value.toLowerCase(); + if (operator === '-and') { + const right = this.parseComparison(); + expr = ASTNodeFactory.createBinaryExpression( + expr, + this.previous().value, // 使用原始大小写 + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } else { + // 如果不是预期的操作符,回退 + this.currentIndex--; + break; + } + } + + return expr; + } + + private parseComparison(): ExpressionAst { + let expr = this.parseArithmetic(); + + while (this.match(TokenType.COMPARISON)) { + const operator = this.previous().value; + const right = this.parseArithmetic(); + expr = ASTNodeFactory.createBinaryExpression( + expr, + operator, + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } + + return expr; + } + + private parseArithmetic(): ExpressionAst { + let expr = this.parseMultiplicative(); + + while (this.match(TokenType.ARITHMETIC)) { + const token = this.previous(); + if (token.value === '+' || token.value === '-') { + const operator = token.value; + const right = this.parseMultiplicative(); + expr = ASTNodeFactory.createBinaryExpression( + expr, + operator, + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } + } + + return expr; + } + + private parseMultiplicative(): ExpressionAst { + let expr = this.parseUnary(); + + while (this.match(TokenType.ARITHMETIC)) { + const token = this.previous(); + if (token.value === '*' || token.value === '/' || token.value === '%') { + const operator = token.value; + const right = this.parseUnary(); + expr = ASTNodeFactory.createBinaryExpression( + expr, + operator, + right, + expr.start, + right.end, + expr.line, + expr.column + ); + } + } + + return expr; + } + + private parseUnary(): ExpressionAst { + if (this.match(TokenType.LOGICAL)) { + const token = this.previous(); + const operator = token.value.toLowerCase(); + if (operator === '-not') { + const operand = this.parseUnary(); + return { + type: 'UnaryExpression', + operator: token.value, // 使用原始大小写 + operand, + start: token.startIndex, + end: operand.end, + line: token.line, + column: token.column + } as UnaryExpressionAst; + } else { + // 如果不是-not,回退token + this.currentIndex--; + } + } + + // 处理算术一元操作符(+, -) + if (this.match(TokenType.ARITHMETIC)) { + const token = this.previous(); + if (token.value === '+' || token.value === '-') { + const operand = this.parseUnary(); + return { + type: 'UnaryExpression', + operator: token.value, + operand, + start: token.startIndex, + end: operand.end, + line: token.line, + column: token.column + } as UnaryExpressionAst; + } else { + // 如果不是一元操作符,回退 + this.currentIndex--; + } + } + + return this.parsePrimary(); + } + + private parsePrimary(): ExpressionAst { + // 变量 + if (this.match(TokenType.VARIABLE)) { + const token = this.previous(); + return ASTNodeFactory.createVariable( + token.value, + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 字符串字面量 + if (this.match(TokenType.STRING, TokenType.HERE_STRING)) { + const token = this.previous(); + return ASTNodeFactory.createLiteral( + token.value, + 'String', + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 数字字面量 + if (this.match(TokenType.NUMBER)) { + const token = this.previous(); + const value = parseFloat(token.value); + return ASTNodeFactory.createLiteral( + value, + 'Number', + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 命令调用 - 扩展支持更多token类型 + if (this.match(TokenType.CMDLET, TokenType.IDENTIFIER)) { + return this.parseCommand(); + } + + // 处理看起来像cmdlet但被错误标记的标识符 + if (this.check(TokenType.IDENTIFIER) && this.current().value.includes('-')) { + this.advance(); + return this.parseCommand(); + } + + // 哈希表 @{...} + if (this.check(TokenType.LEFT_BRACE) && this.current().value === '@{') { + return this.parseHashtable(); + } + + // 脚本块表达式 {...} - 已在parseHashtableValue中处理 + // 这里不需要处理,因为独立的脚本块很少见 + + // 括号表达式 + if (this.match(TokenType.LEFT_PAREN)) { + const expr = this.parseExpression(); + this.consume(TokenType.RIGHT_PAREN, "Expected ')' after expression"); + return { + type: 'ParenthesizedExpression', + expression: expr, + start: this.previous().startIndex, + end: this.previous().endIndex, + line: this.previous().line, + column: this.previous().column + } as ParenthesizedExpressionAst; + } + + // 对于不认识的token,作为普通标识符处理而不是抛出异常 + const token = this.advance(); + return ASTNodeFactory.createLiteral( + token.value, + 'String', // 将未识别的token作为字符串处理 + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + private parseCommand(): CommandAst { + const start = this.previous().startIndex; + const line = this.previous().line; + const column = this.previous().column; + const commandName = this.previous().value; + + const parameters: ParameterAst[] = []; + const args: ExpressionAst[] = []; + + // 解析参数和参数值 + while (!this.isAtEnd() && + !this.check(TokenType.PIPE) && + !this.check(TokenType.NEWLINE) && + !this.check(TokenType.SEMICOLON) && + !this.check(TokenType.RIGHT_PAREN) && + !this.check(TokenType.RIGHT_BRACE)) { + + if (this.match(TokenType.PARAMETER)) { + const paramToken = this.previous(); + const param: ParameterAst = { + type: 'Parameter', + name: paramToken.value, + start: paramToken.startIndex, + end: paramToken.endIndex, + line: paramToken.line, + column: paramToken.column + }; + + // 检查参数是否有值 + if (!this.check(TokenType.PARAMETER) && + !this.check(TokenType.PIPE) && + !this.check(TokenType.NEWLINE) && + !this.check(TokenType.SEMICOLON)) { + param.value = this.parsePrimary(); + } + + parameters.push(param); + } else { + // 位置参数 + const arg = this.parsePrimary(); + args.push(arg); + } + } + + const end = this.previous().endIndex; + + return ASTNodeFactory.createCommand(commandName, parameters, args, start, end, line, column); + } + + private parseParameter(): ParameterAst | null { + if (this.match(TokenType.PARAMETER)) { + const token = this.previous(); + const param: ParameterAst = { + type: 'Parameter', + name: token.value, + start: token.startIndex, + end: token.endIndex, + line: token.line, + column: token.column + }; + + // 检查是否有参数值 + if (this.match(TokenType.ASSIGNMENT)) { + param.value = this.parseExpression(); + } + + return param; + } + return null; + } + + private parseScriptBlock(): ScriptBlockAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + this.consume(TokenType.LEFT_BRACE, "Expected '{'"); + + const statements: StatementAst[] = []; + + while (!this.check(TokenType.RIGHT_BRACE) && !this.isAtEnd()) { + this.skipWhitespaceAndNewlines(); + + if (this.check(TokenType.RIGHT_BRACE)) { + break; + } + + const statement = this.parseStatement(); + if (statement) { + statements.push(statement); + } + } + + this.consume(TokenType.RIGHT_BRACE, "Expected '}'"); + + const end = this.previous().endIndex; + + return ASTNodeFactory.createScriptBlock(statements, start, end, line, column); + } + + private parseExpression(): ExpressionAst { + return this.parseAssignment(); + } + + private parseComment(): CommentAst { + const token = this.previous(); + const isMultiline = token.type === TokenType.MULTILINE_COMMENT; + + return ASTNodeFactory.createComment( + token.value, + isMultiline, + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 辅助方法 + private match(...types: TokenType[]): boolean { + for (const type of types) { + if (this.check(type)) { + this.advance(); + return true; + } + } + return false; + } + + private check(type: TokenType): boolean { + if (this.isAtEnd()) return false; + return this.current().type === type; + } + + private advance(): Token { + if (!this.isAtEnd()) this.currentIndex++; + return this.previous(); + } + + private isAtEnd(): boolean { + return this.currentIndex >= this.tokens.length || this.current().type === TokenType.EOF; + } + + private current(): Token { + if (this.currentIndex >= this.tokens.length) { + return this.tokens[this.tokens.length - 1]; + } + return this.tokens[this.currentIndex]; + } + + private previous(): Token { + return this.tokens[this.currentIndex - 1]; + } + + private consume(type: TokenType, message: string): Token { + if (this.check(type)) return this.advance(); + + const current = this.current(); + throw new Error(`${message}. Got ${current.type}(${current.value}) at line ${current.line}, column ${current.column}`); + } + + + private parseHashtable(): ExpressionAst { + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + // 消费 @{ + this.advance(); + + const entries: any[] = []; + + // 解析哈希表内容 + if (!this.check(TokenType.RIGHT_BRACE)) { + do { + // 解析键 - 只接受简单的标识符或字符串 + const key = this.parseHashtableKey(); + + // 消费 = + this.consume(TokenType.ASSIGNMENT, "Expected '=' after hashtable key"); + + // 解析值 + const value = this.parseHashtableValue(); + + entries.push({ + type: 'HashtableEntry', + key, + value, + start: key.start, + end: value.end, + line: key.line, + column: key.column + }); + + } while (this.match(TokenType.SEMICOLON)); + } + + this.consume(TokenType.RIGHT_BRACE, "Expected '}' after hashtable entries"); + const end = this.previous().endIndex; + + return { + type: 'Hashtable', + entries, + start, + end, + line, + column + } as any; + } + + private parseHashtableKey(): ExpressionAst { + // 哈希表键只能是简单的标识符或字符串 + if (this.match(TokenType.STRING, TokenType.HERE_STRING)) { + const token = this.previous(); + return ASTNodeFactory.createLiteral( + token.value, + 'String', + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 接受各种可能的标识符类型作为哈希表键 + if (this.match(TokenType.IDENTIFIER, TokenType.CMDLET, TokenType.KEYWORD)) { + const token = this.previous(); + return ASTNodeFactory.createLiteral( + token.value, + 'String', + token.startIndex, + token.endIndex, + token.line, + token.column + ); + } + + // 对于任何其他类型的token,尝试作为字面量处理 + const currentToken = this.current(); + this.advance(); + return ASTNodeFactory.createLiteral( + currentToken.value, + 'String', + currentToken.startIndex, + currentToken.endIndex, + currentToken.line, + currentToken.column + ); + } + + private parseHashtableValue(): ExpressionAst { + // 哈希表值可以是任何表达式 + if (this.check(TokenType.LEFT_BRACE)) { + // 这是一个脚本块 {expression} - 完全绕过复杂解析 + const start = this.current().startIndex; + const line = this.current().line; + const column = this.current().column; + + // 直接从原始代码中提取脚本块内容 + const startPos = this.current().startIndex; + this.advance(); // 消费 { + + let braceLevel = 1; + let endPos = this.current().startIndex; + + // 找到匹配的右大括号位置 + while (!this.isAtEnd() && braceLevel > 0) { + const token = this.current(); + if (token.type === TokenType.LEFT_BRACE) { + braceLevel++; + } else if (token.type === TokenType.RIGHT_BRACE) { + braceLevel--; + if (braceLevel === 0) { + endPos = token.startIndex; + break; + } + } + this.advance(); + } + + this.consume(TokenType.RIGHT_BRACE, "Expected '}' after script block"); + const end = this.previous().endIndex; + + // 从原始代码中提取内容(从 { 后到 } 前) + const rawContent = this.getOriginalCodeSlice(startPos + 1, endPos); + + return { + type: 'ScriptBlockExpression', + rawContent: rawContent.trim(), // 去掉首尾空白 + start, + end, + line, + column + } as any; + } + + // 对于其他值,使用简单的解析 + return this.parsePrimary(); + } + + private getOriginalCodeSlice(start: number, end: number): string { + // 直接从原始代码中提取片段 + if (this.originalCode) { + return this.originalCode.substring(start, end); + } + + // 回退到基于token重建(如果没有原始代码) + let result = ''; + for (const token of this.tokens) { + if (token.startIndex >= start && token.endIndex <= end) { + result += token.value; + } + } + return result; + } + + private skipWhitespaceAndNewlines(): void { + while (this.match(TokenType.WHITESPACE, TokenType.NEWLINE)) { + // 继续跳过 + } + } +} diff --git a/frontend/src/common/prettier/plugins/toml/index.ts b/frontend/src/common/prettier/plugins/toml/index.ts new file mode 100644 index 0000000..b9be469 --- /dev/null +++ b/frontend/src/common/prettier/plugins/toml/index.ts @@ -0,0 +1,72 @@ +/** + * Prettier Plugin for TOML file formatting + * + * This plugin provides support for formatting TOML (Tom's Obvious, Minimal Language) files + * using the @toml-tools/parser and custom beautifier. + */ + +import type { Plugin, Parser, Printer, SupportLanguage, SupportOption } from 'prettier'; +import { parse } from '@toml-tools/parser'; +import { locStart, locEnd } from './loc'; +import { print } from './printer'; +import type { TomlDocument, TomlCstNode } from './types'; + +const parserName = 'toml'; + +// https://prettier.io/docs/en/plugins.html#languages +const languages: SupportLanguage[] = [ + { + extensions: ['.toml'], + name: 'Toml', + parsers: [parserName], + filenames: ['Cargo.lock', 'Gopkg.lock'], + tmScope: 'source.toml', + aceMode: 'toml', + codemirrorMode: 'toml', + codemirrorMimeType: 'text/x-toml', + linguistLanguageId: 365, + vscodeLanguageIds: ['toml'], + }, +]; + +// https://prettier.io/docs/en/plugins.html#parsers +const tomlParser: Parser = { + astFormat: 'toml-cst', + parse: (text: string): TomlDocument => { + try { + return parse(text) as TomlDocument; + } catch (error) { + console.error('TOML parsing error:', error); + throw error; + } + }, + locStart, + locEnd, +}; + +// https://prettier.io/docs/en/plugins.html#printers +const tomlPrinter: Printer = { + print, +}; + +// Plugin options +const options: Record = { + +}; + +// Plugin definition +const tomlPlugin: Plugin = { + languages, + parsers: { + [parserName]: tomlParser, + }, + printers: { + 'toml-cst': tomlPrinter, + }, + options, +}; + +export default tomlPlugin; +export { languages }; +export const parsers = tomlPlugin.parsers; +export const printers = tomlPlugin.printers; diff --git a/frontend/src/common/prettier/plugins/toml/loc.ts b/frontend/src/common/prettier/plugins/toml/loc.ts new file mode 100644 index 0000000..8d1eae7 --- /dev/null +++ b/frontend/src/common/prettier/plugins/toml/loc.ts @@ -0,0 +1,82 @@ +/** + * Location utilities for TOML CST nodes + * These functions help Prettier determine the location of nodes for formatting + */ + +import type { TomlCstNode } from './types'; + +/** + * Get the start location of a CST node + * @param cstNode - The TOML CST node + * @returns The start offset of the node + */ +export function locStart(cstNode: TomlCstNode): number { + if (!cstNode) { + return 0; + } + + // If the node has a direct startOffset, use it + if (typeof cstNode.startOffset === 'number') { + return cstNode.startOffset; + } + + // If the node has children, find the earliest start offset + if (cstNode.children) { + let minOffset = Infinity; + for (const key in cstNode.children) { + const childrenArray = cstNode.children[key]; + if (Array.isArray(childrenArray)) { + for (const child of childrenArray) { + const childStart = locStart(child); + if (childStart < minOffset) { + minOffset = childStart; + } + } + } + } + return minOffset === Infinity ? 0 : minOffset; + } + + return 0; +} + +/** + * Get the end location of a CST node + * @param cstNode - The TOML CST node + * @returns The end offset of the node + */ +export function locEnd(cstNode: TomlCstNode): number { + if (!cstNode) { + return 0; + } + + // If the node has a direct endOffset, use it + if (typeof cstNode.endOffset === 'number') { + return cstNode.endOffset; + } + + // If the node has children, find the latest end offset + if (cstNode.children) { + let maxOffset = -1; + for (const key in cstNode.children) { + const childrenArray = cstNode.children[key]; + if (Array.isArray(childrenArray)) { + for (const child of childrenArray) { + const childEnd = locEnd(child); + if (childEnd > maxOffset) { + maxOffset = childEnd; + } + } + } + } + return maxOffset === -1 ? 0 : maxOffset; + } + + // If the node has an image (token), return the length + if (cstNode.image) { + const startOffset = locStart(cstNode); + return startOffset + cstNode.image.length; + } + + return 0; +} diff --git a/frontend/src/common/prettier/plugins/toml/printer-utils.ts b/frontend/src/common/prettier/plugins/toml/printer-utils.ts new file mode 100644 index 0000000..e00d38c --- /dev/null +++ b/frontend/src/common/prettier/plugins/toml/printer-utils.ts @@ -0,0 +1,284 @@ +/** + * Utility functions for TOML printer + */ + +import type { TomlCstNode, TomlComment, TomlContext } from './types'; + +/** + * Trim trailing whitespace from comment text + * @param commentText - The comment text to trim + * @returns Trimmed comment text + */ +export function trimComment(commentText: string): string { + return commentText.replace(/[ \t]+$/, ''); +} + +/** + * Check if a quoted string can be unquoted + * @param quotedText - The quoted text to check + * @returns Whether the text can be unquoted + */ +export function canUnquote(quotedText: string): boolean { + // Remove quotes if present + let text = quotedText; + if (text.startsWith('"') && text.endsWith('"')) { + text = text.slice(1, -1); + } else if (text.startsWith("'") && text.endsWith("'")) { + text = text.slice(1, -1); + } + + // Empty string needs quotes + if (text.length === 0) { + return false; + } + + // Check if the string is a valid unquoted key + // TOML unquoted keys can contain: + // - A-Z, a-z, 0-9, _, - + const unquotedKeyRegex = /^[A-Za-z0-9_-]+$/; + + // Additional checks for values that might be confused with other TOML types + if (unquotedKeyRegex.test(text)) { + // Don't unquote strings that look like booleans + if (text === 'true' || text === 'false') { + return false; + } + + // Don't unquote strings that look like numbers + if (/^[+-]?(\d+\.?\d*|\d*\.\d+)([eE][+-]?\d+)?$/.test(text)) { + return false; + } + + // Don't unquote strings that look like dates/times + if (/^\d{4}-\d{2}-\d{2}/.test(text)) { + return false; + } + + return true; + } + + return false; +} + +/** + * Check if a key needs quotes + * @param keyText - The key text to check + * @returns Whether the key needs quotes + */ +export function keyNeedsQuotes(keyText: string): boolean { + return !canUnquote(`"${keyText}"`); +} + +/** + * Format a key, adding or removing quotes as needed + * @param keyText - The key text to format + * @returns Formatted key + */ +export function formatKey(keyText: string): string { + // If already quoted, check if we can unquote + if ((keyText.startsWith('"') && keyText.endsWith('"')) || + (keyText.startsWith("'") && keyText.endsWith("'"))) { + if (canUnquote(keyText)) { + return keyText.slice(1, -1); + } + return keyText; + } + + // If not quoted, check if we need to add quotes + if (keyNeedsQuotes(keyText)) { + return `"${keyText}"`; + } + + return keyText; +} + +/** + * Check if a string contains escape sequences that need to be preserved + * @param str - The string to check + * @returns Whether the string contains escape sequences + */ +export function containsEscapeSequences(str: string): boolean { + // Check for common escape sequences + return /\\[btnfr"\\\/]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}/.test(str); +} + +/** + * Check if a string can use literal string syntax (single quotes) + * @param str - The string to check (without quotes) + * @returns Whether literal string syntax can be used + */ +export function canUseLiteralString(str: string): boolean { + // Literal strings cannot contain single quotes or control characters + // and don't need escape sequences + return !str.includes("'") && + !/[\x00-\x08\x0A-\x1F\x7F]/.test(str) && + !containsEscapeSequences(str); +} + +/** + * Check if a string should use multiline syntax + * @param str - The string to check (without quotes) + * @returns Whether multiline syntax should be used + */ +export function shouldUseMultiline(str: string): boolean { + // Use multiline for strings that contain newlines + return str.includes('\n') || str.includes('\r'); +} + +/** + * Format a string value optimally + * @param value - The string value (potentially with quotes) + * @returns Optimally formatted string + */ +export function formatStringValue(value: string): string { + // If it's already a properly formatted string, keep it + if (!value.startsWith('"') && !value.startsWith("'")) { + return value; + } + + // Extract the actual string content + let content: string; + let isLiteral = false; + + if (value.startsWith('"""') && value.endsWith('"""')) { + // Multiline basic string + content = value.slice(3, -3); + } else if (value.startsWith("'''") && value.endsWith("'''")) { + // Multiline literal string + content = value.slice(3, -3); + isLiteral = true; + } else if (value.startsWith('"') && value.endsWith('"')) { + // Basic string + content = value.slice(1, -1); + } else if (value.startsWith("'") && value.endsWith("'")) { + // Literal string + content = value.slice(1, -1); + isLiteral = true; + } else { + return value; // Fallback + } + + // Decide on the best format + if (shouldUseMultiline(content)) { + if (isLiteral || !containsEscapeSequences(content)) { + // Use multiline literal string if no escapes needed + return `'''${content}'''`; + } else { + // Use multiline basic string + return `"""${content}"""`; + } + } else { + if (canUseLiteralString(content) && !containsEscapeSequences(content)) { + // Use literal string for simple cases + return `'${content}'`; + } else { + // Use basic string + return `"${content}"`; + } + } +} + +/** + * Optimize value representation (for strings, numbers, etc.) + * @param value - The value to optimize + * @returns Optimized value representation + */ +export function optimizeValue(value: string): string { + // Handle string values + if (value.startsWith('"') || value.startsWith("'")) { + return formatStringValue(value); + } + + // For non-strings, return as-is + return value; +} + +/** + * Collect all comments from comment newline nodes + * @param commentsNL - Array of comment newline nodes + * @returns Array of comment tokens + */ +export function collectComments(commentsNL: TomlCstNode[] = []): TomlComment[] { + const comments: TomlComment[] = []; + + commentsNL.forEach((commentNLNode) => { + if (commentNLNode.children?.Comment) { + const commentsTok = commentNLNode.children.Comment; + for (const comment of commentsTok) { + if (comment.image) { + comments.push(comment as TomlComment); + } + } + } + }); + + return comments; +} + +/** + * Get a single element from a context that should contain exactly one key-value pair + * @param ctx - The context to extract from + * @returns The single element + * @throws Error if the context doesn't contain exactly one element + */ +export function getSingle(ctx: TomlContext): TomlCstNode { + const ctxKeys = Object.keys(ctx); + if (ctxKeys.length !== 1) { + throw new Error( + `Expecting single key CST ctx but found: <${ctxKeys.length}> keys` + ); + } + + const singleElementKey = ctxKeys[0]; + const singleElementValues = ctx[singleElementKey]; + + if (!Array.isArray(singleElementValues) || singleElementValues.length !== 1) { + throw new Error( + `Expecting single item in CST ctx key but found: <${singleElementValues?.length || 0}> items` + ); + } + + return singleElementValues[0]; +} + +/** + * Get the start offset of an array item (deprecated - use arrItemProp instead) + * @param item - The array item node + * @returns The start offset + */ +export function arrItemOffset(item: TomlCstNode): number { + return arrItemProp(item, 'startOffset') as number; +} + +/** + * Get a specific property from an array item, handling wrapped values + * @param item - The array item node + * @param propName - The property name to retrieve + * @returns The property value + * @throws Error for non-exhaustive matches + */ +export function arrItemProp(item: TomlCstNode, propName: keyof TomlCstNode): any { + let currentItem = item; + + // Unwrap 'val' nodes + if (currentItem.name === 'val' && currentItem.children) { + currentItem = getSingle(currentItem.children); + } + + // Direct property access + if (currentItem[propName] !== undefined) { + return currentItem[propName]; + } + + // Check for LSquare (array start) + if (currentItem.children?.LSquare?.[0]?.[propName] !== undefined) { + return currentItem.children.LSquare[0][propName]; + } + + // Check for LCurly (inline table start) + if (currentItem.children?.LCurly?.[0]?.[propName] !== undefined) { + return currentItem.children.LCurly[0][propName]; + } + + throw new Error(`Non-exhaustive match for property ${propName}`); +} diff --git a/frontend/src/common/prettier/plugins/toml/printer.ts b/frontend/src/common/prettier/plugins/toml/printer.ts new file mode 100644 index 0000000..381b39a --- /dev/null +++ b/frontend/src/common/prettier/plugins/toml/printer.ts @@ -0,0 +1,413 @@ +/** + * TOML Printer for Prettier + * + * This module provides a visitor-based printer for TOML CST nodes, + * converting them to Prettier's document format. + */ + +import { BaseTomlCstVisitor } from '@toml-tools/parser'; +import { tokensDictionary as t } from '@toml-tools/lexer'; +import { doc } from 'prettier'; +import type { AstPath, Doc } from 'prettier'; +import { + trimComment, + collectComments, + arrItemOffset, + arrItemProp, + getSingle, + formatKey, + optimizeValue, +} from './printer-utils'; +import type { + TomlCstNode, + TomlDocument, + TomlExpression, + TomlKeyVal, + TomlComment, + TomlContext +} from './types'; + +const { join, line, hardline, softline, ifBreak, indent, group } = doc.builders; + +/** + * TOML Beautifier Visitor class that extends the base CST visitor + */ +class TomlBeautifierVisitor extends BaseTomlCstVisitor { + // Helper methods + public mapVisit: (elements: TomlCstNode[] | undefined) => (Doc | string)[]; + public visitSingle: (ctx: TomlContext) => Doc | string; + public visit: (ctx: TomlCstNode, inParam?: any) => Doc | string; + + constructor() { + super(); + + // Try to call validateVisitor if it exists + if (typeof (this as any).validateVisitor === 'function') { + (this as any).validateVisitor(); + } + + // Initialize helper methods + this.mapVisit = (elements: TomlCstNode[] | undefined): (Doc | string)[] => { + if (!elements) { + return []; + } + return elements.map((element) => this.visit(element)); + }; + + this.visitSingle = (ctx: TomlContext): Doc | string => { + const singleElement = getSingle(ctx); + return this.visit(singleElement); + }; + + // Store reference to inherited visit method and override it + const originalVisit = Object.getPrototypeOf(this).visit?.bind(this); + this.visit = (ctx: TomlCstNode, inParam?: any): Doc | string => { + if (!ctx) { + return ''; + } + + // Try to use the inherited visit method first + if (originalVisit) { + try { + return originalVisit(ctx, inParam); + } catch (error) { + console.warn('Original visit method failed:', error); + } + } + + // Fallback: manually dispatch based on node name/type + const methodName = ctx.name; + if (methodName && typeof (this as any)[methodName] === 'function') { + const visitMethod = (this as any)[methodName]; + try { + if (ctx.children) { + return visitMethod.call(this, ctx.children); + } else { + return visitMethod.call(this, ctx); + } + } catch (error) { + console.warn(`Visit method ${methodName} failed:`, error); + } + } + + // Final fallback: return image if available + return ctx.image || ''; + }; + } + + /** + * Visit the root TOML document + */ + toml(ctx: TomlDocument): Doc { + // Handle empty toml document + if (!ctx.expression) { + return [line]; + } + + const isTable = (node: TomlExpression): boolean => { + return !!node.table; + }; + + const isOnlyComment = (node: TomlExpression): boolean => { + return !!node.Comment && Object.keys(node).length === 1; + }; + + const expsCsts = ctx.expression; + const cstGroups: TomlExpression[][] = []; + let currCstGroup: TomlExpression[] = []; + + // Split expressions into groups defined by tables + for (let i = expsCsts.length - 1; i >= 0; i--) { + const currCstNode = expsCsts[i]; + currCstGroup.push(currCstNode); + + if (isTable(currCstNode)) { + let j = i - 1; + let stillInComments = true; + + // Add leading comments to current group + while (j >= 0 && stillInComments) { + const priorCstNode = expsCsts[j]; + if (isOnlyComment(priorCstNode)) { + currCstGroup.push(priorCstNode); + j--; + i--; + } else { + stillInComments = false; + } + } + + // Reverse since we scanned backwards + currCstGroup.reverse(); + cstGroups.push(currCstGroup); + currCstGroup = []; + } + } + + if (currCstGroup.length > 0) { + currCstGroup.reverse(); + cstGroups.push(currCstGroup); + } + + // Adjust for reverse scanning + cstGroups.reverse(); + const docGroups = cstGroups.map((currGroup) => this.mapVisit(currGroup)); + + // Add newlines between group elements + const docGroupsInnerNewlines = docGroups.map((currGroup) => + join(line, currGroup) + ); + const docGroupsOuterNewlines = join([line, line], docGroupsInnerNewlines); + + return [docGroupsOuterNewlines, line]; + } + + /** + * Visit an expression (keyval, table, or comment) + */ + expression(ctx: TomlExpression): Doc | string { + if (ctx.keyval) { + let keyValDoc = this.visit(ctx.keyval[0]); + if (ctx.Comment) { + const commentText = trimComment(ctx.Comment[0].image); + keyValDoc = [keyValDoc, ' ' + commentText]; + } + return keyValDoc; + } else if (ctx.table) { + let tableDoc = this.visit(ctx.table[0]); + if (ctx.Comment) { + const commentText = trimComment(ctx.Comment[0].image); + tableDoc = [tableDoc, ' ' + commentText]; + } + return tableDoc; + } else if (ctx.Comment) { + return trimComment(ctx.Comment[0].image); + } + + return ''; + } + + /** + * Visit a key-value pair + */ + keyval(ctx: TomlKeyVal): Doc { + const keyDoc = this.visit(ctx.key[0]); + const valueDoc = this.visit(ctx.val[0]); + return [keyDoc, ' = ', valueDoc]; + } + + /** + * Visit a key + */ + key(ctx: any): Doc { + const keyTexts = ctx.IKey?.map((tok: any) => { + const keyText = tok.image; + // Apply key formatting (add/remove quotes as needed) + return formatKey(keyText); + }) || []; + + return join('.', keyTexts); + } + + /** + * Visit a value + */ + val(ctx: any): Doc | string { + try { + const actualValueNode = getSingle(ctx); + if (actualValueNode.image !== undefined) { + // Terminal token - 优化值的表示 + return optimizeValue(actualValueNode.image); + } else { + return this.visit(actualValueNode); + } + } catch (error) { + // 如果getSingle失败,尝试直接处理children + if (ctx.children) { + // 处理不同类型的值 + for (const [childKey, childNodes] of Object.entries(ctx.children)) { + if (Array.isArray(childNodes) && childNodes.length > 0) { + const firstChild = childNodes[0]; + + // 处理基本类型 + if (firstChild.image !== undefined) { + // 优化值的表示(特别是字符串) + return optimizeValue(firstChild.image); + } + + // 处理复杂类型(如数组、内联表等) + if (firstChild.name) { + return this.visit(firstChild); + } + } + } + } + + return ''; + } + } + + /** + * Visit an array + */ + array(ctx: any): Doc { + const arrayValuesDocs = ctx.arrayValues ? this.visit(ctx.arrayValues) : ''; + const postComments = collectComments(ctx.commentNewline); + const commentsDocs = postComments.map((commentTok) => { + const trimmedCommentText = trimComment(commentTok.image); + return [hardline, trimmedCommentText]; + }); + + return group(['[', indent([arrayValuesDocs, commentsDocs]), softline, ']']); + } + + /** + * Visit array values + */ + arrayValues(ctx: any): Doc { + const values = ctx.val || []; + const commas = ctx.Comma || []; + const comments = collectComments(ctx.commentNewline); + + const itemsCst = [...values, ...commas, ...comments]; + itemsCst.sort((a, b) => { + const aOffset = arrItemOffset(a); + const bOffset = arrItemOffset(b); + return aOffset - bOffset; + }); + + const itemsDoc: Doc[] = []; + + for (let i = 0; i < itemsCst.length; i++) { + const cstItem = itemsCst[i]; + + if (cstItem.name === 'val') { + const valDoc = this.visit(cstItem); + const valEndLine = arrItemProp(cstItem, 'endLine'); + let potentialComma = ''; + + // Handle next item (comma or comment) + if (itemsCst[i + 1]) { + let nextPossibleComment = itemsCst[i + 1]; + + // Skip commas + if (nextPossibleComment.tokenType === t.Comma) { + potentialComma = ','; + i++; + nextPossibleComment = itemsCst[i + 1]; + } + + // Handle same-line comments + if ( + nextPossibleComment && + nextPossibleComment.tokenType === t.Comment && + nextPossibleComment.startLine === valEndLine + ) { + i++; + const trimmedComment = trimComment(nextPossibleComment.image); + const comment = ' ' + trimmedComment; + itemsDoc.push([valDoc, potentialComma, comment, hardline]); + } else { + // No comment on same line + const isTrailingComma = i === itemsCst.length - 1; + const optionalCommaLineBreak = isTrailingComma + ? ifBreak(',', '') // Only print trailing comma if multiline array + : [potentialComma, line]; + itemsDoc.push([valDoc, optionalCommaLineBreak]); + } + } else { + // Last item without followup + itemsDoc.push([valDoc]); + } + } else if (cstItem.tokenType === t.Comment) { + // Separate line comment + const trimmedComment = trimComment(cstItem.image); + itemsDoc.push([trimmedComment, hardline]); + } else { + throw new Error('Non-exhaustive match in arrayValues'); + } + } + + return [softline, itemsDoc]; + } + + /** + * Visit an inline table + */ + inlineTable(ctx: any): Doc { + const inlineTableKeyValsDocs = ctx.inlineTableKeyVals + ? this.visit(ctx.inlineTableKeyVals) + : ''; + return group(['{ ', inlineTableKeyValsDocs, ' }']); + } + + /** + * Visit inline table key-value pairs + */ + inlineTableKeyVals(ctx: any): Doc { + const keyValDocs = this.mapVisit(ctx.keyval); + return join(', ', keyValDocs); + } + + /** + * Visit a table + */ + table(ctx: any): Doc | string { + return this.visitSingle(ctx); + } + + /** + * Visit a standard table + */ + stdTable(ctx: any): Doc { + if (ctx.key && ctx.key[0] && ctx.key[0].children && ctx.key[0].children.IKey) { + const keyTexts = ctx.key[0].children.IKey.map((tok: any) => { + return formatKey(tok.image); + }); + return ['[', join('.', keyTexts), ']']; + } + return '[]'; + } + + /** + * Visit an array table + */ + arrayTable(ctx: any): Doc { + if (ctx.key && ctx.key[0] && ctx.key[0].children && ctx.key[0].children.IKey) { + const keyTexts = ctx.key[0].children.IKey.map((tok: any) => { + return formatKey(tok.image); + }); + return ['[[', join('.', keyTexts), ']]']; + } + return '[[]]'; + } + + /** + * Visit newline (should not be called) + */ + nl(ctx: any): never { + throw new Error('Should not get here!'); + } + + /** + * Visit comment newline (no-op) + */ + commentNewline(ctx: any): void { + // No operation needed + } +} + +// Create singleton visitor instance +const beautifierVisitor = new TomlBeautifierVisitor(); + +/** + * Main print function for Prettier + * @param path - AST path from Prettier + * @param options - Print options + * @param print - Print function (unused in this implementation) + * @returns Formatted document + */ +export function print(path: AstPath, options?: any, print?: any): Doc { + const cst = path.node as TomlDocument; + return beautifierVisitor.visit(cst); +} diff --git a/frontend/src/common/prettier/plugins/toml/types.ts b/frontend/src/common/prettier/plugins/toml/types.ts new file mode 100644 index 0000000..448ac03 --- /dev/null +++ b/frontend/src/common/prettier/plugins/toml/types.ts @@ -0,0 +1,62 @@ +/** + * TypeScript type definitions for TOML Prettier plugin + */ + +// TOML CST Node types based on @toml-tools/parser +export interface TomlCstNode { + name?: string; + image?: string; + children?: Record; + startOffset?: number; + endOffset?: number; + startLine?: number; + endLine?: number; + tokenType?: any; +} + +export interface TomlComment extends TomlCstNode { + image: string; +} + +export interface TomlContext { + [key: string]: TomlCstNode[]; +} + +export interface TomlValue extends TomlCstNode { + children: TomlContext; +} + +export interface TomlKeyVal extends TomlCstNode { + key: TomlCstNode[]; + val: TomlCstNode[]; +} + +export interface TomlArray extends TomlCstNode { + arrayValues?: TomlCstNode; + commentNewline?: TomlCstNode[]; +} + +export interface TomlInlineTable extends TomlCstNode { + inlineTableKeyVals?: TomlCstNode; +} + +export interface TomlTable extends TomlCstNode { + table: TomlCstNode[]; +} + +export interface TomlExpression extends TomlCstNode { + keyval?: TomlKeyVal[]; + table?: TomlTable[]; + Comment?: TomlComment[]; +} + +export interface TomlDocument extends TomlCstNode { + expression?: TomlExpression[]; +} + +// Print options for TOML formatting +export interface TomlPrintOptions { + printWidth?: number; + tabWidth?: number; + useTabs?: boolean; +} diff --git a/frontend/src/stores/themeStore.ts b/frontend/src/stores/themeStore.ts index 32c44dd..d04ec9b 100644 --- a/frontend/src/stores/themeStore.ts +++ b/frontend/src/stores/themeStore.ts @@ -29,6 +29,10 @@ export const useThemeStore = defineStore('theme', () => { const initializeThemeColors = async () => { try { const themes = await ThemeService.GetDefaultThemes(); + if (!themes) { + Object.assign(themeColors.darkTheme, defaultDarkColors); + Object.assign(themeColors.lightTheme, defaultLightColors); + } if (themes[ThemeType.ThemeTypeDark]) { Object.assign(themeColors.darkTheme, themes[ThemeType.ThemeTypeDark].colors); } diff --git a/frontend/src/views/editor/extensions/codeblock/lang-parser/languages.ts b/frontend/src/views/editor/extensions/codeblock/lang-parser/languages.ts index 7ad7f09..1c5a579 100644 --- a/frontend/src/views/editor/extensions/codeblock/lang-parser/languages.ts +++ b/frontend/src/views/editor/extensions/codeblock/lang-parser/languages.ts @@ -43,7 +43,7 @@ import javaPrettierPlugin from "@/common/prettier/plugins/java" import xmlPrettierPlugin from "@prettier/plugin-xml" import * as rustPrettierPlugin from "@/common/prettier/plugins/rust"; import * as shellPrettierPlugin from "@/common/prettier/plugins/shell"; -import tomlPrettierPlugin from "prettier-plugin-toml"; +import tomlPrettierPlugin from "@/common/prettier/plugins/toml"; import clojurePrettierPlugin from "@cospaia/prettier-plugin-clojure"; import groovyPrettierPlugin from "@/common/prettier/plugins/groovy"; import powershellPrettierPlugin from "@/common/prettier/plugins/powershell"; diff --git a/frontend/src/views/settings/pages/TestPage.vue b/frontend/src/views/settings/pages/TestPage.vue index 055af7d..c5b3687 100644 --- a/frontend/src/views/settings/pages/TestPage.vue +++ b/frontend/src/views/settings/pages/TestPage.vue @@ -72,6 +72,66 @@ + + + + + + +

+ + + + + + +
+ + + +
+
+ {{ formatStatus.type.toUpperCase() }}: {{ formatStatus.message }} +
+
+
+ [{{ detail.time }}] + {{ detail.message }} +
+
+
+ 执行时间: {{ formatStatus.duration }}ms +
+
+ + + + + + + @@ -91,6 +151,8 @@ import { ref } from 'vue' import * as TestService from '@/../bindings/voidraft/internal/services/testservice' import SettingSection from '../components/SettingSection.vue' import SettingItem from '../components/SettingItem.vue' +import { format } from 'prettier' +import goPrettierPlugin from '@/common/prettier/plugins/go/go.mjs' // Badge测试状态 const badgeText = ref('') @@ -105,6 +167,33 @@ const notificationStatus = ref<{ type: string; message: string } | null>(null) // 清除状态 const clearStatus = ref<{ type: string; message: string } | null>(null) +// Go代码格式化测试状态 +const goCode = ref(`package main + +import( +"fmt" +"os" +) + +func main(){ +if len(os.Args)<2{ +fmt.Println("Usage: program ") +return +} +name:=os.Args[1] +fmt.Printf("Hello, %s!\\n",name) +}`) + +const formattedCode = ref('') +const isFormatting = ref(false) +const isInitializing = ref(false) +const formatStatus = ref<{ + type: 'success' | 'error' | 'info' | 'warning'; + message: string; + details?: Array<{ time: string; message: string }>; + duration?: number; +} | null>(null) + // 显示状态消息的辅助函数 const showStatus = (statusRef: any, type: 'success' | 'error', message: string) => { statusRef.value = { type, message } @@ -158,6 +247,382 @@ const testUpdateNotification = async () => { } } +// Go代码格式化相关函数 +const addFormatDetail = (message: string) => { + const time = new Date().toLocaleTimeString() + if (!formatStatus.value) { + formatStatus.value = { + type: 'info', + message: '正在执行...', + details: [] + } + } + if (!formatStatus.value.details) { + formatStatus.value.details = [] + } + formatStatus.value.details.push({ time, message }) +} + +// 检查WASM状态 +const checkWasmStatus = async () => { + formatStatus.value = { + type: 'info', + message: '检查WASM状态...', + details: [] + } + + addFormatDetail('开始检查环境...') + + try { + // 检查浏览器环境 + addFormatDetail('检查浏览器环境支持') + if (typeof WebAssembly === 'undefined') { + throw new Error('WebAssembly not supported in this browser') + } + addFormatDetail('✅ WebAssembly 支持正常') + + // 检查Go运行时 + addFormatDetail('检查Go运行时状态') + if (typeof globalThis.Go !== 'undefined') { + addFormatDetail('✅ Go运行时已加载') + } else { + addFormatDetail('❌ Go运行时未加载') + } + + // 检查formatGo函数 + addFormatDetail('检查formatGo函数') + if (typeof globalThis.formatGo === 'function') { + addFormatDetail('✅ formatGo函数可用') + } else { + addFormatDetail('❌ formatGo函数不可用') + } + + // 检查WASM文件可访问性 + addFormatDetail('检查WASM文件可访问性') + try { + const response = await fetch('/go.wasm', { method: 'HEAD' }) + if (response.ok) { + addFormatDetail('✅ go.wasm文件可访问') + } else { + addFormatDetail(`❌ go.wasm文件不可访问: ${response.status}`) + } + } catch (error) { + addFormatDetail(`❌ go.wasm文件访问失败: ${error}`) + } + + // 检查wasm_exec.js + addFormatDetail('检查wasm_exec.js文件') + try { + const response = await fetch('/wasm_exec.js', { method: 'HEAD' }) + if (response.ok) { + addFormatDetail('✅ wasm_exec.js文件可访问') + } else { + addFormatDetail(`❌ wasm_exec.js文件不可访问: ${response.status}`) + } + } catch (error) { + addFormatDetail(`❌ wasm_exec.js文件访问失败: ${error}`) + } + + formatStatus.value.type = 'success' + formatStatus.value.message = 'WASM状态检查完成' + + } catch (error: any) { + addFormatDetail(`❌ 检查失败: ${error.message}`) + formatStatus.value.type = 'error' + formatStatus.value.message = `WASM状态检查失败: ${error.message}` + } +} + +// 手动初始化 Go WASM +const initializeGoWasm = async () => { + if (isInitializing.value) return + + isInitializing.value = true + + formatStatus.value = { + type: 'info', + message: '正在初始化 Go WASM...', + details: [] + } + + try { + addFormatDetail('开始手动初始化 Go WASM') + + // 直接调用插件的初始化函数 + const { initialize } = await import('@/common/prettier/plugins/go/go.mjs') + + addFormatDetail('调用插件初始化函数...') + await initialize() + + addFormatDetail('检查 formatGo 函数是否可用...') + if (typeof globalThis.formatGo === 'function') { + addFormatDetail('✅ formatGo 函数初始化成功') + + // 测试函数 + addFormatDetail('测试 formatGo 函数...') + const testCode = 'package main\nfunc main(){}' + const result = globalThis.formatGo(testCode) + addFormatDetail(`✅ 测试成功,格式化后长度: ${result.length}`) + + formatStatus.value = { + type: 'success', + message: 'Go WASM 初始化成功!', + details: formatStatus.value.details + } + } else { + throw new Error('formatGo 函数仍然不可用') + } + + } catch (error: any) { + addFormatDetail(`❌ 初始化失败: ${error.message}`) + formatStatus.value = { + type: 'error', + message: `Go WASM 初始化失败: ${error.message}`, + details: formatStatus.value.details + } + } finally { + isInitializing.value = false + } +} + +// 测试Go代码格式化 +const testGoFormatter = async () => { + if (isFormatting.value) return + + isFormatting.value = true + formattedCode.value = '' + + const startTime = Date.now() + + formatStatus.value = { + type: 'info', + message: '正在格式化Go代码...', + details: [] + } + + try { + addFormatDetail('开始格式化流程') + addFormatDetail(`输入代码长度: ${goCode.value.length} 字符`) + + // 设置超时检测 + const timeoutId = setTimeout(() => { + addFormatDetail('⚠️ 格式化超时 (10秒),可能存在阻塞') + }, 10000) + + addFormatDetail('调用prettier格式化...') + + const result = await format(goCode.value, { + parser: 'go-format', + plugins: [goPrettierPlugin] + }) + + clearTimeout(timeoutId) + + const duration = Date.now() - startTime + + addFormatDetail('✅ 格式化完成') + addFormatDetail(`输出代码长度: ${result.length} 字符`) + + formattedCode.value = result + + formatStatus.value = { + type: 'success', + message: '代码格式化成功!', + details: formatStatus.value.details, + duration + } + + } catch (error: any) { + const duration = Date.now() - startTime + + addFormatDetail(`❌ 格式化失败: ${error.message}`) + + // 详细错误分析 + if (error.message.includes('WASM')) { + addFormatDetail('可能原因: WASM模块加载或初始化问题') + } else if (error.message.includes('formatGo')) { + addFormatDetail('可能原因: Go函数未正确暴露到全局作用域') + } else if (error.message.includes('timeout')) { + addFormatDetail('可能原因: 代码执行超时或阻塞') + } + + formatStatus.value = { + type: 'error', + message: `格式化失败: ${error.message}`, + details: formatStatus.value.details, + duration + } + } finally { + isFormatting.value = false + } +} + +// 重置Go代码为示例 +const resetGoCode = () => { + goCode.value = `package main + +import( +"fmt" +"os" +) + +func main(){ +if len(os.Args)<2{ +fmt.Println("Usage: program ") +return +} +name:=os.Args[1] +fmt.Printf("Hello, %s!\\n",name) +}` + formattedCode.value = '' + formatStatus.value = null +} + +// 加载复杂示例 +const loadComplexSample = () => { + goCode.value = `package main + +import( +"encoding/json" +"fmt" +"io/ioutil" +"log" +"net/http" +"os" +"strconv" +"strings" +"time" +) + +type User struct{ +ID int \`json:"id"\` +Name string \`json:"name"\` +Email string \`json:"email"\` +CreatedAt time.Time \`json:"created_at"\` +} + +type UserService struct{ +users []User +nextID int +} + +func NewUserService()*UserService{ +return &UserService{ +users:make([]User,0), +nextID:1, +} +} + +func(s *UserService)CreateUser(name,email string)*User{ +user:=User{ +ID:s.nextID, +Name:name, +Email:email, +CreatedAt:time.Now(), +} +s.users=append(s.users,user) +s.nextID++ +return &user +} + +func(s *UserService)GetUser(id int)*User{ +for i:=range s.users{ +if s.users[i].ID==id{ +return &s.users[i] +} +} +return nil +} + +func(s *UserService)ListUsers()[]User{ +return s.users +} + +func main(){ +service:=NewUserService() + +http.HandleFunc("/users",func(w http.ResponseWriter,r *http.Request){ +switch r.Method{ +case http.MethodGet: +users:=service.ListUsers() +w.Header().Set("Content-Type","application/json") +json.NewEncoder(w).Encode(users) +case http.MethodPost: +body,err:=ioutil.ReadAll(r.Body) +if err!=nil{ +http.Error(w,"Bad request",http.StatusBadRequest) +return +} +var req struct{ +Name string \`json:"name"\` +Email string \`json:"email"\` +} +if err:=json.Unmarshal(body,&req);err!=nil{ +http.Error(w,"Invalid JSON",http.StatusBadRequest) +return +} +user:=service.CreateUser(req.Name,req.Email) +w.Header().Set("Content-Type","application/json") +w.WriteHeader(http.StatusCreated) +json.NewEncoder(w).Encode(user) +default: +http.Error(w,"Method not allowed",http.StatusMethodNotAllowed) +} +}) + +http.HandleFunc("/users/",func(w http.ResponseWriter,r *http.Request){ +if r.Method!=http.MethodGet{ +http.Error(w,"Method not allowed",http.StatusMethodNotAllowed) +return +} +idStr:=strings.TrimPrefix(r.URL.Path,"/users/") +id,err:=strconv.Atoi(idStr) +if err!=nil{ +http.Error(w,"Invalid user ID",http.StatusBadRequest) +return +} +user:=service.GetUser(id) +if user==nil{ +http.Error(w,"User not found",http.StatusNotFound) +return +} +w.Header().Set("Content-Type","application/json") +json.NewEncoder(w).Encode(user) +}) + +port:=os.Getenv("PORT") +if port==""{ +port="8080" +} + +fmt.Printf("Server starting on port %s\\n",port) +log.Fatal(http.ListenAndServe(":"+port,nil)) +}` + formattedCode.value = '' + formatStatus.value = null +} + +// 加载有语法错误的示例 +const loadBrokenSample = () => { + goCode.value = `package main + +import( +"fmt" +"os +) + +func main({ +if len(os.Args<2{ +fmt.Println("Usage: program ") +return +} +name:=os.Args[1 +fmt.Printf("Hello, %s!\\n",name) +` + formattedCode.value = '' + formatStatus.value = null +} + // 清除所有测试状态 const clearAll = async () => { try { @@ -167,6 +632,10 @@ const clearAll = async () => { notificationTitle.value = '' notificationSubtitle.value = '' notificationBody.value = '' + // 清空Go测试状态 + formattedCode.value = '' + formatStatus.value = null + resetGoCode() showStatus(clearStatus, 'success', 'All test states cleared successfully') } catch (error: any) { showStatus(clearStatus, 'error', `Failed to clear test states: ${error.message || error}`) @@ -207,6 +676,25 @@ const clearAll = async () => { font-family: inherit; line-height: 1.4; } + + &.code-textarea { + font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 11px; + line-height: 1.5; + width: 100%; + max-width: 600px; + min-height: 120px; + white-space: pre; + overflow-wrap: normal; + word-break: normal; + tab-size: 2; + + &.result-textarea { + background-color: var(--settings-card-bg); + border-color: #22c55e; + color: var(--settings-text); + } + } } .button-group { @@ -271,4 +759,47 @@ const clearAll = async () => { border-color: rgba(239, 68, 68, 0.2); } } + +.detailed-status { + .status-header { + margin-bottom: 8px; + font-weight: 600; + } + + .status-details { + background-color: rgba(0, 0, 0, 0.05); + border-radius: 4px; + padding: 8px; + margin: 8px 0; + max-height: 200px; + overflow-y: auto; + font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', Consolas, monospace; + font-size: 10px; + line-height: 1.4; + + .status-detail { + margin-bottom: 2px; + display: flex; + gap: 8px; + + .detail-time { + color: var(--settings-text-secondary); + flex-shrink: 0; + font-weight: 500; + } + + .detail-message { + color: var(--settings-text); + word-break: break-word; + } + } + } + + .status-duration { + margin-top: 8px; + font-size: 10px; + color: var(--settings-text-secondary); + font-weight: 500; + } +}