@leejim/wxml-parser
Version:
微信小程序WXML Parser
60 lines (54 loc) • 1.3 kB
JavaScript
let Parser = require('../index');
let rawWXML = `
<wxs src="./index.wxs" />
<wxs module="lodash">
var foo = "'hello world' from tools.wxs";
var bar = function (d) {
return d;
}
module.exports = {
FOO: foo,
bar: bar,
};
module.exports.msg = "some msg";
</wxs>`
let newWXML = ''
const parseHanlder = {
onopentag(tagname, attrs, isSelfClosing) {
newWXML += `<${tagname}${attrs.map((item) => typeof item == 'string' ? ` ${item}`: ` ${item.key}="${item.value}"`)}${isSelfClosing ? ' /' : ''}>`
},
onclosetag(tagname) {
newWXML += `</${tagname}>`
},
ontext(text) {
newWXML += text;
},
onwxs(wxs) {
newWXML += wxs;
}
};
test('parse wxs', () => {
newWXML = ''
let parser = new Parser(parseHanlder);
parser.write(rawWXML)
expect(newWXML).toBe(rawWXML)
})
test('parse complex wxs', () => {
newWXML = ''
let rawWXML = `
<wxs src="./index.wxs" />
<wxs module="lodash">
var foo = "'hello world' from tools.wxs";
var bar = function (a, b) {
return a < b ? a : b;
}
module.exports = {
FOO: foo,
bar: bar,
};
module.exports.msg = "some msg";
</wxs>`
let parser = new Parser(parseHanlder);
parser.write(rawWXML)
expect(newWXML).toBe(rawWXML)
})