code: function expandIncludes(source, rootPath) {
  	var matcher = new RegExp("^([\t ]*)include ([^/].*);\n?", "gm");
  	var match;
  	var expanded = '';
  	var after = source;
  	var includes = [];
  	var lastIndex = 0;
  	while (match = matcher.exec(source)) {
  		var statement = match[0];
  		var indent = match[1];
  		var filePath = path.join(rootPath, match[2])
  		includes.push(filePath);
  
  		expanded += source.substr(lastIndex, match.index - lastIndex);
  
  		expanded += indent + "## Start Include: " + filePath + "\n";
  
  		try {
  			var fileContent = fs.readFileSync(filePath, 'utf8');
  
  			// preserve indentation of the include line
  			var indentedContent = singleTrailingNewline(NgindoxUtil.indentBlock(fileContent, indent));
  
  			// recurse with relative path
  			expanded += expandIncludes(indentedContent, path.dirname(rootPath));
  		} catch (err) {
  			// file probably missing
  			expanded += indent + "## Error: " + err + "\n";
  		}
  
  		expanded += indent + "## End Include: " + filePath + "\n";
  
  		// store end of match as begining of next search
  		lastIndex = matcher.lastIndex;
  	}
  
  	expanded += source.substr(lastIndex);
  
  	return expanded;
  }
docs: Expands relative includes (preserves indentation). Absolute includes are ignored. TODO: rewrite to use callback?