[MFM] Fix hashtag detection

This commit is contained in:
syuilo 2018-11-24 17:18:11 +09:00
parent a479ad357c
commit dbbc416095
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
2 changed files with 8 additions and 1 deletions

View file

@ -112,7 +112,7 @@ const mfm = P.createLanguage({
const text = input.substr(i); const text = input.substr(i);
const match = text.match(/^#([^\s\.,!\?#]+)/i); const match = text.match(/^#([^\s\.,!\?#]+)/i);
if (!match) return P.makeFailure(i, 'not a hashtag'); if (!match) return P.makeFailure(i, 'not a hashtag');
if (match[1].match(/[0-9]+/)) return P.makeFailure(i, 'not a hashtag'); if (match[1].match(/^[0-9]+$/)) return P.makeFailure(i, 'not a hashtag');
if (input[i - 1] != '\n' && input[i - 1] != ' ' && input[i - 1] != null) return P.makeFailure(i, 'require space before "#"'); if (input[i - 1] != '\n' && input[i - 1] != ' ' && input[i - 1] != null) return P.makeFailure(i, 'require space before "#"');
return P.makeSuccess(i + match[0].length, makeNode('hashtag', { hashtag: match[1] })); return P.makeSuccess(i + match[0].length, makeNode('hashtag', { hashtag: match[1] }));
}), }),

View file

@ -205,6 +205,13 @@ describe('Text', () => {
], tokens); ], tokens);
}); });
it('allow including number', () => {
const tokens = analyze('#foo123');
assert.deepEqual([
node('hashtag', { hashtag: 'foo123' }),
], tokens);
});
it('disallow number only', () => { it('disallow number only', () => {
const tokens = analyze('#123'); const tokens = analyze('#123');
assert.deepEqual([ assert.deepEqual([