diff --git a/src/mfm/parse/elements/search.ts b/src/mfm/parse/elements/search.ts index e5d9b9f0c..9c4b7ffbe 100644 --- a/src/mfm/parse/elements/search.ts +++ b/src/mfm/parse/elements/search.ts @@ -9,7 +9,7 @@ export type TextElementSearch = { }; export default function(text: string) { - const match = text.match(/^(.+?) 検索(\n|$)/); + const match = text.match(/^(.+?) (検索|Search)(\n|$)/i); if (!match) return null; return { type: 'search', diff --git a/test/mfm.ts b/test/mfm.ts index de722bffb..f7fa1c0f5 100644 --- a/test/mfm.ts +++ b/test/mfm.ts @@ -93,6 +93,28 @@ describe('Text', () => { assert.equal(tokens[0].type, 'inline-code'); assert.equal(tokens[0].content, '`var x = "Strawberry Pasta";`'); }); + + it('search', () => { + const tokens1 = analyze('a b c 検索'); + assert.deepEqual([ + { type: 'search', content: 'a b c 検索', query: 'a b c'} + ], tokens1); + + const tokens2 = analyze('a b c Search'); + assert.deepEqual([ + { type: 'search', content: 'a b c Search', query: 'a b c'} + ], tokens2); + + const tokens3 = analyze('a b c search'); + assert.deepEqual([ + { type: 'search', content: 'a b c search', query: 'a b c'} + ], tokens3); + + const tokens4 = analyze('a b c SEARCH'); + assert.deepEqual([ + { type: 'search', content: 'a b c SEARCH', query: 'a b c'} + ], tokens4); + }); }); describe('syntax highlighting', () => {