diff --git a/autoload/zencoding/lang/haml.vim b/autoload/zencoding/lang/haml.vim index be421c1..be8de24 100644 --- a/autoload/zencoding/lang/haml.vim +++ b/autoload/zencoding/lang/haml.vim @@ -26,7 +26,7 @@ function! zencoding#lang#haml#toString(settings, current, type, inline, filters, if len(current.name) > 0 let str .= '%' . current_name let tmp = '' - for attr in current.attrs_order + for attr in zencoding#util#unique(current.attrs_order) if !has_key(current.attr, attr) continue endif diff --git a/autoload/zencoding/lang/html.vim b/autoload/zencoding/lang/html.vim index d7a1e63..12980cc 100644 --- a/autoload/zencoding/lang/html.vim +++ b/autoload/zencoding/lang/html.vim @@ -322,7 +322,7 @@ function! zencoding#lang#html#toString(settings, current, type, inline, filters, endif if len(current_name) > 0 let str .= '<' . current_name - for attr in current.attrs_order + for attr in zencoding#util#unique(current.attrs_order) if !has_key(current.attr, attr) continue endif diff --git a/autoload/zencoding/lang/slim.vim b/autoload/zencoding/lang/slim.vim index 15bc968..16597c4 100644 --- a/autoload/zencoding/lang/slim.vim +++ b/autoload/zencoding/lang/slim.vim @@ -25,7 +25,7 @@ function! zencoding#lang#slim#toString(settings, current, type, inline, filters, endif if len(current.name) > 0 let str .= current_name - for attr in current.attrs_order + for attr in zencoding#util#unique(current.attrs_order) if !has_key(current.attr, attr) continue endif diff --git a/autoload/zencoding/util.vim b/autoload/zencoding/util.vim index 5a028c9..ebc3a4b 100644 --- a/autoload/zencoding/util.vim +++ b/autoload/zencoding/util.vim @@ -247,3 +247,15 @@ function! zencoding#util#isImageMagickInstalled() endif return executable('identify') endfunction + +function! zencoding#util#unique(arr) + let m = {} + let r = [] + for i in a:arr + if !has_key(m, i) + let m[i] = 1 + call add(r, i) + endif + endfor + return r +endfunction