Lints to ensure link text for EIPs should match the EIP's number
Let's create two lints:
markdown-link-eip
If the link destination matches the pattern eip-([^.]*)\.md$, trigger if the link text does not match ^(EIP|ERC)-\1$, where \1 is the proposal's number from the file name (aka capture group 1.)
For example:
[EIP-1](./eip-2.md)[EIP-1: Foo](./eip-1.md)[Another Proposal](./eip-1.md)
If the link destination matches the pattern eip-([^.]*)\.md#.+$, trigger if the link text does not match ^(EIP|ERC)-\1\s*\S+, where \1 is the proposal's number from the file name (aka capture group 1.) Note that this pattern allows trailing characters.
For example:
[EIP-1](./eip-1.md#motivation)[EIP-2: Hello](./eip-1.md#abstract)[Another Proposal](./eip-1.md#rationale)
markdown-link-other
If the link text begins with EIP or ERC, the link target must be an EIP. For example:
[EIP-2](../assets/eip-2/foo.txt)
Note: if it links to a section, then this lint should be ignored, such as [EIP-721's Motivation](./eip-721.md#motivation).
That's a good point!
Hi, I would like take this up with Katya
Hi @SamWilsn, yep, we both would like to contribute into it. Please, assign us to this issue
Hi @SamWilsn, taking into account @Pandapip1 's comment about sections, should all these links matching the pattern eip-([^.]*)\.md#.+$ be ignored? Those ones having the section in the link, the second part of markdown-link-eip part:
[EIP-1](./eip-1.md#motivation)[EIP-2: Hello](./eip-1.md#abstract)[Another Proposal](./eip-1.md#rationale)
This paragraph covers those examples:
If the link destination matches the pattern
eip-([^.]*)\.md#.+$, trigger if the link text does not match^(EIP|ERC)-\1\s*\S+, where\1is the proposal's number from the file name (aka capture group 1.) Note that this pattern allows trailing characters.
So:
[EIP-1](./eip-1.md#motivation)would not be allowed because it doesn't have anything in the\S+position of the regex.[EIP-2: Hello](./eip-1.md#abstract)would not be allowed because it doesn't match EIP number.[Another Proposal](./eip-1.md#rationale)would not be allowed because it doesn't begin with eitherERCorEIP.
However, [EIP-1: Motivation](./eip-1.md#motivation) would be allowed.
@SamWilsn could you please explain why [EIP-1: Foo](./eip-1.md) is incorrect?
Because it doesn't have a subsection (after the # in the link.)
if [EIP-N] is extended with extra text like ': Foo' it means the link should have a section?
Pretty much. So URLs with a # should have : ...
@SamWilsn, for markdown-link-other should I check eip number match in the text and the link?
markdown-link-other should prevent links that look like EIPs/ERCs that don't point to EIPs.