irc-formatter

用于格式化/序列化 IRC 行的库。

$ opm get jprjr/irc-formatter

lua-irc-formatter

一个用于 IRC 消息的简单格式化/序列化器。

它允许使用消息的默认值创建一个格式化器对象。然后,您可以序列化/格式化您的消息,并将其与默认值合并。

例如,假设您正在构建一个打算向同一个房间发送消息的机器人,您可以创建一个格式化器,其中预先填充了commandparams值。

    local formatter = require('irc-formatter').new({
      command = 'PRIVMSG',
      params = { '#some-room' },
    })

然后,要发送消息,您可以使用您的附加参数(房间消息)调用:format

    local str = formatter:format({
      params = { 'Hello there!' },
    })
    
    --[[ str is:
    PRIVMSG #some-room :Hello there!
    ]]

如果您提供了某种无效数据,默认情况下:format()将抛出错误。您可以使用:validate()事先检查这一点。

    local formatter = require('irc-formatter').new({
      command = 'PRIVMSG',
      params = { '#some-room', 'param with spaces', 'another param with spaces' },
    })
    
    local ok, err = formatter:validate()

您也可以使用表调用:validate(),并且合并的参数将被测试。

    local formatter = require('irc-formatter').new({
      command = 'PRIVMSG',
      params = { '#some-room'},
    })
    
    local ok, err = formatter:validate({
      params = { 'this has spaces', 'and so does this' },
    })

默认情况下,如果您的最终参数不需要冒号,生成的字符串将不包含冒号。您可以选择始终包含冒号,方法是将真值作为第二个值传递。

    local formatter = require('irc-formatter').new({
      command = 'PRIVMSG',
      params = { '#some-room' },
    })
    
    local str = formatter:serialize({
      params = { 'hello' },
    , true)
    
    --[[ str is:
    PRIVMSG #some-room :hello
    ]]

这也会正确地转义标签。还有一种专门的类型用于生成“缺失”标签(其中没有等号或值,只有标签名称)。

    local formatter = require('irc-formatter').new()
    
    local str = formatter:format({
        tags = {
          a = ':-) Hi there;\r\n\\s',
          b = false,
          c = formatter.missing,
          d = 1234,
        },
        source = {
          nick = 'nick',
          user = 'user',
          host = '127.0.0.1',
        },
        command = 'PRIVMSG',
        params = { '#some-room', ':-)Hello there!' },
    })

这将编码为

    @a=:-)\sHi\sthere\:\r\n\\s;b=false;c;d=1234 :nick!user@127.0.0.1 PRIVMSG #some-room ::-)Hello there!

默认情况下,字符串在返回时不带换行符,这可以通过eol参数设置。

参数的完整列表如下:

  • tags - 一个标签表,值将使用tostring转换为字符串。

  • source - 一个指示消息源的表,以前称为prefix,它可以包含以下键:

    • nick

    • user

    • host

  • command - 唯一必需的参数,IRC 命令。

  • params - 一个类似数组的表参数。

  • eol - 换行符标记,例如\r\n

安装

luarocks

可在 luarocks 上获取。

    luarocks install irc-formatter

OPM

可在 OPM 上获取。

    opm install jprjr/irc-formatter

许可证

MIT(参见文件LICENSE

作者

John Regan

许可证

mit

版本