Ver código fonte

- fixed templo CDATA + html escaping

Laurent Bedubourg 19 anos atrás
pai
commit
1ab7a1e346
2 arquivos alterados com 13 adições e 2 exclusões
  1. 11 0
      std/mtwin/templo/Parser.hx
  2. 2 2
      std/mtwin/templo/Preprocessor.hx

+ 11 - 0
std/mtwin/templo/Parser.hx

@@ -448,6 +448,17 @@ class Parser {
 							result.add("false == ");
 							result.add("false == ");
 							skip = true;
 							skip = true;
 						}
 						}
+						else if (c == "&" && n != "&" && n != "=" && len-i >= 5){
+							if (str.substr(i,5) == "&"){
+								result.add("&"); i+=4; skip = true;
+							}
+							if (str.substr(i,4) == "<"){ 
+								result.add("<"); i+=3; skip = true;
+							}
+							else if (str.substr(i,4) == "&gt;"){
+								result.add(">"); i+=3; skip = true;
+							}
+						}
 					}
 					}
 					else if (c == "("){
 					else if (c == "("){
 						var end = findEndOfBracket(str, i);
 						var end = findEndOfBracket(str, i);

+ 2 - 2
std/mtwin/templo/Preprocessor.hx

@@ -207,9 +207,9 @@ class Preprocessor {
 	}
 	}
 
 
 	static function unescapeCdata1( str:String ) : String {
 	static function unescapeCdata1( str:String ) : String {
-		var res = str.split("<![CDATAX[").join("<![CDATA[");
+		var res = str.split("<![CDATAX[").join("<![CDATA["); //.split("]]>").join("]]>");
 		res = escapeCdata1(res);
 		res = escapeCdata1(res);
-		res = res.split("<![CDATAX[").join("<![CDATA[").split("]]>").join("]]>");
+		res = res.split("<![CDATAX[").join("<![CDATA["); // .split("]]>").join("]]>");
 		res = res.split("<![COMMENT[").join("<!--").split("]]C>").join("-->");
 		res = res.split("<![COMMENT[").join("<!--").split("]]C>").join("-->");
 		return res;
 		return res;
 	}
 	}