我正在构建一个工具,它将解析伪元素内容并返回变换器对象。
当前代码是这样的
ContentTransformerFactory.contentValueExpression = /content\s*:\s*(.*?);/gi;
ContentTransformerFactory.getTransformer = function (nodeContentAndStyle)
{
var match = nodeContentAndStyle.match(ContentTransformerFactory.contentValueExpression);
if(match.length > 1)
{
throw "There should not be more than one match, if that so then content is wrong.";
}
console.log("Matched content "+match[0]);
//Find the corresponding transformer for the content.
return ContentTransformerFactory.findTransformer()
}
ContentTransformerFactory.findTransformer = function (contentString) {
// If string is null or empty (excluding spaces) then return null.
if (contentString == null || "" === contentString ){
return null;
}
}
现在我想要 1个内容:“(”counter(item,decimal)“)”--->然后是CounterTransformerContent。
2内容:“”attr(数据)“”--->然后是AttributeTransformerContent。
3内容:“”引号“”--->然后是QuotestTransformerContent。
4 content:“”Counter(item,decimal)attr(href)“”--->然后是CompositeTransformerContent。
为了实现上述情况,我使用了contentString.indexOf(Counter)contentString.indexOf(attr)...但是很多if else都被添加到那里。
有人可以建议我更好地解析内容并创建适当的变换器。 感谢。