parseNodeBegin method
dynamic
parseNodeBegin(
- dynamic line,
- dynamic property
Implementation
parseNodeBegin(line, property) {
var nodeName = property[1]
.trim()
.replaceFirst(RegExp(r'^"'), '')
.replace(RegExp(r'"$'), '');
var nodeAttrs = property[2].split(',').map((attr) {
return attr
.trim()
.replaceFirst(RegExp(r'^"'), '')
.replace(RegExp(r'"$'), '');
}).toList();
Map<String, dynamic> node = {"name": nodeName};
var attrs = this.parseNodeAttr(nodeAttrs);
Map currentNode = this.getCurrentNode();
// a top node
if (this.currentIndent == 0) {
this.allNodes.add(nodeName, node);
} else {
// a subnode
// if the subnode already exists, append it
if (currentNode.keys.contains(nodeName)) {
// special case Pose needs PoseNodes as an array
if (nodeName == 'PoseNode') {
currentNode["PoseNode"].add(node);
} else if (currentNode[nodeName].id != null) {
currentNode[nodeName] = {};
currentNode[nodeName][currentNode[nodeName].id] =
currentNode[nodeName];
}
if (attrs.id != '') currentNode[nodeName][attrs.id] = node;
} else if (attrs.id is num) {
currentNode[nodeName] = {};
currentNode[nodeName][attrs.id] = node;
} else if (nodeName != 'Properties70') {
if (nodeName == 'PoseNode')
currentNode[nodeName] = [node];
else
currentNode[nodeName] = node;
}
}
if (attrs.id is num) node["id"] = attrs.id;
if (attrs.name != '') node["attrName"] = attrs.name;
if (attrs.type != '') node["attrType"] = attrs.type;
this.pushStack(node);
}