import { parse } from '../src'; import { bold, link, paragraph, plain, italic, strike, emoji, emojiUnicode, mentionChannel, mentionUser } from '../src/utils'; test.each([ ['*:smile:*', [paragraph([bold([emoji('smile')])])]], ['*test :smile: test*', [paragraph([bold([plain('test '), emoji('smile'), plain(' test')])])]], ['*😀*', [paragraph([bold([emojiUnicode('😀')])])]], ['*test 😀*', [paragraph([bold([plain('test '), emojiUnicode('😀')])])]], ['*@guilherme.gazzo*', [paragraph([bold([mentionUser('guilherme.gazzo')])])]], ['*#GENERAL*', [paragraph([bold([mentionChannel('GENERAL')])])]], ['*test @guilherme.gazzo*', [paragraph([bold([plain('test '), mentionUser('guilherme.gazzo')])])]], ['*test #GENERAL*', [paragraph([bold([plain('test '), mentionChannel('GENERAL')])])]], [ '*[A brand new Gist](https://gist.github.com/24dddfa97bef58f46ac2ce0f80c58ba4)*', [paragraph([bold([link('https://gist.github.com/24dddfa97bef58f46ac2ce0f80c58ba4', [plain('A brand new Gist')])])])], ], ['**bold**', [paragraph([bold([plain('bold')])])]], ['** bold**', [paragraph([bold([plain(' bold')])])]], ['** bold **', [paragraph([bold([plain(' bold ')])])]], ['** bo ld **', [paragraph([bold([plain(' bo ld ')])])]], ['pre**bold**', [paragraph([plain('pre'), bold([plain('bold')])])]], ['**bold**pos', [paragraph([bold([plain('bold')]), plain('pos')])]], ['**bold****bold**', [paragraph([bold([plain('bold')]), bold([plain('bold')])])]], ['**bold** **bold**', [paragraph([bold([plain('bold')]), plain(' '), bold([plain('bold')])])]], ['**bold** __italic__', [paragraph([bold([plain('bold')]), plain(' '), italic([plain('italic')])])]], ['**__italicbold__**', [paragraph([bold([italic([plain('italicbold')])])])]], ['plain **__italicbold__**', [paragraph([plain('plain '), bold([italic([plain('italicbold')])])])]], ['plain **__~~strikeitalicbold~~__**', [paragraph([plain('plain '), bold([italic([strike([plain('strikeitalicbold')])])])])]], ['**', [paragraph([plain('**')])]], ['* *', [paragraph([plain('* *')])]], ['** *', [paragraph([plain('** *')])]], ['** **', [paragraph([plain('** **')])]], ['** **', [paragraph([plain('** **')])]], ['* Hello*', [paragraph([bold([plain(' Hello')])])]], ['*Hello *', [paragraph([bold([plain('Hello ')])])]], [':custom*emoji*case:', [paragraph([plain(':custom'), bold([plain('emoji')]), plain('case:')])]], ['text*hello*text', [paragraph([plain('text'), bold([plain('hello')]), plain('text')])]], ['*hello*text', [paragraph([bold([plain('hello')]), plain('text')])]], ['text*hello*', [paragraph([plain('text'), bold([plain('hello')])])]], ['*Hel lo*', [paragraph([bold([plain('Hel lo')])])]], ['*Hello*', [paragraph([bold([plain('Hello')])])]], ['**Hello*', [paragraph([plain('*'), bold([plain('Hello')])])]], ['*Hello**', [paragraph([bold([plain('Hello')]), plain('*')])]], ['*Hello', [paragraph([plain('*Hello')])]], ['Hello*', [paragraph([plain('Hello*')])]], ['He*llo', [paragraph([plain('He*llo')])]], ['***Hello***', [paragraph([plain('*'), bold([plain('Hello')]), plain('*')])]], ['***Hello**', [paragraph([plain('*'), bold([plain('Hello')])])]], ['*Hello* this is dog', [paragraph([bold([plain('Hello')]), plain(' this is dog')])]], ['Rocket cat says *Hello*', [paragraph([plain('Rocket cat says '), bold([plain('Hello')])])]], ['He said *Hello* to her', [paragraph([plain('He said '), bold([plain('Hello')]), plain(' to her')])]], ['**Hello** this is dog', [paragraph([bold([plain('Hello')]), plain(' this is dog')])]], ['Rocket cat says **Hello**', [paragraph([plain('Rocket cat says '), bold([plain('Hello')])])]], ['He said **Hello** to her', [paragraph([plain('He said '), bold([plain('Hello')]), plain(' to her')])]], ['He was a**nn**oyed', [paragraph([plain('He was a'), bold([plain('nn')]), plain('oyed')])]], ['There are two o in f*oo*tball', [paragraph([plain('There are two o in f'), bold([plain('oo')]), plain('tball')])]], ['*(teste*', [paragraph([bold([plain('(teste')])])]], ['*(teste)*', [paragraph([bold([plain('(teste)')])])]], ['*__~bolditalicstrike~_*', [paragraph([bold([plain('_'), italic([strike([plain('bolditalicstrike')])])])])]], ])('parses %p', (input, output) => { expect(parse(input)).toMatchObject(output); });