Convert Code To HTML (C#)

using System; 

using System.IO; 

using System.Text; 

using System.Text.RegularExpressions; 

using System.Web; 

  

namespace CodeHTML 

  public class TranslateCode 

  { 

    private class ProgrammingLanguage 

    { 

      public const string VB = "vb"; 

  

      public const string CSharp = "c#"; 

  

      public const string JSharp = "js"; 

  

    } 

  

  

    private bool _ShowFileName; 

  

    private int _FontSize; 

  

    private string _Language; 

  

    private const string TAG_FNTRED = "<font color=\"red\">"; 

  

    private const string TAG_FNTBLUE = "<font color=\"blue\">"; 

  

    private const string TAG_FNTGRN = "<font color=\"green\">"; 

  

    private const string TAG_FNTMRN = "<font color=\"maroon\">"; 

  

    private const string TAG_EFONT = "</font>"; 

  

  

    public bool ShowFileName 

    { 

      get 

      { 

        return _ShowFileName; 

      } 

  

      set 

      { 

        _ShowFileName = value; 

      } 

    } 

  

    public int FontSize 

    { 

      get 

      { 

        return _FontSize; 

      } 

  

      set 

      { 

        _FontSize = value; 

      } 

    } 

  

    public string Language 

    { 

      get 

      { 

        return _Language; 

      } 

  

      set 

      { 

        _Language = value; 

      } 

    } 

  

    public TranslateCode() 

    { 

      _ShowFileName = false; 

      _FontSize = 3; 

      _Language = ""; 

    } 

  

    private void SetLanguageFromFileName(string FilePath) 

    { 

      if (FilePath.Split(new char[]{Convert.ToChar(".")}).Length > 0) 

      { 

        string str2 = FilePath.Substring(FilePath.LastIndexOf(Convert.ToChar(".")) + 1).ToLower().Trim(); 

        if (StringType.StrCmp(str2, "vb", false) == 0) 

        { 

          _Language = "vb"; 

        } 

        else if (StringType.StrCmp(str2, "c#", false) == 0) 

        { 

          _Language = "c#"; 

        } 

        else if (StringType.StrCmp(str2, "js", false) == 0) 

        { 

          _Language = "js"; 

        } 

      } 

    } 

  

    public string RenderFile(string FilePath) 

    { 

      SetLanguageFromFileName(FilePath); 

      return Render(File.OpenText(FilePath)); 

    } 

  

    public void RenderFile(string FilePath, string OutputFilePath) 

    { 

      SetLanguageFromFileName(FilePath); 

      StreamWriter streamWriter = new StreamWriter(OutputFilePath); 

      streamWriter.Write(Render(File.OpenText(FilePath))); 

      streamWriter.Flush(); 

      streamWriter.Close(); 

    } 

  

    public string Render(StreamReader InputTextReader) 

    { 

      return Render(InputTextReader.ReadToEnd()); 

    } 

  

    public string Render(string InputString) 

    { 

      StringBuilder stringBuilder = new StringBuilder(); 

      StringWriter stringWriter = new StringWriter(stringBuilder); 

      string[] strs1 = InputString.Split(new char[]{13}); 

      stringWriter.WriteLine(String.Concat("<font size=\"", StringType.FromInteger(_FontSize), "\" \\>")); 

      string str4 = _Language.Trim().ToLower(); 

      if (StringType.StrCmp(str4, "c#", false) == 0) 

      { 

        stringWriter.WriteLine("<pre>"); 

        string[] strs5 = strs1; 

        for (int i2 = 0; i2 < (int)strs5.Length; i2++) 

        { 

          string str2 = strs5[i2]; 

          stringWriter.Write(FixCSLine(str2)); 

        } 

        stringWriter.WriteLine("</pre>"); 

      } 

      else if (StringType.StrCmp(str4, "js", false) == 0) 

      { 

        stringWriter.WriteLine("<pre>"); 

        string[] strs4 = strs1; 

        for (int k = 0; k < (int)strs4.Length; k++) 

        { 

          string str2 = strs4[k]; 

          stringWriter.Write(FixJSLine(str2)); 

        } 

        stringWriter.WriteLine("</pre>"); 

      } 

      else if (StringType.StrCmp(str4, "vb", false) == 0) 

      { 

        stringWriter.WriteLine("<pre>"); 

        string[] strs3 = strs1; 

        for (int j = 0; j < (int)strs3.Length; j++) 

        { 

          string str2 = strs3[j]; 

          stringWriter.Write(FixVBLine(str2)); 

        } 

        stringWriter.WriteLine("</pre>"); 

      } 

      else 

      { 

        bool flag2 = false; 

        bool flag1 = false; 

        stringWriter.WriteLine("<pre>"); 

        string[] strs2 = strs1; 

        for (int i1 = 0; i1 < (int)strs2.Length; i1++) 

        { 

          string str2 = strs2[i1]; 

          _Language = GetLanguageFromLine(str2, _Language); 

          if (IsScriptBlockTagStart(str2)) 

          { 

            stringWriter.Write(FixASPXLine(str2)); 

            flag2 = true; 

          } 

          else if (IsScriptBlockTagEnd(str2)) 

          { 

            stringWriter.Write(FixASPXLine(str2)); 

            flag2 = false; 

          } 

          else if ((IsMultiLineTagStart(str2) & flag1 == false) != 0) 

          { 

            stringWriter.Write(String.Concat("<font color=blue><b>", HttpUtility.HtmlEncode(str2))); 

            flag1 = true; 

          } 

          else if ((IsMultiLineTagEnd(str2) & flag1) != 0) 

          { 

            stringWriter.Write(String.Concat(HttpUtility.HtmlEncode(str2), "</b></font>")); 

            flag1 = false; 

          } 

          else if (flag1) 

          { 

            stringWriter.Write(HttpUtility.HtmlEncode(str2)); 

          } 

          else if (flag2) 

          { 

            string str3 = _Language.Trim().ToLower(); 

            if (StringType.StrCmp(str3, "c#", false) == 0) 

            { 

              stringWriter.Write(FixCSLine(str2)); 

            } 

            else if (StringType.StrCmp(str3, "js", false) == 0) 

            { 

              stringWriter.Write(FixJSLine(str2)); 

            } 

            else if (StringType.StrCmp(str3, "vb", false) == 0) 

            { 

              stringWriter.Write(FixVBLine(str2)); 

            } 

            else 

            { 

              stringWriter.Write(FixVBLine(str2)); 

            } 

          } 

          else 

          { 

            stringWriter.Write(FixASPXLine(str2)); 

          } 

        } 

        stringWriter.WriteLine("</pre>"); 

      } 

      stringWriter.WriteLine("</font>"); 

      stringWriter.Flush(); 

      return stringBuilder.ToString(); 

    } 

  

    private string GetLanguageFromLine(string sInputLine, string DefaultLanguage) 

    { 

      string str1; 

  

      string str2 = DefaultLanguage; 

      if (sInputLine.Length == 0) 

      { 

        str1 = str2; 

      } 

      else 

      { 

        Match match = Regex.Match(sInputLine, "(?i)<%@\\s*Page\\s*.*Language\\s*=\\s*\"(?<lang>[^\"]+)\""); 

        if (match.Success) 

        { 

          str2 = match.Groups["lang"].ToString(); 

        } 

        match = Regex.Match(sInputLine, "(?i)(?=.*runat\\s*=\\s*\"?server\"?)<script.*language\\s*=\\s*\"(?<lang>[^\"]+)\".*>"); 

        if (match.Success) 

        { 

          str2 = match.Groups["lang"].ToString(); 

        } 

        match = Regex.Match(sInputLine, "(?i)<%@\\s*WebService\\s*.*Language\\s*=\\s*\"?(?<lang>[^\"]+)\"?"); 

        if (match.Success) 

        { 

          str2 = match.Groups["lang"].ToString(); 

        } 

        if (StringType.StrCmp(str2, "CS", false) == 0) 

        { 

          str2 = "c#"; 

        } 

        str1 = str2; 

      } 

      return str1; 

    } 

  

    private string FixCSLine(string sInputLine) 

    { 

      string str1; 

  

      string str3 = sInputLine; 

      if (sInputLine.Length == 0) 

      { 

        str1 = sInputLine; 

      } 

      else 

      { 

        str3 = Regex.Replace(sInputLine, "(?i)(\\t)", "    "); 

        str3 = HttpUtility.HtmlEncode(str3); 

        string[] strs1 = new string[]{"private", "protected", "public", "namespace", "class", "break", "for", "if", "else", "while", "switch", "case", "using", "return", "null", "void", "int", "bool", "string", "float", 

       "this", "new", "true", "false", "const", "static", "base", "foreach", "in", "try", "catch", "get", "set", "char", "default"}; 

        string str2 = String.Concat("(?<keyword>", String.Join("|", strs1), ")"); 

        str3 = Regex.Replace(str3, String.Concat("\\b", str2, "\\b(?<!//.*)"), "<font color=\"blue\">${keyword}</font>"); 

        str3 = Regex.Replace(str3, "(?<comment>//.*$)", "<font color=\"green\">${comment}</font>"); 

        str1 = str3; 

      } 

      return str1; 

    } 

  

    private string FixJSLine(string sInputLine) 

    { 

      string str1; 

  

      string str3 = sInputLine; 

      if (sInputLine.Length == 0) 

      { 

        str1 = sInputLine; 

      } 

      else 

      { 

        str3 = Regex.Replace(sInputLine, "(?i)(\\t)", "    "); 

        str3 = HttpUtility.HtmlEncode(str3); 

        string[] strs1 = new string[]{"private", "protected", "public", "namespace", "class", "var", "for", "if", "else", "while", "switch", "case", "using", "get", "return", "null", "void", "int", "string", "float", 

       "this", "set", "new", "true", "false", "const", "static", "package", "function", "internal", "extends", "super", "import", "default", "break", "try", "catch", "finally"}; 

        string str2 = String.Concat("(?<keyword>", String.Join("|", strs1), ")"); 

        str3 = Regex.Replace(str3, String.Concat("\\b", str2, "\\b(?<!//.*)"), "<font color=\"blue\">${keyword}</font>"); 

        str3 = Regex.Replace(str3, "(?<comment>//.*$)", "<font color=\"green\">${comment}</font>"); 

        str1 = str3; 

      } 

      return str1; 

    } 

  

    private string FixVBLine(string sInputLine) 

    { 

      string str2; 

  

      string str3 = sInputLine; 

      if (sInputLine.Length == 0) 

      { 

        str2 = sInputLine; 

      } 

      else 

      { 

        str3 = Regex.Replace(sInputLine, "(?i)(\\t)", "    "); 

        str3 = HttpUtility.HtmlEncode(str3); 

        string[] strs1 = new string[]{"AddressOf", "Delegate", "Optional", "ByVal", "ByRef", "Decimal", "Boolean", "Option", "Compare", "Binary", "Text", "On", "Off", "Explicit", "Strict", "Private", "Protected", "Public", "End Namespace", "Namespace", 

       "End Class", "Exit", "Class", "Goto", "Try", "Catch", "End Try", "For", "End If", "If", "Else", "ElseIf", "Next", "While", "And", "Do", "Loop", "Dim", "As", "End Select", 

       "Select", "Case", "Or", "Imports", "Then", "Integer", "Long", "String", "Overloads", "True", "Overrides", "End Property", "End Sub", "End Function", "Sub", "Me", "Function", "End Get", "End Set", "Get", 

       "Friend", "Inherits", "Implements", "Return", "Not", "New", "Shared", "Nothing", "Finally", "False", "Me", "My", "MyBase", "End Enum", "Enum"}; 

        string str1 = String.Concat("(?<keyword>", String.Join("|", strs1), ")"); 

        str3 = Regex.Replace(str3, String.Concat("(?i)\\b", str1, "\\b(?<!\’.*)"), "<font color=\"blue\">${keyword}</font>"); 

        str3 = Regex.Replace(str3, "(?<comment>\’(?![^\’]*").*$)", "<font color=\"green\">${comment}</font>"); 

        str2 = str3; 

      } 

      return str2; 

    } 

  

    private string FixASPXLine(string sInputLine) 

    { 

      string str1; 

  

      string str2 = sInputLine; 

      if (sInputLine.Length == 0) 

      { 

        str1 = sInputLine; 

      } 

      else 

      { 

        str2 = Regex.Replace(str2, "(?i)(\\t)", "    "); 

        str2 = HttpUtility.HtmlEncode(str2); 

        string str4 = "(?i)(?<a>(^.*))(?<b>(<!--))(?<c>(.*))(?<d>(-->))(?<e>(.*))"; 

        string str3 = "${a}<font color=\"green\">${b}${c}${d}</font>${e}"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a>(<%@))(?<b>(.*))(?<c>(%>))"; 

        str3 = "<font color=blue><b>${a}${b}${c}</b></font>"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a>(<%#))(?<b>(.*))(?<c>(%>))"; 

        str3 = "${a}<font color=red><b>${b}</b></font>${c}"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a>(<)(?!%)(?!/?asp:)(?!/?template)(?!/?property)(?!/?ibuyspy:)(/|!)?)(?<b>[^;\\s&]+)(?<c>(\\s|>|\\Z))"; 

        str3 = "${a}<font color=\"maroon\">${b}</font>${c}"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a></?)(?<b>(asp:|template|property|IBuySpy:).*)(?<c>>)?"; 

        str3 = "${a}<font color=\"blue\"><b>${b}</b></font>${c}"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a>(<)(/|!|%)?)"; 

        str3 = "<font color=\"blue\">${a}</font>"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str4 = "(?i)(?<a>(/|%)?(>))"; 

        str3 = "<font color=\"blue\">${a}</font>"; 

        if (Regex.IsMatch(str2, str4)) 

        { 

          str2 = Regex.Replace(str2, str4, str3); 

        } 

        str1 = str2; 

      } 

      return str1; 

    } 

  

    private bool IsScriptBlockTagStart(string sInputLine) 

    { 

      bool flag1 = false; 

      if (Regex.IsMatch(sInputLine, "<script.*runat=\"?server\"?.*>")) 

      { 

        flag1 = true; 

      } 

      else if (Regex.IsMatch(sInputLine, "(?i)<%@\\s*WebService")) 

      { 

        flag1 = true; 

      } 

      bool flag2 = flag1; 

      return flag2; 

    } 

  

    private bool IsScriptBlockTagEnd(string sInputLine) 

    { 

      bool flag1 = false; 

      if (Regex.IsMatch(sInputLine, "</script.*>")) 

      { 

        flag1 = true; 

      } 

      bool flag2 = flag1; 

      return flag2; 

    } 

  

    private bool IsMultiLineTagStart(string sInputLine) 

    { 

      bool flag1 = false; 

      string str2 = "(?i)(?!.*>)(?<a></?)(?<b>(asp:|template|property|IBuySpy:).*)"; 

      if (Regex.IsMatch(HttpUtility.HtmlEncode(sInputLine), str2)) 

      { 

        flag1 = true; 

      } 

      bool flag2 = flag1; 

      return flag2; 

    } 

  

    private bool IsMultiLineTagEnd(string sInputLine) 

    { 

      bool flag1 = false; 

      string str2 = "(?i)>"; 

      if (Regex.IsMatch(HttpUtility.HtmlEncode(sInputLine), str2)) 

      { 

        flag1 = true; 

      } 

      bool flag2 = flag1; 

      return flag2; 

    } 

  } 

}

