#eip #proposal #ethereum #parser #validation #preamble #eipw

eipw-preamble

eipw 的前言解析器,以太坊改进提案验证器

1 个不稳定版本

0.1.0 2023 年 11 月 8 日

#9#eip

MPL-2.0 许可证

20KB
248

eipw

eipv 多一个的 EIP 验证器。

USAGE:
    eipw [OPTIONS] [SOURCES]...

ARGS:
    <SOURCES>...    Files and/or directories to check

OPTIONS:
        --format <FORMAT>     Output format [default: text] [possible values: text, json]
    -h, --help                Print help information
        --lints <LINTS>       Additional lints to enable
        --list-lints          List all available lints
        --no-default-lints    Do not enable the default lints

示例

示例 EIP

---
eip: 2
description: A really short example of an EIP.
title: Sample of an EIP
author: Sam Wilson (@SamWilsn)
discussions-to: https://example.com/
status: Living
type: Meta
created: 2022-06-30
---

## Specification

Implementers of this EIP must...

## Abstract

This is an abstract!

输出

error[markdown-order-section]: section `Specification` must come after `Motivation`
  --> /tmp/demo.md
   |
12 | ## Specification
   |
error[preamble-order]: preamble header `description` must come after `title`
 --> /tmp/demo.md
  |
3 | description: A really short example of an EIP.
  |

Lint

id 描述
markdown-html-comments 审查就绪的 EIP 中没有 HTML 注释。
markdown-json-cite 所有的 csl-json 代码块都遵循正确的架构。
markdown-link-first EIP 的第一次提及必须是链接。
markdown-link-status 正文中的 EIP 链接的状态比当前提案更远。
markdown-order-section 没有额外的部分,并且部分按正确顺序排列。
markdown-re-eip-dash 使用 EIP-X 引用其他 EIP,而不是 EIPX 或 EIP X。
markdown-re-erc-dash 使用 ERC-X 引用其他 ERC,而不是 ERCX 或 ERC X。
markdown-refs ERC 使用 ERC-X 引用,而其他提案使用 EIP-X。
markdown-rel-links 页面中的所有 URL 都是相对的。
markdown-req-section 所需部分存在于提案的正文中。
preamble-author 作者头格式正确,并且至少列出了一个 GitHub 用户。
preamble-date-created created 头是日期。
preamble-date-last-call-deadline last-call-deadline 头是日期。
preamble-discussions-to discussions-to 头是有效的 URL。
preamble-eip eip 头是非负整数。
preamble-enum-category category 头是认可的价值。
preamble-enum-status status 头是认可的价值。
preamble-enum-type type 头是认可的价值。
preamble-file-name 文件名反映了 EIP 编号。
preamble-len-description 描述标题不太长。
前言长度-标题 标题标题不太长。
前言长度-要求 要求标题至少有一项。
前言列表-作者 作者标题是一个正确格式的逗号分隔列表。
前言列表-要求 要求标题是一个正确格式的逗号分隔列表。
前言无重复 没有重复标题。
前言顺序 前言标题的顺序正确。
前言描述不包含 描述不包含“标准”或类似词语。
前言描述不包含冒号 描述不包含任何“:”字符。
前言描述-使用破折号 描述标题中引用的EIP使用破折号。
前言描述-ERC使用破折号 描述标题中引用的ERC使用破折号。
前言讨论到 讨论到标题的代码标题指向Ethereum Magicians
前言标题不包含 标题不包含“标准”或类似词语。
前言标题不包含冒号 标题不包含任何“:”字符。
前言标题-使用破折号 标题标题中引用的EIP使用破折号。
前言标题-ERC使用破折号 标题标题中引用的ERC使用破折号。
前言引用描述 描述标题中引用的ERC使用“ERC-”前缀。
前言引用标题 标题标题中引用的ERC使用“ERC-”前缀。
前言要求 所有必需的前言标题都存在。
前言要求-类别 类别标题仅在需要时存在。
前言要求-最后调用截止日期 最后调用截止日期标题仅在需要时存在。
前言要求-撤销原因 撤销原因标题仅在需要时存在。
前言要求-引用描述 描述标题中提到的提案出现在要求标题中。
前言要求-引用标题 标题标题中提到的提案出现在要求标题中。
前言要求-状态 要求标题中列出的EIP状态比当前提案更晚。
前言修剪 前言字段周围没有多余的空白。
前言要求-无符号整数 要求标题是一个非负整数的排序列表。

JavaScript / WebAssembly

eipw-lint-jseipw打包为npm包,用于JavaScript / TypeScript。

您可以在npm上找到此包

构建 & 发布

cd eipw-lint-js
wasm-pack test --node
wasm-pack build -t nodejs
wasm-pack publish -t nodejs

依赖项

~3.5–5MB
~92K SLoC