Added list to keep order of added attributes

Preloads this list with 'id' and 'class' to always sort those first
As attributes are parsed, append the names to the list.
Change toString function to loop over attribute list instead of keys.
This commit is contained in:
Michael Grubb
2013-04-06 00:04:37 -05:00
parent 6a84397073
commit 594ca8e767

View File

@@ -92,7 +92,7 @@ function! zencoding#lang#html#parseIntoTree(abbr, type)
if multiplier <= 0 | let multiplier = 1 | endif
" make default node
let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0 }
let current = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'] }
let current.name = tag_name
let current.important = important
@@ -182,6 +182,7 @@ function! zencoding#lang#html#parseIntoTree(abbr, type)
let val = val[1:-2]
endif
let current.attr[key] = val
let current.attrs_order = current.attrs_order + [key]
let atts = atts[stridx(atts, amat) + len(amat):]
endwhile
endif
@@ -317,7 +318,8 @@ function! zencoding#lang#html#toString(settings, current, type, inline, filters,
endif
if len(current_name) > 0
let str .= '<' . current_name
for attr in keys(current.attr)
for attr in current.attrs_order
if (has_key(current.attr, attr))
let val = current.attr[attr]
if dollar_expr
while val =~ '\$\([^#{]\|$\)'
@@ -330,6 +332,7 @@ function! zencoding#lang#html#toString(settings, current, type, inline, filters,
if attr == 'id' | let comment .= '#' . val | endif
if attr == 'class' | let comment .= '.' . val | endif
endif
endif
endfor
if len(comment) > 0
let str = "<!-- " . comment . " -->\n" . str