-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
-
120
import { parse } from '../src'
import { bold, code, emoji, italic, url, root, strike, text } from './helpers'
describe('#4', () => {
it('Should parse correctly', () => {
const test =
'This is _the_ *first* ~program~ `code of the rest of this` *file*, err, _file_, and by ~file~, I mean *file*.'
const expected = root([
text('This is '),
italic([text('the')]),
text(' '),
bold([text('first')]),
text(' '),
strike([text('program')]),
text(' '),
code('code of the rest of this'),
text(' '),
bold([text('file')]),
text(', err, '),
italic([text('file')]),
text(', and by '),
strike([text('file')]),
text(', I mean '),
bold([text('file')]),
text('.')
])
expect(parse(test)).toEqual(expected)
})
})
describe('#6', () => {
it('Treat only "skin-tone-*" as variations', () => {
expect(parse(':a::b:')).toEqual(root([emoji('a'), emoji('b')]))
})
})
// https://github.com/pocka/slack-message-parser/issues/13
describe('#13', () => {
// According to RFC 2368, spaces in mailto URL should be encoded
// but Slack accpets unencoded spaces.
it('Parse mailto link contains spaces', () => {
expect(
parse('<mailto:foo@bar.baz?subject=Hello, World&body=https://foo.bar>')
).toEqual(
root([
url('mailto:foo@bar.baz?subject=Hello, World&body=https://foo.bar')
])
)
})
})
describe('#22', () => {
it('doesnt match colons and new lines as emojis', () => {
expect(parse('Test:\nTest 2:\nTest 3:')).toEqual(
root([text('Test:\nTest 2:\nTest 3:')])
)
})
})
// https://github.com/pocka/slack-message-parser/issues/34
describe('#34', () => {
it('parses bold formatting properly with various punctuation suffixes', () => {
expect(
parse(
'*Y*~ *N*` *Y*! *N*@ *Y*# *Y*$ *Y*% *Y*^ *N*& *N** *N*( *Y*) *N*_ *Y*- *Y*+ *Y*= *Y*{ *Y*} *Y*[ *Y*] *N*| *N*\\ *Y*; *Y*: *Y*\' *Y*" *N*< *Y*, *N*> *Y*. *Y*? *Y*/ *Y*'
)
).toEqual(
root([
bold([text('Y')]),
text('~ *N*` '),
bold([text('Y')]),
text('! *N*@ '),
bold([text('Y')]),
text('# '),
bold([text('Y')]),
text('$ '),
bold([text('Y')]),
text('% '),
bold([text('Y')]),
text('^ *N*& *N** *N*( '),
bold([text('Y')]),
text(') *N*_ '),
bold([text('Y')]),
text('- '),
bold([text('Y')]),
text('+ '),
bold([text('Y')]),
text('= '),
bold([text('Y')]),
text('{ '),
bold([text('Y')]),
text('} '),
bold([text('Y')]),
text('[ '),
bold([text('Y')]),
text('] *N*| *N*\\ '),
bold([text('Y')]),
text('; '),
bold([text('Y')]),
text(': '),
bold([text('Y')]),
text("' "),
bold([text('Y')]),
text('" *N*< '),
bold([text('Y')]),
text(', *N*> '),
bold([text('Y')]),
text('. '),
bold([text('Y')]),
text('? '),
bold([text('Y')]),
text('/ '),
bold([text('Y')])
])
)
})
})