Skip to content
Snippets Groups Projects
Commit 4c20bcb0 authored by marihachi's avatar marihachi
Browse files

add brackets property of url node

parent 8a7dcab4
No related branches found
No related tags found
No related merge requests found
......@@ -475,6 +475,7 @@ http://hoge.jp/abc
```
## ノード
構文1:
```js
{
type: 'url',
......@@ -484,6 +485,29 @@ http://hoge.jp/abc
}
```
または
```js
{
type: 'url',
props: {
url: 'https://misskey.io/@ai',
brackets: false
}
}
```
構文2:
```js
{
type: 'url',
props: {
url: 'https://misskey.io/@ai',
brackets: true
}
}
```
## 詳細
- インライン構文。
......
......@@ -362,7 +362,7 @@ hashtagChar
url
= "<" url:altUrlFormat ">"
{
return N_URL(url);
return N_URL(url, true);
}
/ url:urlFormat
{
......
......@@ -79,7 +79,12 @@ export function stringifyNode(node: MfmNode): string {
return `#${ node.props.hashtag }`;
}
case 'url': {
return node.props.url;
if (node.props.brackets) {
return `<${ node.props.url }>`;
}
else {
return node.props.url;
}
}
case 'link': {
const prefix = node.props.silent ? '?' : '';
......
......@@ -143,10 +143,11 @@ export type MfmUrl = {
type: 'url';
props: {
url: string;
brackets?: boolean;
};
children?: [];
};
export const N_URL = (value: string): NodeType<'url'> => { return { type:'url', props: { url: value } }; };
export const N_URL = (value: string, brackets?: boolean): NodeType<'url'> => { return { type:'url', props: { url: value, brackets } }; };
export type MfmLink = {
type: 'link';
......
......@@ -878,7 +878,7 @@ hoge`;
it('match non-ascii characters contained url with angle brackets', () => {
const input = '<https://大石泉すき.example.com>';
const output = [
N_URL('https://大石泉すき.example.com'),
N_URL('https://大石泉すき.example.com', true),
];
assert.deepStrictEqual(mfm.parse(input), output);
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment