#lua #parser #documentation #emmylua #vimdoc

bin+lib lemmy-help

Emmylua 解析器和转换器

13 个版本 (7 个破坏性更新)

0.11.0 2022年12月30日
0.10.0 2022年11月18日
0.9.0 2022年10月28日
0.5.0 2022年7月8日

1122解析实现

Download history 34/week @ 2024-03-30 14/week @ 2024-04-06

每月67次下载

MIT 许可

63KB
1.5K SLoC

🤝 lemmy-help

每个人都需要帮助,所以 lemmy-help 你

lemmy-help

什么?

lemmy-help 是一个 emmylua 解析器,同时也是命令行工具,可以将解析后的树转换为 vim 帮助文档。

安装

  • 使用 cargo
cargo install lemmy-help --features=cli
  • Arch Linux
# Using yay
yay -S lemmy-help

# Using paru
paru -S lemmy-help
  • 使用发行版

查看不同操作系统的预构建二进制文件的 发行版页面

Emmylua

为了正确生成文档,你应该遵循 emmylua 规范。解析器能够解析大多数(而不是所有)的 emmylua 语法。你可以阅读以下文档,了解如何正确编写 emmylua 注释。

用法

使用 CLI 很简单,只需提供 lua 文件的路径;它将解析它们并将帮助文档打印到 stdout

lemmy-help /path/to/{first,second,third}.lua > doc/PLUGIN_NAME.txt

Cli

lemmy-help

USAGE:
    lemmy-help [FLAGS] [OPTIONS] <FILES>...

ARGS:
    <FILES>...                  Path to lua files

FLAGS:
    -h, --help                  Print help information
    -v, --version               Print version information
    -M, --no-modeline           Don't print modeline at the end
    -f, --prefix-func           Prefix function name with ---@mod name
    -a, --prefix-alias          Prefix ---@alias tag with return/---@mod name
    -c, --prefix-class          Prefix ---@class tag with return/---@mod name
    -t, --prefix-type           Prefix ---@type tag with ---@mod name
        --expand-opt            Expand '?' (optional) to 'nil' type

OPTIONS:
    -i, --indent <u8>           Controls the indent width [default: 4]
    -l, --layout <layout>       Vimdoc text layout [default: 'default']
                                - "default" : Default layout
                                - "compact[:n=0]" : Aligns [desc] with <type>
                                  and uses {n}, if provided, to indent the
                                  following new lines. This option only
                                  affects ---@field and ---@param tags
                                - "mini[:n=0]" : Aligns [desc] from the start
                                  and uses {n}, if provided, to indent the
                                  following new lines. This option affects
                                  ---@field, ---@param and ---@return tags

USAGE:
    lemmy-help /path/to/first.lua /path/to/second.lua > doc/PLUGIN_NAME.txt
    lemmy-help -c -a /path/to/{first,second,third}.lua > doc/PLUGIN_NAME.txt
    lemmy-help --layout compact:2 /path/to/plugin.lua > doc/PLUGIN_NAME.txt

NOTES:
    - The order of parsing + rendering is relative to the given files

CI

name: lemmy-help

on: [push]

env:
  PLUGIN_NAME: plugin-name

jobs:
  docs:
    runs-on: ubuntu-latest
    name: emmylua to vimdoc
    steps:
      - uses: actions/checkout@v2

      - name: Generating help
        run: |
          curl -Lq https://github.com/numToStr/lemmy-help/releases/latest/download/lemmy-help-x86_64-unknown-linux-gnu.tar.gz | tar xz
          ./lemmy-help [args] <path> > doc/${{env.PLUGIN_NAME}}.txt

      - name: Commit
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          branch: ${{ github.head_ref }}
          commit_message: "chore(docs): auto-generate vimdoc"
          file_pattern: doc/*.txt

致谢

依赖关系

~0.5–0.8MB
~16K SLoC