parse method
dynamic
parse(
- dynamic text
Implementation
parse( text ) {
this.currentIndent = 0;
this.allNodes = new FBXTree();
this.nodeStack = [];
this.currentProp = [];
this.currentPropName = '';
var scope = this;
var split = text.split( RegExp(r'[\r\n]+') );
split.asMap().forEach( ( i, line ) {
var matchComment = RegExp(r"^[\s\t]*;").hasMatch(line);
var matchEmpty = RegExp(r"^[\s\t]*$").hasMatch(line);
if ( matchComment || matchEmpty ) return;
var matchBeginning = line.match( '^\\t{' + scope.currentIndent.toString() + '}(\\w+):(.*){', '' );
var matchProperty = line.match( '^\\t{' + ( scope.currentIndent.toString() ) + '}(\\w+):[\\s\\t\\r\\n](.*)' );
var matchEnd = line.match( '^\\t{' + ( scope.currentIndent - 1 ).toString() + '}}' );
if ( matchBeginning ) {
scope.parseNodeBegin( line, matchBeginning );
} else if ( matchProperty ) {
scope.parseNodeProperty( line, matchProperty, split[ ++ i ] );
} else if ( matchEnd ) {
scope.popStack();
} else if ( RegExp(r"^[^\s\t}]").hasMatch(line) ) {
// large arrays are split over multiple lines terminated with a ',' character
// if this is encountered the line needs to be joined to the previous line
scope.parseNodePropertyContinued( line );
}
} );
return this.allNodes;
}