parseNodeProperty method
dynamic
parseNodeProperty(
- dynamic line,
- dynamic property,
- String contentLine
)
Implementation
parseNodeProperty( line, property, String contentLine ) {
var _regExp = RegExp(r'^"');
var _regExp2 = RegExp(r'"$');
var propName = property[ 1 ].replaceFirst( _regExp, '' ).replaceFirst( _regExp2, '' ).trim();
var propValue = property[ 2 ].replaceFirst( _regExp, '' ).replaceFirst( _regExp2, '' ).trim();
// for special case: base64 image data follows "Content: ," line
// Content: ,
// "/9j/4RDaRXhpZgAATU0A..."
if ( propName == 'Content' && propValue == ',' ) {
propValue = contentLine.replaceAll( RegExp(r'"'), '' ).replaceFirst( RegExp(r',$'), '' ).trim();
}
var currentNode = this.getCurrentNode();
var parentName = currentNode.name;
if ( parentName == 'Properties70' ) {
this.parseNodeSpecialProperty( line, propName, propValue );
return;
}
// Connections
if ( propName == 'C' ) {
var connProps = propValue.split( ',' ).slice( 1 );
var from = int.parse( connProps[ 0 ] );
var to = int.parse( connProps[ 1 ] );
var rest = propValue.split( ',' ).slice( 3 );
rest = rest.map( ( elem ) {
return elem.trim().replace( RegExp(r'^"'), '' );
} ).toList();
propName = 'connections';
propValue = [ from, to ];
append( propValue, rest );
if ( currentNode[ propName ] == null ) {
currentNode[ propName ] = [];
}
}
// Node
if ( propName == 'Node' ) currentNode.id = propValue;
// connections
if ( currentNode.keys.contains( propName ) && currentNode[ propName ] is List ) {
currentNode[ propName ].add( propValue );
} else {
if ( propName != 'a' ) currentNode[ propName ] = propValue;
else currentNode.a = propValue;
}
this.setCurrentProp( currentNode, propName );
// convert string to array, unless it ends in ',' in which case more will be added to it
if ( propName == 'a' && propValue.slice( - 1 ) != ',' ) {
currentNode.a = parseNumberArray( propValue );
}
}