Skip to content

Commit f0b35d4

Browse files
committed
Tokenise inline markup correctly
Fixes: #8
1 parent 36178c6 commit f0b35d4

File tree

10 files changed

+681
-13
lines changed

10 files changed

+681
-13
lines changed

grammars/muse.cson

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,24 +140,24 @@ repository:
140140
patterns: [{
141141
# ***Bold italic***
142142
name: "markup.bold.italic.strong.emphasis.muse"
143-
begin: "(\\*{3})"
144-
end: "\\1|(?=^[ \\t]*$)"
143+
begin: "(?<=\\W|^)(\\*{3})(?=\\S)"
144+
end: "(?<=\\S)\\1(?=\\W|$)|(?=^[ \\t]*$)"
145145
beginCaptures: 1: name: "punctuation.definition.emphasis.begin.muse"
146146
endCaptures: 0: name: "punctuation.definition.emphasis.end.muse"
147147
patterns: [include: "#inline"]
148148
},{
149149
# **Bold**
150150
name: "markup.bold.strong.emphasis.muse"
151-
begin: "(\\*{2})"
152-
end: "\\1|(?=^[ \\t]*$)"
151+
begin: "(?<=\\W|^)(\\*{2})(?=\\S)"
152+
end: "(?<=\\S)\\1(?=\\W|$)|(?=^[ \\t]*$)"
153153
beginCaptures: 1: name: "punctuation.definition.emphasis.begin.muse"
154154
endCaptures: 0: name: "punctuation.definition.emphasis.end.muse"
155155
patterns: [include: "#inline"]
156156
},{
157157
# *Italic*
158158
name: "markup.italic.emphasis.muse"
159-
begin: "\\*"
160-
end: "\\*|(?=^[ \\t]*$)"
159+
begin: "(?<=\\W|^)\\*(?=\\S)"
160+
end: "(?<=\\S)\\*(?=\\W|$)|(?=^[ \\t]*$)"
161161
beginCaptures: 0: name: "punctuation.definition.emphasis.begin.muse"
162162
endCaptures: 0: name: "punctuation.definition.emphasis.end.muse"
163163
patterns: [include: "#inline"]
@@ -331,8 +331,8 @@ repository:
331331
# =literal=
332332
literal:
333333
name: "markup.raw.literal.muse"
334-
begin: "="
335-
end: "(?!\\G)=|(?=^[ \\t]*$)"
334+
begin: "(?<=\\W|^)=(?=\\S)"
335+
end: "(?!\\G)(?<=\\S)=(?=\\W|$)|(?=^[ \\t]*$)"
336336
beginCaptures: 0: name: "punctuation.definition.literal.begin.muse"
337337
endCaptures: 0: name: "punctuation.definition.literal.end.muse"
338338

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
Foo ***bolditalic*** baz
2+
3+
Foo ***bold italic*** baz
4+
5+
Foo ***bolditalic *italic* bolditalic*** baz
6+
7+
Foo ***bolditalic *italic italic* bolditalic*** baz
8+
9+
Foo ***bolditalic **bold** bolditalic*** baz
10+
11+
Foo ***bolditalic **bold bold** bolditalic*** baz
12+
13+
Foo ***bolditalic ***bolditalic*** bolditalic*** baz
14+
15+
Foo ***bolditalic ***bold italic*** bolditalic*** baz
16+
17+
Foo ***bolditalic
18+
bolditalic*** bar
19+
20+
***bolditalic
21+
bolditalic*** bar
22+
23+
***bolditalic
24+
25+
Foo* normal* baz
26+
27+
Foo ***bolditalic*unclosed bolditalic
28+
29+
Foo ***bolditalic*bolditalic*** baz
30+
31+
Foo ***bolditalic ***bolditalic
32+
bolditalic*** bolditalic*** baz
33+
34+
Foo ***bolditalic ***bolditalic *italic
35+
italic* bolditalic*** bolditalic*** baz
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Foo **bold** baz
2+
3+
Foo **bold bold** baz
4+
5+
Foo **bold **bold** bold** baz
6+
7+
Foo **bold *bold italic* bold** baz
8+
9+
Foo **bold ***bold italic*** bold** baz
10+
11+
Foo **bold
12+
bold** bar
13+
14+
**bold
15+
bold** bar
16+
17+
**bold
18+
19+
Foo* normal* baz
20+
21+
Foo **bold*unclosed bold
22+
23+
Foo **bold*bold** baz
24+
25+
Foo **bold **bold
26+
bold** bold** baz
27+
28+
Foo **bold **bold *italic
29+
italic* bold** bold** baz
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
Foo *italic* baz
2+
3+
Foo *italic italic* baz
4+
5+
Foo *italic *italic* italic* baz
6+
7+
Foo *italic **bold italic** italic* baz
8+
9+
Foo *italic ***bold italic*** italic* baz
10+
11+
Foo *italic
12+
italic* bar
13+
14+
*italic
15+
italic* bar
16+
17+
*italic
18+
19+
Foo* normal* baz
20+
21+
Foo *italic*unclosed italic
22+
23+
Foo *italic*italic* baz
24+
25+
Foo *italic *italic
26+
italic* italic* baz
27+
28+
Foo *italic *italic **bold
29+
bold** italic* italic* baz
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
Foo =literal= bar
2+
3+
Foo =literal literal= bar
4+
5+
Foo =literal =literal= normal= bar
6+
7+
Foo =literal *literal* literal= bar
8+
9+
Foo =literal **literal literal** literal= bar
10+
11+
Foo =literal ***literal literal*** literal= bar
12+
13+
Foo === bar
14+
15+
Foo ==literal literal= bar
16+
17+
Foo =literal
18+
literal= bar
19+
20+
=literal
21+
literal= bar
22+
23+
=literal
24+
25+
Foo= normal= baz
26+
27+
Foo =literal=unclosed literal
28+
29+
Foo =literal=literal= baz
30+
31+
Foo =literal *literal
32+
literal* literal= baz
33+
34+
Foo =literal =literal **literal
35+
literal** literal= normal= baz

spec/fixtures/output/inline-bold-italic.muse.json

Lines changed: 163 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
[[
2+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
3+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
4+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
5+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
6+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
7+
],[
8+
["", "text.muse", "meta.document.muse"]
9+
],[
10+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
11+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
12+
["bold bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
13+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
14+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
15+
],[
16+
["", "text.muse", "meta.document.muse"]
17+
],[
18+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
19+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
20+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
21+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
22+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse"],
23+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
24+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
25+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
26+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
27+
],[
28+
["", "text.muse", "meta.document.muse"]
29+
],[
30+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
31+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
32+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
33+
["*", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
34+
["bold italic", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse"],
35+
["*", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
36+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
37+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
38+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
39+
],[
40+
["", "text.muse", "meta.document.muse"]
41+
],[
42+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
43+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
44+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
45+
["***", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.italic.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
46+
["bold italic", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.italic.strong.emphasis.muse"],
47+
["***", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.italic.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
48+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
49+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
50+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
51+
],[
52+
["", "text.muse", "meta.document.muse"]
53+
],[
54+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
55+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
56+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"]
57+
],[
58+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
59+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
60+
[" bar", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
61+
],[
62+
["", "text.muse", "meta.document.muse"]
63+
],[
64+
["**", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
65+
["bold", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse"]
66+
],[
67+
["bold", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse"],
68+
["**", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
69+
[" bar", "text.muse", "meta.document.muse"]
70+
],[
71+
["", "text.muse", "meta.document.muse"]
72+
],[
73+
["**", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
74+
["bold", "text.muse", "meta.document.muse", "markup.bold.strong.emphasis.muse"]
75+
],[
76+
["", "text.muse", "meta.document.muse"]
77+
],[
78+
["Foo* normal* baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
79+
],[
80+
["", "text.muse", "meta.document.muse"]
81+
],[
82+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
83+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
84+
["bold*unclosed bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"]
85+
],[
86+
["", "text.muse", "meta.document.muse"]
87+
],[
88+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
89+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
90+
["bold*bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
91+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
92+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
93+
],[
94+
["", "text.muse", "meta.document.muse"]
95+
],[
96+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
97+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
98+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
99+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
100+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse"]
101+
],[
102+
["bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse"],
103+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
104+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
105+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
106+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
107+
],[
108+
["", "text.muse", "meta.document.muse"]
109+
],[
110+
["Foo ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"],
111+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
112+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
113+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
114+
["bold ", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse"],
115+
["*", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse", "punctuation.definition.emphasis.begin.muse"],
116+
["italic", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse"]
117+
],[
118+
["italic", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse"],
119+
["*", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "markup.italic.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
120+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse"],
121+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
122+
[" bold", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse"],
123+
["**", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse", "markup.bold.strong.emphasis.muse", "punctuation.definition.emphasis.end.muse"],
124+
[" baz", "text.muse", "meta.document.muse", "meta.paragraph.align.left.muse"]
125+
],[
126+
["", "text.muse", "meta.document.muse"]
127+
]]

0 commit comments

Comments
 (0)