link
This commit is contained in:
69
node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js
generated
vendored
Normal file
69
node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
export default class BaseOutputBuilder{
|
||||
constructor(){
|
||||
// this.attributes = {};
|
||||
}
|
||||
|
||||
addAttribute(name, value){
|
||||
if(this.options.onAttribute){
|
||||
//TODO: better to pass tag path
|
||||
const v = this.options.onAttribute(name, value, this.tagName);
|
||||
if(v) this.attributes[v.name] = v.value;
|
||||
}else{
|
||||
name = this.options.attributes.prefix + name + this.options.attributes.suffix;
|
||||
this.attributes[name] = this.parseValue(value, this.options.attributes.valueParsers);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* parse value by chain of parsers
|
||||
* @param {string} val
|
||||
* @returns {any} parsed value if matching parser found
|
||||
*/
|
||||
parseValue = function(val, valParsers){
|
||||
for (let i = 0; i < valParsers.length; i++) {
|
||||
let valParser = valParsers[i];
|
||||
if(typeof valParser === "string"){
|
||||
valParser = this.registeredParsers[valParser];
|
||||
}
|
||||
if(valParser){
|
||||
val = valParser.parse(val);
|
||||
}
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
/**
|
||||
* To add a nested empty tag.
|
||||
* @param {string} key
|
||||
* @param {any} val
|
||||
*/
|
||||
_addChild(key, val){}
|
||||
|
||||
/**
|
||||
* skip the comment if property is not set
|
||||
*/
|
||||
addComment(text){
|
||||
if(this.options.nameFor.comment)
|
||||
this._addChild(this.options.nameFor.comment, text);
|
||||
}
|
||||
|
||||
//store CDATA separately if property is set
|
||||
//otherwise add to tag's value
|
||||
addCdata(text){
|
||||
if (this.options.nameFor.cdata) {
|
||||
this._addChild(this.options.nameFor.cdata, text);
|
||||
} else {
|
||||
this.addRawValue(text || "");
|
||||
}
|
||||
}
|
||||
|
||||
addRawValue = text => this.addValue(text);
|
||||
|
||||
addDeclaration(){
|
||||
if(!this.options.declaration){
|
||||
}else{
|
||||
this.addPi("?xml");
|
||||
}
|
||||
this.attributes = {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user