public static Tuple<bool, string> FormatCode(string lang, string code)
 {
     SourceFormat sf = null;
     switch (lang)
     {
         case "csharp":
         case "cs":
             sf = new Manoli.Utils.CSharpFormat.CSharpFormat();
             break;
         case "c++":
         case "cpp":
             sf = new CPlusPlusFormat();
             break;
         case "js":
         case "javascript":
             sf = new JavaScriptFormat();
             break;
         case "ts":
         case "typescript":
             sf = new TypeScriptFormat();
             break;                  
         case "vb":
         case "basic":
             sf = new VisualBasicFormat();
             break;
         case "sql":
             sf = new TsqlFormat();
             break;
         case "msh":
             sf = new MshFormat();
             break;
         case "haskell":
             sf = new HaskellFormat();
             break;
         case "php":
             sf = new PhpFormat();
             break;
         case "fsharp":
         case "fs":
             sf = new FSharpFormat();
             break;
         case "html":
         case "xml":
         case "aspx":
             sf = new HtmlFormat();
             break;
         case "paket":
             sf = new PaketFormat();
             break;
     }
     if (sf == null)
     {
         return Tuple.Create(false, SourceFormat.EscapeHtml(code, tabSpaces: 2));
     }
     else
     {
         sf.TabSpaces = 2;
         return Tuple.Create(true, sf.FormatCode(code));
     }
 }
		/// <summary/>
		public HtmlFormat()
		{
			const string regJavaScript = @"(?<=&lt;script(?:\s.*?)?&gt;).+?(?=&lt;/script&gt;)";
			const string regComment = @"&lt;!--.*?--&gt;";
			const string regAspTag = @"&lt;%@.*?%&gt;|&lt;%=?|%&gt;|&lt;\?php|&lt;\?|\?&gt;";
			const string regPhpCode = @"(?<=&lt;\?).*?(?=\?&gt;)|(?<=&lt;\?php).*?(?=\?&gt;)";
			const string regAspCode = @"(?<=&lt;%=?).*?(?=%&gt;)";
			const string regTagDelimiter = @"(?:&lt;/?!?\??(?!%)|(?<!%)/?&gt;)+";
			const string regTagName = @"(?<=&lt;/?!?\??(?!%))[\w\.:-]+(?=.*&gt;)";
			const string regAttributes = @"(?<=&lt;(?!%)/?!?\??[\w:-]+).*?(?=(?<!%)/?&gt;)";
			const string regEntity = @"&amp;\w+;";
			const string regAttributeMatch = @"(=?"".*?""|=?'.*?')|([\w:-]+)";
			
			//the regex object will handle all the replacements in one pass
			string regAll = "(" + regJavaScript + ")|(" + regComment + ")|(" 
				+ regAspTag + ")|(" + regAspCode + ")|(" + regPhpCode + ")|(" 
				+ regTagDelimiter + ")|(" + regTagName + ")|("
				+ regAttributes + ")|(" + regEntity + ")";

			CodeRegex = new Regex(regAll, RegexOptions.IgnoreCase | RegexOptions.Singleline);
			attribRegex = new Regex(regAttributeMatch, RegexOptions.Singleline);

			csf = new CSharpFormat();
			jsf = new JavaScriptFormat();
			phf = new PhpFormat();
		}
Exemple #3
0
 private static string FormatCode(string lang, string code)
 {
     SourceFormat sf = null;
     switch (lang)
     {
         case "csharp": case "cs":
       sf = new Manoli.Utils.CSharpFormat.CSharpFormat();
       break;
         case "c++": case "cpp":
             sf = new CPlusPlusFormat();
             break;
         case "js": case "javascript":
             sf = new JavaScriptFormat();
             break;
         case "vb": case "basic":
             sf = new VisualBasicFormat();
             break;
         case "sql":
             sf = new TsqlFormat();
             break;
         case "msh":
             sf = new MshFormat();
             break;
     case "haskell":
       sf = new HaskellFormat();
       break;
     case "php":
             sf = new PhpFormat();
             break;
         case "fsharp": case "fs":
             sf = new FSharpFormat();
             break;
         case "html": case "xml": case "aspx":
             sf = new HtmlFormat();
             break;
     }
     if (sf == null)
         return code;
     else
     {
         string c = code.Replace("&amp;", "&").Replace("&lt;", "<").Replace("&gt;", ">").Replace("&quot;", "\"");
     c = c.Replace("<em>", "verynastythingthatnoonewillusebeginem")
      .Replace("</em>", "verynastythingthatnoonewilluseendem");
         sf.TabSpaces = 2;
     return sf.FormatCode(c)
       .Replace("verynastythingthatnoonewilluseendem", "</em>")
       .Replace("verynastythingthatnoonewillusebeginem", "<em>");
     }
 }