初步研究ldoc与EmmyLua结合使用以生成文档

lunarmodules/ldoc

概述

经过初步研究,疑似无法直接将两者(ldoc、EmmyLua)结合使用。

环境

  • Windows 11
  • Lua for Windows (5.1.5)
  • ldoc 1.5.0

步骤

  1. 克隆仓库 https://github.com/lunarmodules/ldoc.gitd:/ldoc
  2. 在 ldoc.lua 所在目录下打开控制台
  3. 输入 lua ldoc.lua "D:\你的Lua代码路径"
  4. 生成的文档将在控制台的运行根目录,本例中为 ldoc.lua 同级目录 doc
  5. 打开 doc/index.html 查看文档

问题

报错: ‘class’ cannot have multiple values

togglecomponent.lua:7: ?: 'class' cannot have multiple values; {ToggleComponent : Object,module}

使用 dingshukai/lua-oop 框架的情况下报错。

错误代码:

1
2
---@class ToggleComponent : Object
local ToggleComponent = oop.class()

经过对ldoc文档的阅读,发现ldoc疑似不支持现在正在VSCode和Jetbrain中流行的lua注释语法(基于EmmyLua)。

@class 是EmmyLua提供的注释语法,但不被ldoc支持。

类似的,像 ---@param p1 number 这样的语法也不能被正确解读,在ldoc中, @param 指代的是没有指定数据类型的参数。

如果要指定参数类型,需要使用 @int 等直接指定类型的标签。

想要同时使用EmmyLua和ldoc似乎是不可能的。

参考