Merge branch 'develop' of https://github.com/misskey-dev/mfm.js into develop

This commit is contained in:
syuilo 2021-06-06 23:54:53 +09:00
commit 8ebf1a25e4
3 changed files with 34 additions and 8 deletions

View file

@ -349,6 +349,7 @@ _italic_
## 詳細 ## 詳細
- インライン構文。 - インライン構文。
- 内容には改行を含めることができない。 - 内容には改行を含めることができない。
- 内容には「´」を含めることができない。
@ -447,12 +448,14 @@ _italic_
- 内容には`.` `,` `!` `?` `'` `"` `#` `:` `/` `【` `】` を含めることができない。 - 内容には`.` `,` `!` `?` `'` `"` `#` `:` `/` `【` `】` を含めることができない。
- 括弧は対になっている時のみ内容に含めることができる。対象: `()` `[]` `「」` - 括弧は対になっている時のみ内容に含めることができる。対象: `()` `[]` `「」`
- `#`の前の文字が(改行、スペース、無し、[a-zA-Z0-9]に一致しない)のいずれかの場合にハッシュタグとして認識する。 - `#`の前の文字が(改行、スペース、無し、[a-zA-Z0-9]に一致しない)のいずれかの場合にハッシュタグとして認識する。
- 内容が数字のみの場合はハッシュタグとして認識しない。
<h1 id="url">URL</h2> <h1 id="url">URL</h2>
## 形式 ## 形式
構文1:
``` ```
https://misskey.io/@ai https://misskey.io/@ai
``` ```
@ -461,6 +464,15 @@ https://misskey.io/@ai
http://hoge.jp/abc http://hoge.jp/abc
``` ```
構文2:
```
<https://misskey.io/@ai>
```
```
<http://.jp/abc>
```
## ノード ## ノード
```js ```js
{ {
@ -473,10 +485,15 @@ http://hoge.jp/abc
## 詳細 ## 詳細
- インライン構文。 - インライン構文。
構文1のみ:
- 内容には`[.,a-z0-9_/:%#@$&?!~=+-]i`にマッチする文字を使用できる。 - 内容には`[.,a-z0-9_/:%#@$&?!~=+-]i`にマッチする文字を使用できる。
- 内容には対になっている括弧を使用できる。対象: `(` `)` `[` `]` - 内容には対になっている括弧を使用できる。対象: `(` `)` `[` `]`
- `.`や`,`は最後の文字にできない。 - `.`や`,`は最後の文字にできない。
構文2のみ:
- 内容には改行、スペース以外の文字を使用できる。
<h1 id="link">リンク</h2> <h1 id="link">リンク</h2>

View file

@ -1,6 +1,6 @@
{ {
"name": "mfm-js", "name": "mfm-js",
"version": "0.16.5", "version": "0.17.0",
"description": "An MFM parser implementation with PEG.js", "description": "An MFM parser implementation with PEG.js",
"main": "./built/index.js", "main": "./built/index.js",
"types": "./built/index.d.ts", "types": "./built/index.d.ts",

View file

@ -291,7 +291,7 @@ strike
// inline: inlineCode // inline: inlineCode
inlineCode inlineCode
= "`" content:$(!"`" c:CHAR { return c; })+ "`" = "`" content:$(![`´] c:CHAR { return c; })+ "`"
{ {
return INLINE_CODE(content); return INLINE_CODE(content);
} }
@ -341,7 +341,13 @@ hashtag
} }
hashtagContent hashtagContent
= (hashtagBracketPair / hashtagChar)+ { return text(); } = !(invalidHashtagContent !hashtagContentPart) hashtagContentPart+ { return text(); }
invalidHashtagContent
= [0-9]+
hashtagContentPart
= hashtagBracketPair / hashtagChar
hashtagBracketPair hashtagBracketPair
= "(" hashtagContent* ")" = "(" hashtagContent* ")"
@ -354,7 +360,7 @@ hashtagChar
// inline: URL // inline: URL
url url
= "<" url:urlFormat ">" = "<" url:altUrlFormat ">"
{ {
return N_URL(url); return N_URL(url);
} }
@ -364,14 +370,11 @@ url
} }
urlFormat urlFormat
= "http" "s"? "://" urlContent = "http" "s"? "://" urlContentPart+
{ {
return text(); return text();
} }
urlContent
= urlContentPart+
urlContentPart urlContentPart
= urlBracketPair = urlBracketPair
/ [.,] &urlContentPart // last char is neither "." nor ",". / [.,] &urlContentPart // last char is neither "." nor ",".
@ -381,6 +384,12 @@ urlBracketPair
= "(" urlContentPart* ")" = "(" urlContentPart* ")"
/ "[" urlContentPart* "]" / "[" urlContentPart* "]"
altUrlFormat
= "http" "s"? "://" (!(">" / _) CHAR)+
{
return text();
}
// inline: link // inline: link
link link