docs: function(localStorage,paths,namespace) {
  
  	var pathGraph = '',
  		nodeGraph = '',
  		rootNodeGraph = '',
  		i = 0,
  		l = 0;
  	
  	var toIdentifier = function(src) {
  		if (src.match(/\:/)) {
  			var x = src.split(':');
  			return x[0].replace(/[^0-9a-zA-Z]/g,'_')+':'+x[1];
  		}
  		return src.replace(/[^0-9a-zA-Z]/g,'_');
  	};
  
  	var toNode = function(src) {
  		var kr = '',
  			r = [];
  			var getInnerRec = function(item) {
  				var r = [],
  					k = '';
  				for (k in item) {
  					if (item.hasOwnProperty(k)) {
  						r.push(''+k+':'+JSON.stringify(item[k])
  							.replace(/"/g,'\\"')
  							.replace(/\{/g,'\\{')
  							.replace(/\}/g,'\\}')
  							.replace(/\|/g,'|')
  							.replace(/\(/g,'(')
  							.replace(/\)/g,')')
  						);
  					}
  				}
  				return r.join('|');
  			};
  		var item = JSON.parse(localStorage.getItem(namespace + '.'+src.replace(/\:.*/,'')));
  		if (src.match(/\:/)) {
  			for (kr in item) {
  				if (item.hasOwnProperty(kr)) {
  					r.push(
  						(r.length ? '' : src.replace(/\:.*/,'') + '|') +
  						'{ <'+kr+"> "+kr+" |{"+getInnerRec(item[kr])+'}}'
  					);
  				}
  			}
  			return toIdentifier(src) + ' [label="'+r.join('|')+'"];';
  		}
  		return toIdentifier(src) + ' [label="'+src+'|'+getInnerRec(item)+'"]' + ";\n";
  	};
  	
  	for (i=0, l=paths.length; i<l; i++) {
  		if (paths[i].from.match(/\:/)) {
  			rootNodeGraph = rootNodeGraph + toNode(paths[i].from);
  		} else {
  			nodeGraph = nodeGraph + toNode(paths[i].from);
  		}
  		if (paths[i].to) {
  			var tmp = paths[i].from.split(/[\.\:]/);
  			nodeGraph = nodeGraph + toNode(tmp[0]+'.'+tmp[1]+'.'+paths[i].to);
  			pathGraph = pathGraph + 
  				toIdentifier(paths[i].from) + 
  				' -> ' +
  				toIdentifier(tmp[0]+'.'+tmp[1]+'.'+paths[i].to) +
  				(paths[i].hasOwnProperty('via') ? '[label="'+paths[i].via+'"]' : '') +
  				";\n";
  		}
  	}
  
  	var str = 'digraph { graph [ dpi = 50 ]; rankdir="LR"; node[shape=record]; % }';
  	str = str.replace('%','subgraph clusterStore { label=Roots; '+rootNodeGraph+' } %');
  	str = str.replace('%',nodeGraph+' %');
  	str = str.replace('%',pathGraph+' ');
  
  	return str;
  }