瀏覽代碼

better html formating

Nicolas Cannasse 18 年之前
父節點
當前提交
1dec17f9fd
共有 1 個文件被更改,包括 56 次插入2 次删除
  1. 56 2
      std/tools/haxedoc/HtmlPrinter.hx

+ 56 - 2
std/tools/haxedoc/HtmlPrinter.hx

@@ -462,10 +462,64 @@ class HtmlPrinter {
 		print('<span class="kwd">'+w+' </span>');
 	}
 
-	function processDoc(doc) {
+	function processDoc(doc : String) {
 		if( doc == null )
 			return;
-		doc = ~/\[([^\]]+)\]/g.replace(doc,"<code>$1</code>");
+
+		// unixify line endings
+		doc = doc.split("\r\n").join("\n").split("\r").join("\n");
+
+		// process [] blocks
+		var rx = ~/\[/;
+		var tmp = new StringBuf();
+		var codes = new List();
+		while (rx.match(doc)) {
+			tmp.add( rx.matchedLeft() );
+
+			var code = rx.matchedRight();
+			var brackets = 1;
+			var i = 0;
+			while( i < code.length && brackets > 0 ) {
+				switch( code.charCodeAt(i++) ) {
+				case 91: brackets++;
+				case 93: brackets--;
+				}
+			}
+			doc = code.substr(i);
+			code = code.substr(0, i-1);
+			code = ~/&/g.replace(code, "&amp;");
+			code = ~/</g.replace(code, "&lt;");
+			code = ~/>/g.replace(code, "&gt;");
+			var tag = "##__code__"+codes.length+"##";
+			if( code.indexOf('\n') != -1 ) {
+				tmp.add("<pre>");
+				tmp.add(tag);
+				tmp.add("</pre>");
+				codes.add(code.split("\t").join("    "));
+			} else {
+				tmp.add("<code>");
+				tmp.add(tag);
+				tmp.add("</code>");
+				codes.add(code);
+			}
+		}
+		tmp.add(doc);
+
+		// separate into paragraphs
+		var parts = ~/\n[ \t]*\n/g.split(tmp.toString());
+		if( parts.length == 1 )
+			doc = parts[0];
+		else
+			doc = Lambda.map(parts,function(x) { return "<p>"+StringTools.trim(x)+"</p>"; }).join("\n");
+
+		// trim stars
+		doc = ~/^([ \t]*)\*+/gm.replace(doc, "$1");
+		doc = ~/\**[ \t]*$/gm.replace(doc, "");
+
+		// put back code parts
+		var i = 0;
+		for( c in codes )
+			doc = doc.split("##__code__"+(i++)+"##").join(c);
 		print(doc);
 	}