diff --git a/api-functions.json b/api-functions.json new file mode 100644 index 0000000..85d2f0e --- /dev/null +++ b/api-functions.json @@ -0,0 +1,292 @@ +{ + "functions": [ + { + "name": "print", + "description": "打印消息到控制台", + "params": [ + { + "name": "message", + "type": "string", + "description": "要打印的消息" + } + ], + "returns": { + "type": "void", + "description": "无返回值" + } + }, + { + "name": "len", + "description": "返回字符串、数组或表的长度", + "params": [ + { + "name": "obj", + "type": "string|table|array", + "description": "要计算长度的对象" + } + ], + "returns": { + "type": "integer", + "description": "对象的长度" + } + }, + { + "name": "type", + "description": "返回对象的类型", + "params": [ + { + "name": "obj", + "type": "any", + "description": "要检查类型的对象" + } + ], + "returns": { + "type": "string", + "description": "对象的类型字符串" + } + }, + { + "name": "clone", + "description": "创建对象的浅拷贝", + "params": [ + { + "name": "obj", + "type": "any", + "description": "要克隆的对象" + } + ], + "returns": { + "type": "any", + "description": "克隆的对象" + } + }, + { + "name": "tostring", + "description": "将对象转换为字符串", + "params": [ + { + "name": "obj", + "type": "any", + "description": "要转换的对象" + } + ], + "returns": { + "type": "string", + "description": "转换后的字符串" + } + }, + { + "name": "tointeger", + "description": "将对象转换为整数", + "params": [ + { + "name": "obj", + "type": "any", + "description": "要转换的对象" + } + ], + "returns": { + "type": "integer", + "description": "转换后的整数" + } + }, + { + "name": "tofloat", + "description": "将对象转换为浮点数", + "params": [ + { + "name": "obj", + "type": "any", + "description": "要转换的对象" + } + ], + "returns": { + "type": "float", + "description": "转换后的浮点数" + } + } + ], + "classes": [ + { + "name": "String", + "description": "字符串类,提供字符串操作方法", + "methods": [ + { + "name": "len", + "description": "返回字符串长度", + "params": [], + "returns": { + "type": "integer", + "description": "字符串的长度" + } + }, + { + "name": "slice", + "description": "返回字符串的子串", + "params": [ + { + "name": "start", + "type": "integer", + "description": "起始位置" + }, + { + "name": "end", + "type": "integer", + "description": "结束位置(可选)", + "optional": true + } + ], + "returns": { + "type": "string", + "description": "子串" + } + }, + { + "name": "find", + "description": "查找子串在字符串中的位置", + "params": [ + { + "name": "substr", + "type": "string", + "description": "要查找的子串" + } + ], + "returns": { + "type": "integer", + "description": "子串的位置,未找到返回-1" + } + } + ], + "properties": [ + { + "name": "length", + "type": "integer", + "description": "字符串的长度" + } + ] + }, + { + "name": "Array", + "description": "数组类,提供数组操作方法", + "methods": [ + { + "name": "len", + "description": "返回数组长度", + "params": [], + "returns": { + "type": "integer", + "description": "数组的长度" + } + }, + { + "name": "append", + "description": "向数组末尾添加元素", + "params": [ + { + "name": "value", + "type": "any", + "description": "要添加的元素" + } + ], + "returns": { + "type": "void", + "description": "无返回值" + } + }, + { + "name": "pop", + "description": "移除并返回数组最后一个元素", + "params": [], + "returns": { + "type": "any", + "description": "被移除的元素" + } + } + ], + "properties": [ + { + "name": "length", + "type": "integer", + "description": "数组的长度" + } + ] + }, + { + "name": "Table", + "description": "表类,提供表操作方法", + "methods": [ + { + "name": "len", + "description": "返回表中键值对的数量", + "params": [], + "returns": { + "type": "integer", + "description": "键值对的数量" + } + }, + { + "name": "rawget", + "description": "获取指定键的值", + "params": [ + { + "name": "key", + "type": "any", + "description": "键" + } + ], + "returns": { + "type": "any", + "description": "键对应的值" + } + }, + { + "name": "rawset", + "description": "设置指定键的值", + "params": [ + { + "name": "key", + "type": "any", + "description": "键" + }, + { + "name": "value", + "type": "any", + "description": "值" + } + ], + "returns": { + "type": "void", + "description": "无返回值" + } + } + ], + "properties": [] + } + ], + "constants": [ + { + "name": "PI", + "value": "3.14159", + "description": "圆周率", + "category": "math" + }, + { + "name": "true", + "value": "true", + "description": "布尔真值", + "category": "boolean" + }, + { + "name": "false", + "value": "false", + "description": "布尔假值", + "category": "boolean" + }, + { + "name": "null", + "value": "null", + "description": "空值", + "category": "general" + } + ] +} \ No newline at end of file diff --git a/dist/extension.js b/dist/extension.js index 028e7e0..afb3cf9 100644 --- a/dist/extension.js +++ b/dist/extension.js @@ -48,8 +48,11 @@ const signatureHelpProvider_1 = require("./providers/signatureHelpProvider"); const onTypeFormattingProvider_1 = require("./providers/onTypeFormattingProvider"); const documentFormattingProvider_1 = require("./providers/documentFormattingProvider"); const codeErrorProvider_1 = require("./providers/codeErrorProvider"); +const apiParser_1 = require("./providers/apiParser"); function activate(context) { console.log('Squirrel NUT Explorer 正在激活...'); + // 初始化API解析器 + const apiParser = apiParser_1.ApiParser.getInstance(); // 创建模型和提供者 const model = new model_1.FileModel(); const provider = new provider_1.FileProvider(model); diff --git a/dist/extension.js.map b/dist/extension.js.map index 50aa0b6..b505a4d 100644 --- a/dist/extension.js.map +++ b/dist/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/providers/apiParser.js b/dist/providers/apiParser.js index a16bac4..129291c 100644 --- a/dist/providers/apiParser.js +++ b/dist/providers/apiParser.js @@ -1,12 +1,51 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiParser = void 0; +const vscode = __importStar(require("vscode")); +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); // API文档解析器类 class ApiParser { constructor() { this.functions = []; this.classes = []; this.constants = []; + // 获取扩展路径并设置JSON文件路径 + const extensionPath = vscode.extensions.getExtension('local.squirrel-nut-explorer')?.extensionPath || __dirname; + this.jsonFilePath = path.join(extensionPath, 'api-functions.json'); this.initializeApiDocumentation(); } // 获取单例实例 @@ -18,6 +57,33 @@ class ApiParser { } // 初始化API文档 initializeApiDocumentation() { + try { + // 检查JSON文件是否存在 + if (fs.existsSync(this.jsonFilePath)) { + // 读取JSON文件 + const jsonData = fs.readFileSync(this.jsonFilePath, 'utf8'); + const apiData = JSON.parse(jsonData); + // 加载函数数据 + this.functions = apiData.functions || []; + // 加载类数据 + this.classes = apiData.classes || []; + // 加载常量数据 + this.constants = apiData.constants || []; + } + else { + // 如果JSON文件不存在,使用默认数据并创建文件 + this.initializeDefaultApiDocumentation(); + this.saveApiDocumentation(); + } + } + catch (error) { + console.error('读取API函数JSON文件失败:', error); + // 如果读取失败,使用默认数据 + this.initializeDefaultApiDocumentation(); + } + } + // 初始化默认API文档 + initializeDefaultApiDocumentation() { // 初始化内置函数 this.functions = [ { @@ -292,12 +358,6 @@ class ApiParser { description: '圆周率', category: 'math' }, - { - name: 'E', - value: '2.71828', - description: '自然常数', - category: 'math' - }, { name: 'true', value: 'true', @@ -318,6 +378,24 @@ class ApiParser { } ]; } + // 保存API文档到JSON文件 + saveApiDocumentation() { + try { + const apiData = { + functions: this.functions, + classes: this.classes, + constants: this.constants + }; + fs.writeFileSync(this.jsonFilePath, JSON.stringify(apiData, null, 2), 'utf8'); + } + catch (error) { + console.error('保存API函数JSON文件失败:', error); + } + } + // 重新加载API文档 + reloadApiDocumentation() { + this.initializeApiDocumentation(); + } // 获取所有函数 getFunctions() { return this.functions; diff --git a/dist/providers/apiParser.js.map b/dist/providers/apiParser.js.map index d694095..a4b00aa 100644 --- a/dist/providers/apiParser.js.map +++ b/dist/providers/apiParser.js.map @@ -1 +1 @@ -{"version":3,"file":"apiParser.js","sourceRoot":"","sources":["../../src/providers/apiParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"apiParser.js","sourceRoot":"","sources":["../../src/providers/apiParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 4590319..78e76a3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "squirrel-nut-explorer", "displayName": "Squirrel NUT Explorer", "description": "通过 pvfUtility API 浏览和编辑 NUT 文件", - "version": "1.0.1", + "version": "1.0.2", "publisher": "local", "engines": { "vscode": "^1.99.0" diff --git a/squirrel-nut-explorer-1.0.2.vsix b/squirrel-nut-explorer-1.0.2.vsix new file mode 100644 index 0000000..397cf88 Binary files /dev/null and b/squirrel-nut-explorer-1.0.2.vsix differ diff --git a/src/extension.ts b/src/extension.ts index 7b2f6dc..800cc47 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -11,10 +11,14 @@ import { SignatureHelpProvider } from './providers/signatureHelpProvider'; import { OnTypeFormattingProvider } from './providers/onTypeFormattingProvider'; import { DocumentFormattingProvider } from './providers/documentFormattingProvider'; import { CodeErrorProvider } from './providers/codeErrorProvider'; +import { ApiParser } from './providers/apiParser'; export function activate(context: vscode.ExtensionContext) { console.log('Squirrel NUT Explorer 正在激活...'); + // 初始化API解析器 + const apiParser = ApiParser.getInstance(); + // 创建模型和提供者 const model = new FileModel(); const provider = new FileProvider(model); diff --git a/src/providers/apiParser.ts b/src/providers/apiParser.ts index a4527e2..f97297a 100644 --- a/src/providers/apiParser.ts +++ b/src/providers/apiParser.ts @@ -1,4 +1,6 @@ import * as vscode from 'vscode'; +import * as fs from 'fs'; +import * as path from 'path'; // API函数信息接口 export interface ApiFunction { @@ -53,8 +55,12 @@ export class ApiParser { private functions: ApiFunction[] = []; private classes: ApiClass[] = []; private constants: ApiConstant[] = []; + private jsonFilePath: string; private constructor() { + // 获取扩展路径并设置JSON文件路径 + const extensionPath = vscode.extensions.getExtension('local.squirrel-nut-explorer')?.extensionPath || __dirname; + this.jsonFilePath = path.join(extensionPath, 'api-functions.json'); this.initializeApiDocumentation(); } @@ -68,6 +74,35 @@ export class ApiParser { // 初始化API文档 private initializeApiDocumentation(): void { + try { + // 检查JSON文件是否存在 + if (fs.existsSync(this.jsonFilePath)) { + // 读取JSON文件 + const jsonData = fs.readFileSync(this.jsonFilePath, 'utf8'); + const apiData = JSON.parse(jsonData); + + // 加载函数数据 + this.functions = apiData.functions || []; + + // 加载类数据 + this.classes = apiData.classes || []; + + // 加载常量数据 + this.constants = apiData.constants || []; + } else { + // 如果JSON文件不存在,使用默认数据并创建文件 + this.initializeDefaultApiDocumentation(); + this.saveApiDocumentation(); + } + } catch (error) { + console.error('读取API函数JSON文件失败:', error); + // 如果读取失败,使用默认数据 + this.initializeDefaultApiDocumentation(); + } + } + + // 初始化默认API文档 + private initializeDefaultApiDocumentation(): void { // 初始化内置函数 this.functions = [ { @@ -344,12 +379,6 @@ export class ApiParser { description: '圆周率', category: 'math' }, - { - name: 'E', - value: '2.71828', - description: '自然常数', - category: 'math' - }, { name: 'true', value: 'true', @@ -371,6 +400,26 @@ export class ApiParser { ]; } + // 保存API文档到JSON文件 + private saveApiDocumentation(): void { + try { + const apiData = { + functions: this.functions, + classes: this.classes, + constants: this.constants + }; + + fs.writeFileSync(this.jsonFilePath, JSON.stringify(apiData, null, 2), 'utf8'); + } catch (error) { + console.error('保存API函数JSON文件失败:', error); + } + } + + // 重新加载API文档 + public reloadApiDocumentation(): void { + this.initializeApiDocumentation(); + } + // 获取所有函数 public getFunctions(): ApiFunction[] { return this.functions;