14 个稳定版本 (3 个主要版本)

3.0.0 2023 年 4 月 22 日
2.0.3 2023 年 3 月 9 日
2.0.1 2023 年 2 月 1 日
1.4.0 2023 年 1 月 16 日
0.1.0 2023 年 1 月 13 日

4#text-node

Download history 62/week @ 2024-07-03 9/week @ 2024-07-10

每月 71 次下载

MIT 许可证

17KB
355

NXML

NXML 是一种标记语言,它不是 XML。它基于 XML,但走了非常不同的方向,现在与 XML 完全不同。

语法解释

  • 节点可以是文本(hello)或序列([I|am|a|sequence]
  • 括号([])包围序列
  • 节点可以一个接一个地出现,无需任何显式的分隔符(text[sequence][sequence]text
  • 竖线(|)表示文本节点的结束(否则文本节点在输入结束时或序列边界(括号)处结束)。这可以用来连续放置文本节点或创建一个空文本节点
  • 每个特殊字符(|[]\)都可以用反斜杠(\)转义

语法语法(伪 Backus-Naur 形式;可能无效)

special_character ::= "[" | "]" | "|" | "\\"
text_character ::= !special_character | "\\\\" | "\\[" | "\\]" | "\\|"
text ::= text text_character | text_character | text "|" | "|"
sequence_of_nodes ::= sequence_of_nodes node | node
node ::= text | "[" + sequence_of_nodes + "]" | "[]"

语法示例

[to-do list|
    [buy some groceries|[
        lettuce |
        cucumber |
        ketchup
    ]]
    [finish NXML|[
        add syntax explanation to the README |
        update syntax examples |
        rewrite the parser
    ]]
    [do the homework]
]


[user|
    [id|123]
    [name|Paul]
    [surname|Brown]
    [profession|Architect]
    [friend ids|[234|345|456]]
]


[
    [message|
        [from|Alice]
        [to|Bob]
        [contents|Hello!]
    ]
    [message|
        [from|Bob]
        [to|Alice]
        [contents|Hi!]
    ]
]


[ARTICLE|
    [TITLE|Cookies are good]
    [CONTENTS|
        [PARAGRAPH|
            [OUTER REFERENCE|[URL|https://en.wikipedia.org/wiki/Cookie][TEXT|Cookies]] are good!
        ]
    ]
]


you can use the sequential parser to parse bare sequential nodes |
something |
something


an empty text node! -> || <- here it is!
another one, this time inside a sequence: [|] (it is between the opening bracket and the vertical bar)

使用此库时应考虑的事项

  • 此库不会修剪文本节点末尾或开头的空白,以提供更好的灵活性。修剪过多的空白是用户的责任。

依赖关系

~280–730KB
~17K SLoC