时间: 2024-09-27 19:19:54

Convert Code To HTML (C#)的相关文章

用C++ Builderw做Ftp服务器程序

#include <stdlib.h> //Required for atoi() #include "..\winsock.h" //Winsock header file #define PROG_NAME "Quick FTP Version 1" #define HOST_NAME "NIC.DDN.MIL " // FTP server host #define PASSWORD "PASS guest\r\n &

CODE - TSQL convert Query to JSON

原文 ODE - TSQL convert Query to JSON  TSQL - Query to JSON It is my philosophy that good development starts with the data. I have always stressed whenever possible allow your data processing to take place on your SQL server or database processing engi

在ASP.NET下实现数字和字符相混合的验证码(C# Code)

asp.net|验证码 为了便于大家学习,修改vb.net code成为c#gif.aspx文件修改的内容private void Page_Load(object sender, System.EventArgs e){// 在此处放置用户代码以初始化页面//RndNum是一个自定义函数 string VNum = RndNum(5);Session["VNum"] = VNum;ValidateCode(VNum); }private void ValidateCode(strin

Path to a Trusted Front-end Code Protection

Introduction As an appealing objective in the information security field, a trusted system refers to a system that achieves a certain degree of trustworthiness by implementing specific security policies. For computers, the Trusted Platform Module (TP

ASP 三层架构 Convert类实现代码_应用技巧

这个类主要解决在类型转换时,如果直接使用类型转换函数,会因为变量为空或者格式不对而导致程序报错,而这种报错在大多数情况下是允许的.例如要转换一个字符串变量为数字,如果变量为空,则一般需要自动返回0. 另外一个重要功能就是封装变量格式化操作,可以保持整个网站的输出格式统一,例如时间格式,货币格式等等. 日期和货币格式化的时候,极易遇到因空值报错的情况,一般都不得不写个预判断空值的逻辑,再格式化变量. 使用这个类负责类型转换和格式化输出后,就不用操心这些琐碎的细节了,可以让编程的心情得到大大改善啊.

Tcp syn portscan code in C with Linux sockets

Port Scanning searches for open ports on a remote system. The basic logic for a portscanner would be to connect to the port we want to check. If the socket gives a valid connection without any error then the port is open , closed otherwise (or inacce

Google Summer of Code: C++ Modernizer Improvements----Monday, November 18, 2013

原文地址:http://blog.llvm.org/2013/11/google-summer-of-code-c-modernizer.html Google Summer of Code (GSoC) offers students stipends to participate in open source projects during the summer. This year, I was accepted to work on the Clang C++ Modernizer, a

Google Code项目代码托管网站上Git版本控制系统使用简明教程

作为一个著名的在线项目代码托管网站,Google Code目前主要支持三种版本控制系统,分别为Git, Mercurial和 Subversion.Subversion即SVN相信大家都已经熟知了,这里我们要介绍的是最近新增的Git版本控制系统. 如果您在Google Code上的项目已经使用SVN进行版本管理,也可以很方便的在本地使用Git对项目进行版本管理.详细操作步骤请参考: Convert your project from Subversion to Git 下面我们要讲的主要就是如果

Code a network packet sniffer in python for Linux

Basic Sniffer The most basic form of a sniffer would be : 1 #Packet sniffer in python 2 #For Linux 3   4 import socket 5   6 #create an INET, raw socket 7 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) 8   9 # receive a packet