feat(tsl-codegen): support unified API declarations

Add TSF conversion and shared Markdown recognition for mixed
function, class, and unit declarations.

Extend generation, linting, indexing, examples, and tests around
the unified declaration model.
This commit is contained in:
csh
2026-07-29 15:45:50 +08:00
parent bd25835d2d
commit 9edc8fc868
13 changed files with 8438 additions and 310 deletions
+196 -36
View File
@@ -1,53 +1,213 @@
{
"module": "示例 / 数组",
"path": "base/example",
"functions": [
"module": "OfficeXml / OpenXml",
"path": "officexml/openxml/elements",
"declarations": [
{
"signature": "demoNow()",
"desc": "返回示例值。",
"returns": "integer",
"example": "return demoNow();\n// 输出:1"
},
{
"signature": "demoFn(src, mode, factor, ...)",
"tags": ["示例", "数组"],
"desc": "按指定模式处理数组并返回结果。",
"params": [
"kind": "class",
"name": "OpenXmlAttribute",
"desc": "表示 OpenXml 属性",
"tags": ["OpenXml", "XML", "属性"],
"members": [
{
"name": "src",
"type": "array",
"desc": "待处理数组"
},
{
"name": "mode",
"type": "integer",
"desc": "处理模式,取值见下。",
"values": [
"kind": "method",
"name": "create",
"visibility": "public",
"binding": "instance",
"signature": "create(_prefix, _local_name)",
"desc": "创建 OpenXml 属性",
"tags": ["OpenXml", "属性", "创建"],
"params": [
{
"value": 0,
"desc": "原样返回"
"name": "_prefix",
"type": "string",
"desc": "命名空间前缀"
},
{
"value": 1,
"desc": "去重"
"name": "_local_name",
"type": "string",
"desc": "本地名称"
}
]
},
{
"name": "factor",
"type": "float",
"optional": true,
"desc": "默认 1.0,结果乘以该系数。"
"kind": "method",
"name": "CreateVirtual",
"visibility": "public",
"binding": "class",
"signature": "CreateVirtual(position, row_index, _story)",
"desc": "创建虚段落",
"params": [
{
"name": "position",
"type": "integer",
"desc": "段落位置"
},
{
"name": "row_index",
"type": "integer",
"desc": "行索引"
},
{
"name": "_story",
"type": "StoryNode",
"desc": "故事节点"
}
],
"returns": "ParagraphSegment"
},
{
"name": "...",
"type": "nil|array",
"optional": true,
"desc": "需要追加处理的其他数组。"
"kind": "property",
"name": "Prefix",
"visibility": "public",
"desc": "命名空间前缀",
"type": "string",
"access": "readwrite"
},
{
"kind": "property",
"name": "NamespaceUri",
"visibility": "public",
"desc": "命名空间 URI",
"access": "read"
},
{
"kind": "field",
"name": "value_",
"visibility": "protected",
"desc": "属性值存储",
"type": "any"
},
{
"kind": "field",
"name": "Count",
"visibility": "public",
"desc": "属性实例数量",
"type": "integer",
"static": true
},
{
"kind": "constant",
"name": "DefaultPrefix",
"visibility": "public",
"desc": "默认命名空间前缀",
"type": "string",
"value": "xml"
},
{
"kind": "constant",
"name": "MaximumAttributes",
"visibility": "public",
"desc": "最大属性数量",
"type": "integer",
"value": 256,
"static": true
}
]
},
{
"kind": "function",
"name": "ParseOpenXml",
"signature": "ParseOpenXml(xml)",
"desc": "解析 OpenXml 文本",
"tags": ["OpenXml", "解析"],
"params": [
{
"name": "xml",
"type": "string",
"desc": "OpenXml 文本"
}
],
"returns": "array",
"example": "src := array(1, 1, 2);\nreturn demoFn(src, 1, 2.0);\n// 输出:array(2,4)"
"returns": "OpenXmlElement",
"examples": [
{
"desc": "解析根元素",
"code": "xml := '<root/>';\nreturn ParseOpenXml(xml);"
}
]
},
{
"kind": "unit",
"name": "OpenXmlRuntime",
"desc": "提供 OpenXml 运行时接口",
"tags": ["OpenXml", "运行时"],
"members": [
{
"kind": "constant",
"name": "DefaultSize",
"desc": "默认文档容量",
"type": "integer",
"value": 100
},
{
"kind": "variable",
"name": "CurrentDocument",
"desc": "当前文档",
"type": "Document"
},
{
"kind": "function",
"name": "OpenDocument",
"signature": "OpenDocument(path)",
"desc": "打开文档",
"tags": ["OpenXml", "文档", "打开"],
"params": [
{
"name": "path",
"type": "string",
"desc": "文档路径"
}
],
"returns": "Document"
},
{
"kind": "class",
"name": "Document",
"desc": "表示 OpenXml 文档",
"tags": ["OpenXml", "文档"],
"members": [
{
"kind": "method",
"name": "Save",
"visibility": "public",
"binding": "instance",
"signature": "Save(path)",
"desc": "保存文档",
"params": [
{
"name": "path",
"type": "string",
"desc": "保存路径"
}
],
"returns": "boolean"
},
{
"kind": "method",
"name": "Create",
"visibility": "public",
"binding": "class",
"signature": "Create(name)",
"desc": "创建文档",
"params": [
{
"name": "name",
"type": "string",
"desc": "文档名称"
}
],
"returns": "Document"
},
{
"kind": "property",
"name": "Title",
"visibility": "public",
"desc": "文档标题",
"type": "string",
"access": "readwrite"
}
]
}
]
}
]
}