1.0.4 将库函数外置,插件文件夹下api-functions.json

This commit is contained in:
睿 安
2025-09-17 14:56:50 +08:00
parent 1bc5184032
commit 4375e6ef3f
9 changed files with 441 additions and 15 deletions

292
api-functions.json Normal file
View File

@@ -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"
}
]
}

3
dist/extension.js vendored
View File

@@ -48,8 +48,11 @@ const signatureHelpProvider_1 = require("./providers/signatureHelpProvider");
const onTypeFormattingProvider_1 = require("./providers/onTypeFormattingProvider"); const onTypeFormattingProvider_1 = require("./providers/onTypeFormattingProvider");
const documentFormattingProvider_1 = require("./providers/documentFormattingProvider"); const documentFormattingProvider_1 = require("./providers/documentFormattingProvider");
const codeErrorProvider_1 = require("./providers/codeErrorProvider"); const codeErrorProvider_1 = require("./providers/codeErrorProvider");
const apiParser_1 = require("./providers/apiParser");
function activate(context) { function activate(context) {
console.log('Squirrel NUT Explorer 正在激活...'); console.log('Squirrel NUT Explorer 正在激活...');
// 初始化API解析器
const apiParser = apiParser_1.ApiParser.getInstance();
// 创建模型和提供者 // 创建模型和提供者
const model = new model_1.FileModel(); const model = new model_1.FileModel();
const provider = new provider_1.FileProvider(model); const provider = new provider_1.FileProvider(model);

View File

@@ -1 +1 @@
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}

View File

@@ -1,12 +1,51 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiParser = void 0; exports.ApiParser = void 0;
const vscode = __importStar(require("vscode"));
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
// API文档解析器类 // API文档解析器类
class ApiParser { class ApiParser {
constructor() { constructor() {
this.functions = []; this.functions = [];
this.classes = []; this.classes = [];
this.constants = []; this.constants = [];
// 获取扩展路径并设置JSON文件路径
const extensionPath = vscode.extensions.getExtension('local.squirrel-nut-explorer')?.extensionPath || __dirname;
this.jsonFilePath = path.join(extensionPath, 'api-functions.json');
this.initializeApiDocumentation(); this.initializeApiDocumentation();
} }
// 获取单例实例 // 获取单例实例
@@ -18,6 +57,33 @@ class ApiParser {
} }
// 初始化API文档 // 初始化API文档
initializeApiDocumentation() { 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 = [ this.functions = [
{ {
@@ -292,12 +358,6 @@ class ApiParser {
description: '圆周率', description: '圆周率',
category: 'math' category: 'math'
}, },
{
name: 'E',
value: '2.71828',
description: '自然常数',
category: 'math'
},
{ {
name: 'true', name: 'true',
value: '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() { getFunctions() {
return this.functions; return this.functions;

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@
"name": "squirrel-nut-explorer", "name": "squirrel-nut-explorer",
"displayName": "Squirrel NUT Explorer", "displayName": "Squirrel NUT Explorer",
"description": "通过 pvfUtility API 浏览和编辑 NUT 文件", "description": "通过 pvfUtility API 浏览和编辑 NUT 文件",
"version": "1.0.1", "version": "1.0.2",
"publisher": "local", "publisher": "local",
"engines": { "engines": {
"vscode": "^1.99.0" "vscode": "^1.99.0"

Binary file not shown.

View File

@@ -11,10 +11,14 @@ import { SignatureHelpProvider } from './providers/signatureHelpProvider';
import { OnTypeFormattingProvider } from './providers/onTypeFormattingProvider'; import { OnTypeFormattingProvider } from './providers/onTypeFormattingProvider';
import { DocumentFormattingProvider } from './providers/documentFormattingProvider'; import { DocumentFormattingProvider } from './providers/documentFormattingProvider';
import { CodeErrorProvider } from './providers/codeErrorProvider'; import { CodeErrorProvider } from './providers/codeErrorProvider';
import { ApiParser } from './providers/apiParser';
export function activate(context: vscode.ExtensionContext) { export function activate(context: vscode.ExtensionContext) {
console.log('Squirrel NUT Explorer 正在激活...'); console.log('Squirrel NUT Explorer 正在激活...');
// 初始化API解析器
const apiParser = ApiParser.getInstance();
// 创建模型和提供者 // 创建模型和提供者
const model = new FileModel(); const model = new FileModel();
const provider = new FileProvider(model); const provider = new FileProvider(model);

View File

@@ -1,4 +1,6 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import * as fs from 'fs';
import * as path from 'path';
// API函数信息接口 // API函数信息接口
export interface ApiFunction { export interface ApiFunction {
@@ -53,8 +55,12 @@ export class ApiParser {
private functions: ApiFunction[] = []; private functions: ApiFunction[] = [];
private classes: ApiClass[] = []; private classes: ApiClass[] = [];
private constants: ApiConstant[] = []; private constants: ApiConstant[] = [];
private jsonFilePath: string;
private constructor() { private constructor() {
// 获取扩展路径并设置JSON文件路径
const extensionPath = vscode.extensions.getExtension('local.squirrel-nut-explorer')?.extensionPath || __dirname;
this.jsonFilePath = path.join(extensionPath, 'api-functions.json');
this.initializeApiDocumentation(); this.initializeApiDocumentation();
} }
@@ -68,6 +74,35 @@ export class ApiParser {
// 初始化API文档 // 初始化API文档
private initializeApiDocumentation(): void { 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 = [ this.functions = [
{ {
@@ -344,12 +379,6 @@ export class ApiParser {
description: '圆周率', description: '圆周率',
category: 'math' category: 'math'
}, },
{
name: 'E',
value: '2.71828',
description: '自然常数',
category: 'math'
},
{ {
name: 'true', name: 'true',
value: '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[] { public getFunctions(): ApiFunction[] {
return this.functions; return this.functions;