mirror of
https://activitypub.software/TransFem-org/sfm-js
synced 2024-11-21 21:55:09 +00:00
parent
100fb0bfbf
commit
e38a6e6576
3 changed files with 55 additions and 12 deletions
|
@ -449,8 +449,8 @@ _italic_
|
|||
## 詳細
|
||||
- 内容を空にすることはできない。
|
||||
- 内容には半角スペース、全角スペース、改行、タブ文字を含めることができない。
|
||||
- 内容には`.` `,` `!` `?` `'` `"` `#` `:` `/` `【` `】` `<` `>` を含めることができない。
|
||||
- 括弧は対になっている時のみ内容に含めることができる。対象: `()` `[]` `「」`
|
||||
- 内容には`.` `,` `!` `?` `'` `"` `#` `:` `/` `【` `】` `<` `>` `【` `】` `(` `)` `「` `」` `(` `)` を含めることができない。
|
||||
- 括弧は対になっている時のみ内容に含めることができる。対象: `()` `[]` `「」` `()`
|
||||
- `#`の前の文字が(改行、スペース、無し、[a-zA-Z0-9]に一致しない)のいずれかの場合にハッシュタグとして認識する。
|
||||
- 内容が数字のみの場合はハッシュタグとして認識しない。
|
||||
|
||||
|
|
|
@ -473,7 +473,8 @@ hashtagContentPart
|
|||
= "(" hashPairInner ")"
|
||||
/ "[" hashPairInner "]"
|
||||
/ "「" hashPairInner "」"
|
||||
/ ![ \t.,!?'"#:\/\[\]【】()「」<>] CHAR
|
||||
/ "(" hashPairInner ")"
|
||||
/ ![ \t.,!?'"#:\/\[\]【】()「」()<>] CHAR
|
||||
|
||||
hashPairInner
|
||||
= &{ return enterNest(); } @(@hashtagContentPart* &{ return leaveNest(); } / &{ return fallbackNest(); })
|
||||
|
|
|
@ -1265,17 +1265,59 @@ hoge`;
|
|||
});
|
||||
});
|
||||
|
||||
it('hashtag', () => {
|
||||
const input = '<b><b>#abc(xyz)</b></b>';
|
||||
const output = [
|
||||
BOLD([
|
||||
describe('hashtag', () => {
|
||||
it('basic', () => {
|
||||
const input = '<b><b>#abc(xyz)</b></b>';
|
||||
const output = [
|
||||
BOLD([
|
||||
HASHTAG('abc'),
|
||||
TEXT('(xyz)'),
|
||||
BOLD([
|
||||
HASHTAG('abc'),
|
||||
TEXT('(xyz)'),
|
||||
]),
|
||||
]),
|
||||
]),
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input, { nestLimit: 2 }), output);
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input, { nestLimit: 2 }), output);
|
||||
});
|
||||
|
||||
it('outside "()"', () => {
|
||||
const input = '(#abc)';
|
||||
const output = [
|
||||
TEXT('('),
|
||||
HASHTAG('abc'),
|
||||
TEXT(')'),
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input), output);
|
||||
});
|
||||
|
||||
it('outside "[]"', () => {
|
||||
const input = '[#abc]';
|
||||
const output = [
|
||||
TEXT('['),
|
||||
HASHTAG('abc'),
|
||||
TEXT(']'),
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input), output);
|
||||
});
|
||||
|
||||
it('outside "「」"', () => {
|
||||
const input = '「#abc」';
|
||||
const output = [
|
||||
TEXT('「'),
|
||||
HASHTAG('abc'),
|
||||
TEXT('」'),
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input), output);
|
||||
});
|
||||
|
||||
it('outside "()"', () => {
|
||||
const input = '(#abc)';
|
||||
const output = [
|
||||
TEXT('('),
|
||||
HASHTAG('abc'),
|
||||
TEXT(')'),
|
||||
];
|
||||
assert.deepStrictEqual(mfm.parse(input), output);
|
||||
});
|
||||
});
|
||||
|
||||
it('url', () => {
|
||||
|
|
Loading…
Reference in a new issue