load("build/js/writeFile.js");
var blockMatch = /\s*\/\*\*\s*((.|\n)*?)\s*\*\/\n*/g;
-var f = readFile(arguments[0]).replace( blockMatch, "\n" );
+var f = readFile(arguments[0]).replace( blockMatch, "\n" ).replace( /\n\n+/g, "\n\n" );
writeFile( arguments[1], f );
load("build/js/json.js", "build/js/xml.js", "build/js/writeFile.js", "build/js/parse.js");
+var dir = arguments[1];
+
var c = parse( readFile(arguments[0]) );
-var json = Object.toJSON( c );
+output( c, "docs" );
-writeFile( arguments[1] + "/data/jquery-docs-json.js", json );
-writeFile( arguments[1] + "/data/jquery-docs-jsonp.js", "docsLoaded(" + json + ")" );
+c = categorize( c );
+output( c, "cat" );
-Object.toXML.force = { desc: 1, code: 1, before: 1, result: 1 };
+function output( c, n ) {
+ var json = Object.toJSON( c );
-var xml = Object.toXML( { method: c }, "docs" );
+ writeFile( dir + "/data/jquery-" + n + "-json.js", json );
+ writeFile( dir + "/data/jquery-" + n + "-jsonp.js", "docsLoaded(" + json + ")" );
-writeFile( arguments[1] + "/data/jquery-docs-xml.xml",
- "<?xml version='1.0' encoding='ISO-8859-1'?>\n" + xml );
+ Object.toXML.force = { desc: 1, code: 1, before: 1, result: 1 };
+
+ var xml = Object.toXML( n == "docs" ? { method: c } : c, "docs" );
+
+ writeFile( dir + "/data/jquery-" + n + "-xml.xml",
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n" + xml );
-writeFile( arguments[1] + "/index.xml",
- "<?xml version='1.0' encoding='ISO-8859-1'?>\n" +
- "<?xml-stylesheet type='text/xsl' href='style/docs.xsl'?>\n" + xml
-);
+ writeFile( dir + "/" + ( n == "docs" ? "index" : n ) + ".xml",
+ "<?xml version='1.0' encoding='ISO-8859-1'?>\n" +
+ "<?xml-stylesheet type='text/xsl' href='style/docs.xsl'?>\n" + xml
+ );
+}
return c;
}
+
+function categorize( json ) {
+ var obj = { methods: [] };
+
+ for ( var i = 0; i < json.length; i++ ) {
+ if ( !json[i].cat ) json[i].cat = "";
+
+ var cat = json[i].cat.split("/");
+
+ var pos = obj;
+ for ( var j = 0; j < cat.length; j++ ) {
+ var c = cat[j];
+
+ // Create current category
+ if ( !pos[c] ) pos[c] = { methods: [] };
+
+ // If we're at the end, add the method
+ if ( j == cat.length - 1 )
+ pos[c].methods.push( json[i] );
+
+ // Otherwise, traverse deeper
+ else
+ pos = pos[c];
+ }
+ }
+
+ return obj;
+}