From e22429aba98ad67af19f59178b2eb868fb0af43b Mon Sep 17 00:00:00 2001 From: mattn Date: Tue, 9 Mar 2010 01:31:14 +0900 Subject: [PATCH] fixed haml filter. --- unittest.vim | 6 +++--- zencoding.vim | 36 +++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/unittest.vim b/unittest.vim index 1a2175d..2deb19b 100644 --- a/unittest.vim +++ b/unittest.vim @@ -295,10 +295,10 @@ finish 'category': 'haml', 'tests': [ { - 'name': "ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}+br", - 'query': "ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}+br", + 'name': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}", + 'query': "div>p+ul#foo>li.bar$[foo=bar][bar=baz]*3>{baz}", 'type': "haml", - 'result': "%ul#foo\n %li.bar1{ :foo => \"bar\", :bar => \"baz\" } baz\n %br/\n %li.bar2{ :foo => \"bar\", :bar => \"baz\" } baz\n %br/\n %li.bar3{ :foo => \"bar\", :bar => \"baz\" } baz\n %br/\n", + 'result': "%div\n %p<\n %ul#foo\n %li.bar1{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar2{ :foo => \"bar\", :bar => \"baz\" } baz\n %li.bar3{ :foo => \"bar\", :bar => \"baz\" } baz\n", }, ], }, diff --git a/zencoding.vim b/zencoding.vim index ca9859c..123d85f 100644 --- a/zencoding.vim +++ b/zencoding.vim @@ -1131,27 +1131,29 @@ function! s:zen_toString(...) let str .= '{' . tmp . ' }' endif if stridx(','.s:zen_settings['html'].empty_elements.',', ','.current.name.',') != -1 - let str .= "/\n" + let str .= "/" elseif stridx(','.s:zen_settings['html'].block_elements.',', ','.current.name.',') != -1 && len(current.child) == 0 let str .= '<' endif - endif - if len(current.value) > 0 - let lines = split(current.value[1:-2], "\n") - let str .= " " . lines[0] - for line in lines[1:] - let str .= " |\n" . line - endfor - endif - let inner = '' - for child in current.child - let inner .= s:zen_toString(child, type, inline, filter) - if len(child.name) == 0 - let inner .= "\n" + + let inner = '' + if len(current.child) == 1 && len(current.child[0].name) == 0 + "let str .= s:zen_toString(current.child[0], type, inline, filter) + let lines = split(current.child[0].value[1:-2], "\n") + let str .= " " . lines[0] + for line in lines[1:] + let str .= " |\n" . line + endfor + elseif len(current.child) > 0 + for child in current.child + let inner .= s:zen_toString(child, type, inline, filter) + endfor + let inner = substitute(inner, "\n", "\n ", 'g') + let inner = substitute(inner, "\n $", "", 'g') + let str .= "\n " . inner endif - endfor - let inner = substitute(inner, "\n", "\n ", 'g') - let str .= substitute(inner, " $", "", 'g') + endif + let str .= "\n" else if len(current.snippet) > 0 let tmp = substitute(current.snippet, '|', '${cursor}', 'g')