test: parseAttr
This commit is contained in:
@@ -117,7 +117,7 @@ function parseAttr (html, onAttr) {
|
||||
'user strict';
|
||||
|
||||
var lastPos = 0; // 当前位置
|
||||
var retHtml = ''; // 待返回的HTML
|
||||
var retAttrs = []; // 待返回的属性列表
|
||||
var tmpName = false; // 临时属性名称
|
||||
var len = html.length; // HTML代码长度
|
||||
|
||||
@@ -125,7 +125,7 @@ function parseAttr (html, onAttr) {
|
||||
name = name.trim();
|
||||
name = name.replace(REGEXP_ATTR_NAME, '').toLowerCase();
|
||||
if (name.length < 1) return;
|
||||
retHtml += onAttr(name, value);
|
||||
retAttrs.push(onAttr(name, value || ''));
|
||||
};
|
||||
|
||||
// 逐个分析字符
|
||||
@@ -172,7 +172,7 @@ function parseAttr (html, onAttr) {
|
||||
}
|
||||
}
|
||||
|
||||
return retHtml.trim();
|
||||
return retAttrs.join(' ').trim();
|
||||
}
|
||||
|
||||
exports.parseTag = parseTag;
|
||||
|
||||
@@ -46,11 +46,52 @@ describe('test HTML parser', function () {
|
||||
throw new Error();
|
||||
}
|
||||
}, escapeHtml);
|
||||
console.log(html);
|
||||
assert.equal(html, 'hello[link]www[/link]ccc[B]');
|
||||
});
|
||||
|
||||
it('#parseAttr', function () {
|
||||
|
||||
var i = 0;
|
||||
function attr (n, v) {
|
||||
if (v) {
|
||||
return n + '="' + v.replace(/"/g, '"e;') + '"';
|
||||
} else {
|
||||
return n;
|
||||
}
|
||||
}
|
||||
var html = parseAttr('href="#"attr1=b attr2=c attr3 attr4=\'value4"\'attr5/', function (name, value) {
|
||||
i++;
|
||||
console.log(arguments);
|
||||
if (i === 1) {
|
||||
assert.equal(name, 'href');
|
||||
assert.equal(value, '#');
|
||||
return attr(name, value);
|
||||
} else if (i === 2) {
|
||||
assert.equal(name, 'attr1');
|
||||
assert.equal(value, 'b');
|
||||
return attr(name, value);
|
||||
} else if (i === 3) {
|
||||
assert.equal(name, 'attr2');
|
||||
assert.equal(value, 'c');
|
||||
return attr(name, value);
|
||||
} else if (i === 4) {
|
||||
assert.equal(name, 'attr3');
|
||||
assert.equal(value, '');
|
||||
return attr(name, value);
|
||||
} else if (i === 5) {
|
||||
assert.equal(name, 'attr4');
|
||||
assert.equal(value, 'value4"');
|
||||
return attr(name, value);
|
||||
} else if (i === 6) {
|
||||
assert.equal(name, 'attr5');
|
||||
assert.equal(value, '');
|
||||
return attr(name, value);
|
||||
} else {
|
||||
throw new Error();
|
||||
}
|
||||
});
|
||||
console.log(html);
|
||||
assert.equal(html, 'href="#" attr1="b" attr2="c" attr3 attr4="value4"e;" attr5');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user