All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
2 unlet! b:mkd_known_filetypes
3 unlet! b:mkd_included_filetypes
4 unlet! g:vim_markdown_math
10 AssertNotEqual SyntaxOf('a'), 'htmlBold'
11 AssertEqual SyntaxOf('b'), 'htmlBold'
12 AssertNotEqual SyntaxOf('c'), 'htmlBold'
18 AssertNotEqual SyntaxOf('a'), 'htmlBold'
19 AssertEqual SyntaxOf('b'), 'htmlBold'
20 AssertNotEqual SyntaxOf('c'), 'htmlBold'
26 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
27 AssertEqual SyntaxOf('b'), 'htmlItalic'
28 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
34 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
35 AssertEqual SyntaxOf('b'), 'htmlItalic'
36 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
41 Execute (italic text has underscores):
42 AssertEqual SyntaxOf('a'), 'htmlItalic'
43 AssertEqual SyntaxOf('b'), 'htmlItalic'
48 Execute (not italic with escaped asterisks):
49 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
50 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
51 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
56 Execute (not italic with escaped underscores):
57 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
58 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
59 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
64 Execute (italic with escaped underscores):
65 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
66 AssertEqual SyntaxOf('b'), 'htmlItalic'
67 AssertEqual SyntaxOf('c'), 'htmlItalic'
68 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
73 Execute (not italic underscores within text):
74 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
75 AssertNotEqual SyntaxOf('b'), 'htmlItalic'
76 AssertNotEqual SyntaxOf('c'), 'htmlItalic'
81 Execute (italic with escaped asterisks):
82 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
83 AssertEqual SyntaxOf('b'), 'htmlItalic'
84 AssertEqual SyntaxOf('c'), 'htmlItalic'
85 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
90 Execute (bold with escaped underscores):
91 AssertNotEqual SyntaxOf('a'), 'htmlBold'
92 AssertEqual SyntaxOf('b'), 'htmlBold'
93 AssertEqual SyntaxOf('c'), 'htmlBold'
94 AssertNotEqual SyntaxOf('d'), 'htmlBold'
100 Execute (italic with underscores in multiple lines):
101 AssertEqual SyntaxOf('a'), 'htmlItalic'
102 AssertEqual SyntaxOf('b'), 'htmlItalic'
103 AssertEqual SyntaxOf('c'), 'htmlItalic'
104 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
110 Execute (bold with underscores in multiple lines):
111 AssertEqual SyntaxOf('a'), 'htmlBold'
112 AssertEqual SyntaxOf('b'), 'htmlBold'
113 AssertEqual SyntaxOf('c'), 'htmlBold'
114 AssertNotEqual SyntaxOf('d'), 'htmlBold'
120 Execute (bold italic with underscores in multiple lines):
121 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
122 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
123 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
124 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
130 Execute (italic with asterisks in multiple lines):
131 AssertEqual SyntaxOf('a'), 'htmlItalic'
132 AssertEqual SyntaxOf('b'), 'htmlItalic'
133 AssertEqual SyntaxOf('c'), 'htmlItalic'
134 AssertNotEqual SyntaxOf('d'), 'htmlItalic'
140 Execute (bold with asterisks in multiple lines):
141 AssertEqual SyntaxOf('a'), 'htmlBold'
142 AssertEqual SyntaxOf('b'), 'htmlBold'
143 AssertEqual SyntaxOf('c'), 'htmlBold'
144 AssertNotEqual SyntaxOf('d'), 'htmlBold'
150 Execute (bold italic with asterisks in multiple lines):
151 AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
152 AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
153 AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
154 AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
159 Execute (not italic with an asterisk):
160 AssertNotEqual SyntaxOf('a'), 'htmlItalic'
165 Execute (not bold with double underscores):
166 AssertNotEqual SyntaxOf('_'), 'htmlBold'
167 AssertNotEqual SyntaxOf('a'), 'htmlBold'
168 AssertNotEqual SyntaxOf('b'), 'htmlBold'
175 Execute (link with title):
176 AssertEqual SyntaxOf('a'), 'mkdLink'
177 AssertEqual SyntaxOf('b'), 'mkdURL'
183 Execute (link text with newline):
184 AssertEqual SyntaxOf('a'), 'mkdLink'
185 AssertEqual SyntaxOf('b'), 'mkdLink'
186 AssertEqual SyntaxOf('c'), 'mkdURL'
193 Execute (parenthesis not in link):
194 AssertNotEqual SyntaxOf('a'), 'mkdURL'
195 AssertNotEqual SyntaxOf('b'), 'mkdURL'
200 Execute (multiple links on a line):
201 AssertNotEqual SyntaxOf('c'), 'mkdLink'
202 AssertNotEqual SyntaxOf('c'), 'mkdURL'
207 Execute (space is not allowed between link text and parenthesis):
208 AssertNotEqual SyntaxOf('a'), 'mkdLink'
209 AssertNotEqual SyntaxOf('b'), 'mkdURL'
214 Execute (conceal link):
216 setlocal conceallevel=2
217 AssertEqual synconcealed(1, 1)[0], 1
218 AssertEqual synconcealed(1, 2)[0], 0
219 AssertEqual synconcealed(1, 3)[0], 1
220 AssertEqual synconcealed(1, 4)[0], 1
221 AssertEqual synconcealed(1, 4)[0], 1
222 AssertEqual synconcealed(1, 5)[0], 1
223 AssertEqual synconcealed(1, 6)[0], 1
224 setlocal conceallevel=0
227 Execute (disable conceal):
229 let g:vim_markdown_conceal=0
231 setlocal conceallevel=2
232 AssertEqual synconcealed(1, 1)[0], 0
233 AssertEqual synconcealed(1, 2)[0], 0
234 AssertEqual synconcealed(1, 3)[0], 0
235 AssertEqual synconcealed(1, 4)[0], 0
236 AssertEqual synconcealed(1, 4)[0], 0
237 AssertEqual synconcealed(1, 5)[0], 0
238 AssertEqual synconcealed(1, 6)[0], 0
240 let g:vim_markdown_conceal=1
242 AssertEqual synconcealed(1, 1)[0], 1
243 AssertEqual synconcealed(1, 2)[0], 0
244 AssertEqual synconcealed(1, 3)[0], 1
245 AssertEqual synconcealed(1, 4)[0], 1
246 AssertEqual synconcealed(1, 4)[0], 1
247 AssertEqual synconcealed(1, 5)[0], 1
248 AssertEqual synconcealed(1, 6)[0], 1
250 setlocal conceallevel=0
251 unlet g:vim_markdown_conceal
261 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
262 AssertEqual SyntaxOf('<'), 'mkdDelimiter'
263 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
264 AssertEqual SyntaxOf('>'), 'mkdDelimiter'
265 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
270 Execute (autolink with domain starting with a number):
271 AssertEqual SyntaxOf('12monkeys'), 'mkdInlineURL'
276 Execute (autolink with scheme case is insensitive):
277 AssertEqual SyntaxOf('a'), 'mkdInlineURL'
282 Execute (autolink without scheme is not a link):
283 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
291 Execute (autolink with space is not a link):
292 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
293 AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
294 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
295 AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
296 AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
301 Execute (autolinks can be backslash escaped):
302 AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
307 Execute (autolink in parenthesis):
308 AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
309 AssertEqual SyntaxOf('('), 'mkdDelimiter'
310 AssertEqual SyntaxOf('b'), 'mkdInlineURL'
311 AssertEqual SyntaxOf(')'), 'mkdDelimiter'
312 AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
315 [![a](http://b)](http://c)
317 Execute (autolink in link text):
318 AssertEqual SyntaxOf('!'), 'mkdDelimiter'
319 AssertEqual SyntaxOf('a'), 'mkdLink'
320 AssertEqual SyntaxOf('b'), 'mkdURL'
321 AssertEqual SyntaxOf('c'), 'mkdURL'
330 Execute (code blocks can be fenced with tildes):
331 AssertEqual SyntaxOf('c'), 'mkdCode'
338 Execute (code blocks can be fenced with tildes longer than 3):
339 AssertEqual SyntaxOf('c'), 'mkdCode'
346 Execute (code blocks can be fenced with backticks longer than 3):
347 AssertEqual SyntaxOf('c'), 'mkdCode'
354 Execute (code blocks can have a language specifier):
355 AssertEqual SyntaxOf('c'), 'mkdCode'
364 Execute (code blocks can be fenced with backticks and a language specifier):
365 AssertEqual SyntaxOf('code'), 'mkdCode'
366 AssertNotEqual SyntaxOf('text'), 'mkdCode'
376 Execute (indent code blocks):
377 AssertNotEqual SyntaxOf('a'), 'mkdCode'
378 AssertEqual SyntaxOf('b'), 'mkdCode'
379 AssertEqual SyntaxOf('c'), 'mkdCode'
388 Execute (indent code blocks after header):
389 AssertNotEqual SyntaxOf('a'), 'mkdCode'
390 AssertNotEqual SyntaxOf('b'), 'mkdCode'
391 AssertEqual SyntaxOf('c'), 'mkdCode'
400 Execute (indent code blocks after list):
401 AssertNotEqual SyntaxOf('a'), 'mkdCode'
402 AssertNotEqual SyntaxOf('b'), 'mkdCode'
403 AssertEqual SyntaxOf('c'), 'mkdCode'
409 Execute (indent code block at beginning of file):
410 AssertEqual SyntaxOf('a'), 'mkdCode'
411 AssertEqual SyntaxOf('b'), 'mkdCode'
424 Execute (fenced code block syntax with a language specifier):
425 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
427 AssertEqual SyntaxOf('include'), 'cInclude'
428 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
429 AssertEqual SyntaxOf('def'), 'rubyDefine'
452 Execute (fenced code block syntax with a language specifier after whitespace):
453 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
455 AssertEqual SyntaxOf('include'), 'cInclude'
456 AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
457 AssertEqual SyntaxOf('g:a'), 'vimVar'
458 AssertEqual SyntaxOf('def'), 'rubyDefine'
459 AssertNotEqual SyntaxOf('class'), 'rubyClass'
470 Execute (fenced code block syntax with alias language specifier):
471 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
473 AssertEqual SyntaxOf('g:a'), 'vimVar'
474 AssertEqual SyntaxOf('g:b'), 'vimVar'
481 Execute (fenced code block languages setting):
482 let g:vim_markdown_fenced_languages = ['csharp=cs']
483 source ../ftplugin/markdown.vim
484 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
486 AssertEqual SyntaxOf('foo'), 'csString'
487 unlet g:vim_markdown_fenced_languages
494 Execute (fenced code block includes language syntax with reopening same buffer):
495 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
500 set filetype=markdown
501 execute "normal! i```vim\<cr>let g:a = 1\<cr>```"
503 AssertEqual SyntaxOf('g:a'), 'vimVar'
510 Execute (fenced code block syntax with an unknown language specifier):
511 let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
513 AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
522 Execute (first = or - in fenced code block is not setex headers):
523 AssertEqual SyntaxOf('='), 'mkdCode'
524 AssertEqual SyntaxOf('-'), 'mkdCode'
531 Execute (fenced code block with extended info strings):
532 AssertEqual SyntaxOf('a'), 'mkdCode'
534 # Code Blocks in pre and code tag
541 Execute (code block in pre tag):
542 AssertEqual SyntaxOf('a'), 'mkdCode'
549 Execute (code block in code tag):
550 AssertEqual SyntaxOf('a'), 'mkdCode'
557 Execute (not code block in escaped pre tag):
558 AssertNotEqual SyntaxOf('a'), 'mkdCode'
565 Execute (not code block in escaped code tag):
566 AssertNotEqual SyntaxOf('a'), 'mkdCode'
577 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
578 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
579 let g:vim_markdown_math=1
581 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
582 AssertNotEqual SyntaxOf('b')[0:2], 'tex'
583 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
584 AssertNotEqual SyntaxOf('d')[0:2], 'tex'
585 AssertNotEqual SyntaxOf('e')[0:2], 'tex'
586 AssertNotEqual SyntaxOf('f')[0:2], 'tex'
587 AssertEqual SyntaxOf('x')[0:2], 'tex'
588 AssertEqual SyntaxOf('y')[0:2], 'tex'
589 let g:vim_markdown_math=0
591 AssertNotEqual SyntaxOf('x')[0:2], 'tex'
592 AssertNotEqual SyntaxOf('y')[0:2], 'tex'
603 Execute (multiline math):
604 let g:vim_markdown_math=1
606 AssertNotEqual SyntaxOf('a')[0:2], 'tex'
607 AssertEqual SyntaxOf('b')[0:2], 'tex'
608 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
614 Execute (math tex highlighting):
615 let g:vim_markdown_math=0
617 AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
618 AssertNotEqual SyntaxOf('frac'), 'texStatement'
619 let g:vim_markdown_math=1
621 AssertEqual SyntaxOf('sqrt'), 'texStatement'
622 AssertEqual SyntaxOf('frac'), 'texStatement'
627 Execute (math ends with $):
628 let g:vim_markdown_math=1
630 AssertEqual SyntaxOf('a')[0:2], 'tex'
631 AssertEqual SyntaxOf('b')[0:2], 'tex'
632 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
637 Execute (math ends with $$):
638 let g:vim_markdown_math=1
640 AssertEqual SyntaxOf('a')[0:2], 'tex'
641 AssertEqual SyntaxOf('b')[0:2], 'tex'
642 AssertNotEqual SyntaxOf('c')[0:2], 'tex'
647 Execute (math conceal in $):
649 setlocal conceallevel=2
650 let g:vim_markdown_math=1
652 AssertEqual synconcealed(1, 1)[0], 1, '$'
653 AssertEqual synconcealed(1, 2)[0], 0
654 AssertEqual synconcealed(1, 3)[0], 0
655 AssertEqual synconcealed(1, 4)[0], 0
656 AssertEqual synconcealed(1, 5)[0], 1, '\le'
657 AssertEqual synconcealed(1, 6)[0], 1
658 AssertEqual synconcealed(1, 7)[0], 1
659 AssertEqual synconcealed(1, 8)[0], 0
660 AssertEqual synconcealed(1, 9)[0], 0
661 AssertEqual synconcealed(1, 10)[0], 0
662 AssertEqual synconcealed(1, 11)[0], 1, '$'
663 setlocal conceallevel=0
672 Execute (math conceal in $$):
674 setlocal conceallevel=2
675 let g:vim_markdown_math=1
677 AssertEqual synconcealed(1, 1)[0], 1, '$$'
678 AssertEqual synconcealed(2, 1)[0], 1, '\omega'
679 AssertEqual synconcealed(3, 1)[0], 0, '0'
680 AssertEqual synconcealed(3, 3)[0], 1, '\le'
681 AssertEqual synconcealed(3, 7)[0], 0, '1'
682 AssertEqual synconcealed(4, 1)[0], 1, '$$'
683 setlocal conceallevel=0
693 Execute (YAML frontmatter is controlled by the option):
694 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
695 let g:vim_markdown_frontmatter=1
697 AssertEqual SyntaxOf('a')[0:3], 'yaml'
698 let g:vim_markdown_frontmatter=0
700 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
708 Execute (YAML frontmatter only works if it's the first thing in the file):
709 let g:vim_markdown_frontmatter=1
711 AssertNotEqual SyntaxOf('a')[0:3], 'yaml'
720 Execute (rules are not mistaken by YAML frontmatter delimiters):
721 let g:vim_markdown_frontmatter=1
723 AssertEqual SyntaxAt(5, 1), 'mkdRule'
724 unlet g:vim_markdown_frontmatter
733 Execute (TOML frontmatter is controlled by the option):
735 AssertNotEqual SyntaxOf('b'), 'tomlString'
736 let g:vim_markdown_toml_frontmatter=1
738 AssertEqual SyntaxOf('b'), 'tomlString'
739 let g:vim_markdown_toml_frontmatter=0
741 AssertNotEqual SyntaxOf('b'), 'tomlString'
749 Execute (TOML frontmatter only works if it's the first thing in the file):
750 let g:vim_markdown_toml_frontmatter=1
752 AssertNotEqual SyntaxOf('b'), 'tomlString'
753 unlet g:vim_markdown_toml_frontmatter
762 Execute (JSON frontmatter is controlled by the option):
764 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
765 let g:vim_markdown_json_frontmatter=1
767 AssertEqual SyntaxOf('a'), 'jsonKeyword'
768 let g:vim_markdown_json_frontmatter=0
770 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
778 Execute (JSON frontmatter only works if it's the first thing in the file):
779 let g:vim_markdown_json_frontmatter=1
781 AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
782 unlet g:vim_markdown_json_frontmatter
793 Execute (header title starts with #):
794 AssertEqual SyntaxOf('a'), 'htmlH1'
795 AssertEqual SyntaxOf('b'), 'htmlH2'
810 ## h2 trailing hash ##
816 ### h3 trailing hash ###
824 Execute (atx headers):
825 AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
826 AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
827 AssertEqual SyntaxOf('# h1 2 spaces'), 'htmlH1'
828 AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
829 AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
830 AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
831 AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
832 AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
833 AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
834 AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
835 AssertEqual SyntaxOf('#### h4'), 'htmlH4'
836 AssertEqual SyntaxOf('##### h5'), 'htmlH5'
837 AssertEqual SyntaxOf('###### h6'), 'htmlH6'
846 Execute (atx headers relative positions):
847 AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
848 AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
849 AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
858 setex h1 single punctuation
861 setex h1 punctuation longer than header
862 ================================
864 Execute (setex headers):
865 AssertEqual SyntaxOf('setex h1'), 'htmlH1'
866 AssertEqual SyntaxOf('^========$'), 'htmlH1'
867 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
868 AssertEqual SyntaxOf('--------'), 'htmlH2'
869 AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
870 AssertEqual SyntaxOf('^=$'), 'htmlH1'
871 AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
872 AssertEqual SyntaxOf('^================================$'), 'htmlH1'
878 Execute (prevent list vs Setex confusion):
879 AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
880 AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
897 Execute (mixed atx and setex headers):
898 AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
899 AssertEqual SyntaxOf('==================='), 'htmlH1'
900 AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
901 AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
902 AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
903 AssertEqual SyntaxOf('setex h2'), 'htmlH2'
904 AssertEqual SyntaxOf('------------------'), 'htmlH2'
912 Execute (& and > are not marked as htmlError in lists):
913 AssertEqual SyntaxOf('-'), 'mkdListItem'
914 AssertEqual SyntaxOf('1.'), 'mkdListItem'
915 AssertNotEqual SyntaxOf('&'), 'htmlError'
916 AssertNotEqual SyntaxOf('>'), 'htmlError'
922 Execute (list after line break):
923 AssertEqual SyntaxOf('1'), 'mkdListItem'
924 AssertEqual SyntaxOf('2'), 'mkdListItem'
935 Execute (HTML tag in text):
936 AssertEqual SyntaxOf('p'), 'htmlTagName'
937 AssertEqual SyntaxOf('<p>'), 'htmlTag'
938 AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
939 AssertEqual SyntaxOf('span'), 'htmlTagName'
940 AssertEqual SyntaxOf('<span>'), 'htmlTag'
941 AssertEqual SyntaxOf('</span>'), 'htmlEndTag'