Pascal Syntax Hightlighter

Není problém nalézt implementaci převodu Pascal do HTML napsanou v pascalu nebo v PHP, ale v C# pro ASP.NET? Nic jsem nenašel, tak jsem vzal jeden kód, který převáděl C# do HTML a upravil ho.

Pascal Syntax Highlighter pro ASP.NET (C#)

Originální kód (C# do HTML) je na stránkách xtractpro.com. Mnou nabízená verze umí kromě originálního kódu C# i Object Pascal. Vše je včetně zdrojových textů a licence umožňuje volné užití (detailní licence na začátku zdrojového kódu)

download

Download (14K / zip / 18.3.2009 / source code)

Celá integrace spočívá v zařazení 2 (v případě jednoho jazyka) nebo 3 souborů (v případě podpory jak pascalu tak C#) do vašich ASP.NET stránek a začlenění CSS stylu (součástí balíku).

Ukázka použití v ASP.NET ve vašich stránkách:

    1protected void Page_Load(object sender, EventArgs e)
    2    {
    3      if (!IsPostBack)
    4        request.Text = File.ReadAllText(Server.MapPath("test/PascalTest.pas"));
    5
    6      CPascalSyntaxHighlighter highlighter = new CPascalSyntaxHighlighter();
    7      highlighter.ShowLineNumbers = ShowLineNumbers.Checked;
    8      highlighter.ShowCollapsibleBlocks = ShowCollapsibleBlocks.Checked;
    9      highlighter.ShowComments = ShowComments.Checked;
   10      highlighter.Types = new string[] { "TObject" };
   11      result.InnerHtml = highlighter.Process(request.Text);
   12    }
  • ShowLineNumbers - generovat čísla řádků (vypnuto)
  • ShowCollapsibleBlocks - možnost schovávat části kódu přes JS (v ukázce není použito)
  • ShowComments - zobrazovat komentáře (zapnuto)
  • Types - možnost specifikovat rozeznávané třídy

Výsledek může vypadat třeba takto:

    1unit DemoForm;
    2
    3(*
    4  Short Pascal highlighter test file
    5  *)
    6
    7{
    8  another comments
    9}
   10
   11
   12interface
   13
   14uses
   15  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   16  Dialogs, StdCtrls, FastMMUsageTracker;
   17
   18type
   19  TfDemo = class(TForm)
   20    bShowTracker: TButton;
   21    procedure bShowTrackerClick(Sender: TObject);
   22  private
   23    { Private declarations }
   24  public
   25    { Public declarations }
   26    class function Test(const sTest:string): Boolean; virtual;
   27  end;
   28
   29var
   30  fDemo: TfDemo;
   31
   32implementation
   33
   34{$R *.dfm}
   35
   36procedure TfDemo.bShowTrackerClick(Sender: TObject);
   37begin
   38  ShowFastMMUsageTracker;
   39end;
   40
   41class function TfDemo.Test(const sTest: string): Boolean;
   42begin
   43  Result := 'bla';
   44end;
   45
   46end.

© Netcode.cz, 2008-9.