Files
emmet-vim/test/html.vimspec
Yasuhiro Matsumoto 809e4249d6 Skip visual/input tests in ex mode for CI compatibility
Tests requiring visual mode or input() cannot run in -e -s mode.
Skip them gracefully instead of failing.
2026-03-20 23:15:27 +09:00

488 lines
25 KiB
Plaintext

Describe html
Describe expand abbreviation
It expands div
Assert Equals(ExpandWord('div', 'html'), "<div></div>\n")
End
It expands div with id
Assert Equals(ExpandWord('div#wrapper', 'html'), "<div id=\"wrapper\"></div>\n")
End
It expands div with class
Assert Equals(ExpandWord('div.box', 'html'), "<div class=\"box\"></div>\n")
End
It expands a with title attribute
Assert Equals(ExpandWord('a[title=TITLE]', 'html'), "<a href=\"\" title=\"TITLE\"></a>\n")
End
It expands div with id and class
Assert Equals(ExpandWord('div#wrapper.box', 'html'), "<div id=\"wrapper\" class=\"box\"></div>\n")
End
It expands div with id and multiple classes
Assert Equals(ExpandWord('div#wrapper.box.current', 'html'), "<div id=\"wrapper\" class=\"box current\"></div>\n")
End
It expands div with id, classes and attributes
Assert Equals(ExpandWord('div#wrapper.box.current[title=TITLE rel]', 'html'), "<div id=\"wrapper\" class=\"box current\" title=\"TITLE\" rel=\"\"></div>\n")
End
It expands sibling divs
Assert Equals(ExpandWord('div#main+div#sub', 'html'), "<div id=\"main\"></div>\n<div id=\"sub\"></div>\n")
End
It expands child div
Assert Equals(ExpandWord('div#main>div#sub', 'html'), "<div id=\"main\">\n\t<div id=\"sub\"></div>\n</div>\n")
End
It expands html:xt complex
Assert Equals(ExpandWord('html:xt>div#header>div#logo+ul#nav>li.item-$*5>a', 'html'), "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\" />\n\t<title></title>\n</head>\n<body>\n\t<div id=\"header\">\n\t\t<div id=\"logo\"></div>\n\t\t<ul id=\"nav\">\n\t\t\t<li class=\"item-1\"><a href=\"\"></a></li>\n\t\t\t<li class=\"item-2\"><a href=\"\"></a></li>\n\t\t\t<li class=\"item-3\"><a href=\"\"></a></li>\n\t\t\t<li class=\"item-4\"><a href=\"\"></a></li>\n\t\t\t<li class=\"item-5\"><a href=\"\"></a></li>\n\t\t</ul>\n\t</div>\n\t\n</body>\n</html>")
End
It expands ol with li multiplier
Assert Equals(ExpandWord('ol>li*2', 'html'), "<ol>\n\t<li></li>\n\t<li></li>\n</ol>\n")
End
It expands a with default attribute
Assert Equals(ExpandWord('a', 'html'), "<a href=\"\"></a>\n")
End
It expands obj alias
Assert Equals(ExpandWord('obj', 'html'), "<object data=\"\" type=\"\"></object>\n")
End
It expands cc:ie6 complex
Assert Equals(ExpandWord('cc:ie6>p+blockquote#sample$.so.many.classes*2', 'html'), "<!--[if lte IE 6]>\n\t<p></p>\n\t<blockquote id=\"sample1\" class=\"so many classes\"></blockquote>\n\t<blockquote id=\"sample2\" class=\"so many classes\"></blockquote>\n\t\n<![endif]-->")
End
It expands html:4t complex
Assert Equals(ExpandWord('html:4t>div#wrapper>div#header+div#contents+div#footer', 'html'), "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html lang=\"en\">\n<head>\n\t<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">\n\t<title></title>\n</head>\n<body>\n\t<div id=\"wrapper\">\n\t\t<div id=\"header\"></div>\n\t\t<div id=\"contents\"></div>\n\t\t<div id=\"footer\"></div>\n\t</div>\n\t\n</body>\n</html>")
End
It expands a with href, class and id
Assert Equals(ExpandWord('a[href=http://www.google.com/].foo#hoge', 'html'), "<a id=\"hoge\" class=\"foo\" href=\"http://www.google.com/\"></a>\n")
End
It expands a with href and text
Assert Equals(ExpandWord('a[href=http://www.google.com/]{Google}', 'html'), "<a href=\"http://www.google.com/\">Google</a>\n")
End
It expands text only
Assert Equals(ExpandWord('{Emmet}', 'html'), 'Emmet')
End
It expands a+b
Assert Equals(ExpandWord('a+b', 'html'), "<a href=\"\"></a>\n<b></b>\n")
End
It climbs up with <
Assert Equals(ExpandWord('a>b>i<b', 'html'), "<a href=\"\"><b><i></i></b><b></b></a>\n")
End
It climbs up with ^
Assert Equals(ExpandWord('a>b>i^b', 'html'), "<a href=\"\"><b><i></i></b><b></b></a>\n")
End
It climbs up double with <<
Assert Equals(ExpandWord('a>b>i<<b', 'html'), "<a href=\"\"><b><i></i></b></a>\n<b></b>\n")
End
It climbs up double with ^^
Assert Equals(ExpandWord('a>b>i^^b', 'html'), "<a href=\"\"><b><i></i></b></a>\n<b></b>\n")
End
It climbs up blockquote with <<
Assert Equals(ExpandWord('blockquote>b>i<<b', 'html'), "<blockquote>\n\t<b><i></i></b>\n</blockquote>\n<b></b>\n")
End
It climbs up blockquote with ^^
Assert Equals(ExpandWord('blockquote>b>i^^b', 'html'), "<blockquote>\n\t<b><i></i></b>\n</blockquote>\n<b></b>\n")
End
It expands multiple attributes
Assert Equals(ExpandWord('a[href=foo][class=bar]', 'html'), "<a class=\"bar\" href=\"foo\"></a>\n")
End
It expands complex attrs with multiplier
Assert Equals(ExpandWord('a[a=b][b=c=d][e]{foo}*2', 'html'), "<a href=\"e\" a=\"b\" b=\"c=d\">foo</a>\n<a href=\"e\" a=\"b\" b=\"c=d\">foo</a>\n")
End
It expands attrs multiplier text after
Assert Equals(ExpandWord('a[a=b][b=c=d][e]*2{foo}', 'html'), "<a href=\"e\" a=\"b\" b=\"c=d\"></a>\n<a href=\"e\" a=\"b\" b=\"c=d\"></a>\nfoo")
End
It expands multiplier text tag
Assert Equals(ExpandWord('a*2{foo}a', 'html'), "<a href=\"\"></a>\n<a href=\"\"></a>\nfoo<a href=\"\"></a>\n")
End
It expands text multiplier child
Assert Equals(ExpandWord('a{foo}*2>b', 'html'), "<a href=\"\">foo<b></b></a>\n<a href=\"\">foo<b></b></a>\n")
End
It expands multiplier text child
Assert Equals(ExpandWord('a*2{foo}>b', 'html'), "<a href=\"\"></a>\n<a href=\"\"></a>\nfoo")
End
It expands table complex
Assert Equals(ExpandWord('table>tr>td.name#foo+td*3', 'html'), "<table>\n\t<tr>\n\t\t<td id=\"foo\" class=\"name\"></td>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n</table>\n")
End
It expands sibling ids
Assert Equals(ExpandWord('div#header+div#footer', 'html'), "<div id=\"header\"></div>\n<div id=\"footer\"></div>\n")
End
It expands implicit div sibling
Assert Equals(ExpandWord('#header+div#footer', 'html'), "<div id=\"header\"></div>\n<div id=\"footer\"></div>\n")
End
It climbs up with text using <
Assert Equals(ExpandWord('#header>ul>li<p{Footer}', 'html'), "<div id=\"header\">\n\t<ul>\n\t\t<li></li>\n\t</ul>\n\t<p>Footer</p>\n</div>\n")
End
It climbs up with text using ^
Assert Equals(ExpandWord('#header>ul>li^p{Footer}', 'html'), "<div id=\"header\">\n\t<ul>\n\t\t<li></li>\n\t</ul>\n\t<p>Footer</p>\n</div>\n")
End
It expands dollar padding
Assert Equals(ExpandWord('a#foo$$$*3', 'html'), "<a id=\"foo001\" href=\"\"></a>\n<a id=\"foo002\" href=\"\"></a>\n<a id=\"foo003\" href=\"\"></a>\n")
End
It expands ul expando
Assert Equals(ExpandWord('ul+', 'html'), "<ul>\n\t<li></li>\n</ul>\n")
End
It expands table expando
Assert Equals(ExpandWord('table+', 'html'), "<table>\n\t<tr>\n\t\t<td></td>\n\t</tr>\n</table>\n")
End
It climbs header to content with <
Assert Equals(ExpandWord('#header>li<#content', 'html'), "<div id=\"header\">\n\t<li></li>\n</div>\n<div id=\"content\"></div>\n")
End
It climbs header to content with ^
Assert Equals(ExpandWord('#header>li^#content', 'html'), "<div id=\"header\">\n\t<li></li>\n</div>\n<div id=\"content\"></div>\n")
End
It climbs group with <
Assert Equals(ExpandWord('(#header>li)<#content', 'html'), "<div id=\"header\">\n\t<li></li>\n</div>\n<div id=\"content\"></div>\n")
End
It climbs group with ^
Assert Equals(ExpandWord('(#header>li)^#content', 'html'), "<div id=\"header\">\n\t<li></li>\n</div>\n<div id=\"content\"></div>\n")
End
It climbs double to div with <<
Assert Equals(ExpandWord('a>b>i<<div', 'html'), "<a href=\"\"><b><i></i></b></a>\n<div></div>\n")
End
It climbs double to div with ^^
Assert Equals(ExpandWord('a>b>i^^div', 'html'), "<a href=\"\"><b><i></i></b></a>\n<div></div>\n")
End
It expands group siblings
Assert Equals(ExpandWord('(#header>h1)+#content+#footer', 'html'), "<div id=\"header\">\n\t<h1></h1>\n</div>\n<div id=\"content\"></div>\n<div id=\"footer\"></div>\n")
End
It expands complex nested groups
Assert Equals(ExpandWord('(#header>h1)+(#content>(#main>h2+div#entry$.section*5>(h3>a)+div>p*3+ul+)+(#utilities))+(#footer>address)', 'html'), "<div id=\"header\">\n\t<h1></h1>\n</div>\n<div id=\"content\">\n\t<div id=\"main\">\n\t\t<h2></h2>\n\t\t<div id=\"entry1\" class=\"section\">\n\t\t\t<h3><a href=\"\"></a></h3>\n\t\t\t<div>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"entry2\" class=\"section\">\n\t\t\t<h3><a href=\"\"></a></h3>\n\t\t\t<div>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"entry3\" class=\"section\">\n\t\t\t<h3><a href=\"\"></a></h3>\n\t\t\t<div>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"entry4\" class=\"section\">\n\t\t\t<h3><a href=\"\"></a></h3>\n\t\t\t<div>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t\t<div id=\"entry5\" class=\"section\">\n\t\t\t<h3><a href=\"\"></a></h3>\n\t\t\t<div>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<p></p>\n\t\t\t\t<ul>\n\t\t\t\t\t<li></li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div id=\"utilities\"></div>\n</div>\n<div id=\"footer\">\n\t<address></address>\n</div>\n")
End
It expands nested multiplier groups
Assert Equals(ExpandWord('(div>(ul*2)*2)+(#utilities)', 'html'), "<div>\n\t<ul></ul>\n\t<ul></ul>\n\t<ul></ul>\n\t<ul></ul>\n</div>\n<div id=\"utilities\"></div>\n")
End
It expands table multiplier group
Assert Equals(ExpandWord('table>(tr>td*3)*4', 'html'), "<table>\n\t<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n\t<tr>\n\t\t<td></td>\n\t\t<td></td>\n\t\t<td></td>\n\t</tr>\n</table>\n")
End
It expands deep nested multiplier groups
Assert Equals(ExpandWord('(((a#foo+a#bar)*2)*3)', 'html'), "<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n<a id=\"foo\" href=\"\"></a>\n<a id=\"bar\" href=\"\"></a>\n")
End
It expands multiplier with child
Assert Equals(ExpandWord('div#box$*3>h3+p*2', 'html'), "<div id=\"box1\">\n\t<h3></h3>\n\t<p></p>\n\t<p></p>\n</div>\n<div id=\"box2\">\n\t<h3></h3>\n\t<p></p>\n\t<p></p>\n</div>\n<div id=\"box3\">\n\t<h3></h3>\n\t<p></p>\n\t<p></p>\n</div>\n")
End
It expands dollar multi class
Assert Equals(ExpandWord('div#box.foo$$$.bar$$$*3', 'html'), "<div id=\"box\" class=\"foo001 bar001\"></div>\n<div id=\"box\" class=\"foo002 bar002\"></div>\n<div id=\"box\" class=\"foo003 bar003\"></div>\n")
End
It applies escape filter
Assert Equals(ExpandWord('div#box$*3>h3+p.bar*2|e', 'html'), "&lt;div id=\"box1\"&gt;\n\t&lt;h3&gt;&lt;/h3&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n&lt;/div&gt;\n&lt;div id=\"box2\"&gt;\n\t&lt;h3&gt;&lt;/h3&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n&lt;/div&gt;\n&lt;div id=\"box3\"&gt;\n\t&lt;h3&gt;&lt;/h3&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n\t&lt;p class=\"bar\"&gt;&lt;/p&gt;\n&lt;/div&gt;\n")
End
It applies comment filter
Assert Equals(ExpandWord('div>div#page>p.title+p|c', 'html'), "<div>\n\t<!-- #page -->\n\t<div id=\"page\">\n\t\t<!-- .title -->\n\t\t<p class=\"title\"></p>\n\t\t<!-- /.title -->\n\t\t<p></p>\n\t</div>\n\t<!-- /#page -->\n</div>\n")
End
It applies single line filter
Assert Equals(ExpandWord('kbd*2|s', 'html'), '<kbd></kbd><kbd></kbd>')
End
It expands link:css
Assert Equals(ExpandWord('link:css', 'html'), "<link rel=\"stylesheet\" href=\"style.css\" media=\"all\">\n")
End
It expands attribute with quote
Assert Equals(ExpandWord("a[title=\"Hello', world\" rel]", 'html'), "<a href=\"\" title=\"Hello', world\" rel=\"\"></a>\n")
End
It expands child with text
Assert Equals(ExpandWord('div>a#foo{bar}', 'html'), "<div><a id=\"foo\" href=\"\">bar</a></div>\n")
End
It expands class with text
Assert Equals(ExpandWord('.content{Hello!}', 'html'), "<div class=\"content\">Hello!</div>\n")
End
It expands logo group siblings
Assert Equals(ExpandWord('div.logo+(div#navigation)+(div#links)', 'html'), "<div class=\"logo\"></div>\n<div id=\"navigation\"></div>\n<div id=\"links\"></div>\n")
End
It expands mixed text and tags
Assert Equals(ExpandWord('h1{header}+{Text}+a[href=http://link.org]{linktext}+{again some text}+a[href=http://anoterlink.org]{click me!}+{some final text}', 'html'), "<h1>header</h1>\nText<a href=\"http://link.org\">linktext</a>\nagain some text<a href=\"http://anoterlink.org\">click me!</a>\nsome final text")
End
It expands ampersand text
Assert Equals(ExpandWord('a{&}+div{&&}', 'html'), "<a href=\"\">&</a>\n<div>&&</div>\n")
End
It expands span after tag in buffer
let res = ExpandInBuffer('<foo/>span$$$$\<c-y>,$$$$', 'html', '<foo/><span></span>')
Assert Equals(res, '<foo/><span></span>')
End
It expands span after text in buffer
let res = ExpandInBuffer('foo span$$$$\<c-y>,$$$$', 'html', 'foo <span></span>')
Assert Equals(res, 'foo <span></span>')
End
It expands span between text in buffer
let res = ExpandInBuffer('foo span$$$$\<c-y>,$$$$ bar', 'html', 'foo <span></span> bar')
Assert Equals(res, 'foo <span></span> bar')
End
It wraps visual word (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("foo $$$$\\<c-o>ve\\<c-y>,p\\<cr>$$$$bar baz", 'html', 'foo <p>bar</p> baz')
Assert Equals(res, 'foo <p>bar</p> baz')
End
It wraps visual multi word (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("foo $$$$\\<c-o>vee\\<c-y>,p\\<cr>$$$$bar baz", 'html', 'foo <p>bar baz</p>')
Assert Equals(res, 'foo <p>bar baz</p>')
End
It expands complex nested in buffer
let res = ExpandInBuffer("f div.boxes>article.box2>header>(hgroup>h2{aaa}+h3{bbb})+p{ccc}$$$$", 'html', "f <div class=\"boxes\">\n\t<article class=\"box2\">\n\t\t<header>\n\t\t\t<hgroup>\n\t\t\t\t<h2>aaa</h2>\n\t\t\t\t<h3>bbb</h3>\n\t\t\t</hgroup>\n\t\t\t<p>ccc</p>\n\t\t</header>\n\t</article>\n</div>")
Assert Equals(res, "f <div class=\"boxes\">\n\t<article class=\"box2\">\n\t\t<header>\n\t\t\t<hgroup>\n\t\t\t\t<h2>aaa</h2>\n\t\t\t\t<h3>bbb</h3>\n\t\t\t</hgroup>\n\t\t\t<p>ccc</p>\n\t\t</header>\n\t</article>\n</div>")
End
It expands complex boxes
Assert Equals(ExpandWord("div.boxes>(div.box2>section>h2{a}+p{b})+(div.box1>section>h2{c}+p{d}+p{e}+(bq>h2{f}+h3{g})+p{h})", 'html'), "<div class=\"boxes\">\n\t<div class=\"box2\">\n\t\t<section>\n\t\t\t<h2>a</h2>\n\t\t\t<p>b</p>\n\t\t</section>\n\t</div>\n\t<div class=\"box1\">\n\t\t<section>\n\t\t\t<h2>c</h2>\n\t\t\t<p>d</p>\n\t\t\t<p>e</p>\n\t\t\t<blockquote>\n\t\t\t\t<h2>f</h2>\n\t\t\t\t<h3>g</h3>\n\t\t\t</blockquote>\n\t\t\t<p>h</p>\n\t\t</section>\n\t</div>\n</div>\n")
End
It expands label input group
Assert Equals(ExpandWord('(div>(label+input))+div', 'html'), "<div>\n\t<label for=\"\"></label>\n\t<input type=\"\">\n</div>\n<div></div>\n")
End
It wraps visual lines with multiplier (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,ul>li>span*>a\\<cr>$$$$", 'html', "<ul>\n\t<li>\n\t\t<span><a href=\"\">test1</a></span>\n\t\t<span><a href=\"\">test2</a></span>\n\t\t<span><a href=\"\">test3</a></span>\n\t</li>\n</ul>")
Assert Equals(res, "<ul>\n\t<li>\n\t\t<span><a href=\"\">test1</a></span>\n\t\t<span><a href=\"\">test2</a></span>\n\t\t<span><a href=\"\">test3</a></span>\n\t</li>\n</ul>")
End
It wraps visual lines with input (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,input[type=input value=$#]*\\<cr>$$$$", 'html', "<input type=\"input\" value=\"test1\">\n<input type=\"input\" value=\"test2\">\n<input type=\"input\" value=\"test3\">")
Assert Equals(res, "<input type=\"input\" value=\"test1\">\n<input type=\"input\" value=\"test2\">\n<input type=\"input\" value=\"test3\">")
End
It wraps visual lines with div id (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("test1\ntest2\ntest3$$$$\\<esc>ggVG\\<c-y>,div[id=$#]*\\<cr>$$$$", 'html', "<div id=\"test1\"></div>\n<div id=\"test2\"></div>\n<div id=\"test3\"></div>")
Assert Equals(res, "<div id=\"test1\"></div>\n<div id=\"test2\"></div>\n<div id=\"test3\"></div>")
End
It expands nested id dollar
Assert Equals(ExpandWord('div#id-$*5>div#id2-$', 'html'), "<div id=\"id-1\">\n\t<div id=\"id2-1\"></div>\n</div>\n<div id=\"id-2\">\n\t<div id=\"id2-2\"></div>\n</div>\n<div id=\"id-3\">\n\t<div id=\"id2-3\"></div>\n</div>\n<div id=\"id-4\">\n\t<div id=\"id2-4\"></div>\n</div>\n<div id=\"id-5\">\n\t<div id=\"id2-5\"></div>\n</div>\n")
End
It expands implicit child attr
Assert Equals(ExpandWord('.foo>[bar=2]>.baz', 'html'), "<div class=\"foo\">\n\t<div bar=\"2\">\n\t\t<div class=\"baz\"></div>\n\t</div>\n</div>\n")
End
It expands text dollar
Assert Equals(ExpandWord('{test case $ }*3', 'html'), 'test case 1 test case 2 test case 3 ')
End
It expands text dollar newline
Assert Equals(ExpandWord('{test case $${nr}}*3', 'html'), "test case 1\ntest case 2\ntest case 3\n")
End
It expands text escaped dollar
Assert Equals(ExpandWord('{test case \$ }*3', 'html'), 'test case $ test case $ test case $ ')
End
It expands text dollar padding
Assert Equals(ExpandWord('{test case $$$ }*3', 'html'), 'test case 001 test case 002 test case 003 ')
End
It expands title dollar hash
Assert Equals(ExpandWord('a[title=$#]{foo}', 'html'), "<a href=\"\" title=\"foo\">foo</a>\n")
End
It expands span item dollar text
Assert Equals(ExpandWord('span.item$*2>{item $}', 'html'), "<span class=\"item1\">item 1</span>\n<span class=\"item2\">item 2</span>\n")
End
It wraps visual indented block (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("\t<div class=\"footer_nav\">\n\t\t<a href=\"#\">nav link</a>\n\t</div>$$$$\\<esc>ggVG\\<c-y>,div\\<cr>$$$$", 'html', "\t<div>\n\t\t<div class=\"footer_nav\">\n\t\t\t<a href=\"#\">nav link</a>\n\t\t</div>\n\t</div>")
Assert Equals(res, "\t<div>\n\t\t<div class=\"footer_nav\">\n\t\t\t<a href=\"#\">nav link</a>\n\t\t</div>\n\t</div>")
End
It expands inside tag
let res = ExpandInBuffer('<small>a$$$$</small>', 'html', '<small><a href=""></a></small>')
Assert Equals(res, '<small><a href=""></a></small>')
End
It applies BEM filter
Assert Equals(ExpandWord('form.search-form._wide>input.-query-string+input:s.-btn_large|bem', 'html'), "<form class=\"search-form search-form_wide\" action=\"\">\n\t<input class=\"search-form__query-string\" type=\"\">\n\t<input class=\"search-form__btn search-form__btn_large\" type=\"submit\" value=\"\">\n</form>\n")
End
It expands fieldset legend label
Assert Equals(ExpandWord('form>fieldset>legend+(label>input[type="checkbox"])*3', 'html'), "<form action=\"\">\n\t<fieldset>\n\t\t<legend></legend>\n\t\t<label for=\"\"><input type=\"checkbox\"></label>\n\t\t<label for=\"\"><input type=\"checkbox\"></label>\n\t\t<label for=\"\"><input type=\"checkbox\"></label>\n\t</fieldset>\n</form>\n")
End
End
Describe split join tag
It joins tag
let res = ExpandInBuffer("<div>\n\t<span>$$$$\\<c-y>j$$$$</span>\n</div>", 'html', "<div>\n\t<span />\n</div>")
Assert Equals(res, "<div>\n\t<span />\n</div>")
End
It splits tag
let res = ExpandInBuffer("<div>\n\t<span$$$$\\<c-y>j$$$$/>\n</div>", 'html', "<div>\n\t<span></span>\n</div>")
Assert Equals(res, "<div>\n\t<span></span>\n</div>")
End
It joins with complex attribute
let res = ExpandInBuffer("<div onclick=\"javascript:console.log(Date.now() % 1000 > 500)\">test$$$$\\<c-y>j$$$$/>\n</div>", 'html', '<div onclick="javascript:console.log(Date.now() % 1000 > 500)" />')
Assert Equals(res, '<div onclick="javascript:console.log(Date.now() % 1000 > 500)" />')
End
It splits custom tag
let res = ExpandInBuffer("<div>\n\t<some-tag$$$$\\<c-y>j$$$$/>\n</div>", 'html', "<div>\n\t<some-tag></some-tag>\n</div>")
Assert Equals(res, "<div>\n\t<some-tag></some-tag>\n</div>")
End
End
Describe toggle comment
It adds comment
let res = ExpandInBuffer("<div>\n\t<span>$$$$\\<c-y>/$$$$</span>\n</div>", 'html', "<div>\n\t<!-- <span></span> -->\n</div>")
Assert Equals(res, "<div>\n\t<!-- <span></span> -->\n</div>")
End
It removes comment
let res = ExpandInBuffer("<div>\n\t<!-- <span>$$$$\\<c-y>/$$$$</span> -->\n</div>", 'html', "<div>\n\t<span></span>\n</div>")
Assert Equals(res, "<div>\n\t<span></span>\n</div>")
End
End
Describe image size
It gets remote png size
let res = ExpandInBuffer("img[src=http://mattn.kaoriya.net/images/logo.png]$$$$\\<c-y>,\\<c-y>i$$$$", 'html', '<img src="http://mattn.kaoriya.net/images/logo.png" alt="" width="113" height="113">')
Assert Equals(res, '<img src="http://mattn.kaoriya.net/images/logo.png" alt="" width="113" height="113">')
End
It handles missing local image
let res = ExpandInBuffer("img[src=/logo.png]$$$$\\<c-y>,\\<c-y>i$$$$", 'html', '<img src="/logo.png" alt="">')
Assert Equals(res, '<img src="/logo.png" alt="">')
End
It overwrites existing size
let res = ExpandInBuffer("img[src=http://mattn.kaoriya.net/images/logo.png width=foo height=bar]$$$$\\<c-y>,\\<c-y>i$$$$", 'html', '<img src="http://mattn.kaoriya.net/images/logo.png" alt="" width="113" height="113">')
Assert Equals(res, '<img src="http://mattn.kaoriya.net/images/logo.png" alt="" width="113" height="113">')
End
End
Describe move next prev
It moves to third attribute
let res = ExpandInBuffer("foo+bar+baz[dankogai=\"\"]$$$$\\<c-y>,\\<esc>gg0\\<c-y>n\\<c-y>n\\<c-y>n\\<esc>Byw:%d _\\<cr>p$$$$", 'html', 'dankogai')
Assert Equals(res, 'dankogai')
End
End
Describe contains dash in attributes
It expands foo-bar attribute
Assert Equals(ExpandWord('div[foo-bar="baz"]', 'html'), "<div foo-bar=\"baz\"></div>\n")
End
End
Describe default attributes
It expands a href shorthand
Assert Equals(ExpandWord('p.title>a[/hoge/]', 'html'), "<p class=\"title\"><a href=\"/hoge/\"></a></p>\n")
End
It expands script src
Assert Equals(ExpandWord('script[jquery.js]', 'html'), "<script src=\"jquery.js\"></script>\n")
End
End
Describe multiple group
It expands outer inner
Assert Equals(ExpandWord('.outer$*3>.inner$*2', 'html'), "<div class=\"outer1\">\n\t<div class=\"inner1\"></div>\n\t<div class=\"inner2\"></div>\n</div>\n<div class=\"outer2\">\n\t<div class=\"inner1\"></div>\n\t<div class=\"inner2\"></div>\n</div>\n<div class=\"outer3\">\n\t<div class=\"inner1\"></div>\n\t<div class=\"inner2\"></div>\n</div>\n")
End
End
Describe group itemno
It expands dl dt dd
Assert Equals(ExpandWord('dl>(dt{$}+dd)*3', 'html'), "<dl>\n\t<dt>1</dt>\n\t<dd></dd>\n\t<dt>2</dt>\n\t<dd></dd>\n\t<dt>3</dt>\n\t<dd></dd>\n</dl>\n")
End
It expands nested multiplier
Assert Equals(ExpandWord('(div[attr=$]*3)*3', 'html'), "<div attr=\"1\"></div>\n<div attr=\"2\"></div>\n<div attr=\"3\"></div>\n<div attr=\"1\"></div>\n<div attr=\"2\"></div>\n<div attr=\"3\"></div>\n<div attr=\"1\"></div>\n<div attr=\"2\"></div>\n<div attr=\"3\"></div>\n")
End
End
Describe update tag
It adds class (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("<h$$$$\\<c-y>u.global\\<cr>$$$$3></h3>", 'html', '<h3 class="global"></h3>')
Assert Equals(res, '<h3 class="global"></h3>')
End
It adds class preserving attribute (skip: ex mode)
if mode() ==# 'c'
Skip not supported in ex mode
endif
let res = ExpandInBuffer("<button$$$$\\<c-y>u.btn\\<cr>$$$$ disabled></button>", 'html', '<button class="btn" disabled></button>')
Assert Equals(res, '<button class="btn" disabled></button>')
End
End
Describe base value
It starts from zero
Assert Equals(ExpandWord('ul>li#id$@0*3', 'html'), "<ul>\n\t<li id=\"id0\"></li>\n\t<li id=\"id1\"></li>\n\t<li id=\"id2\"></li>\n</ul>\n")
End
End
End