トークン クラス

これまでC# で作成してきた「SourceToHTML」を、Delphi に焼きなおしてみます。

Token.pas


//*******************************************************************************************************
// トークン情報クラス
//*******************************************************************************************************
unit Token;

interface

type
TToken = class
private
function getTokenHtml():WideString;

public
tokenString:WideString; // トークンの文字列
tokenKind: string; // トークンの種類
IsFixed: Boolean; // 確定済みか

constructor Create(argString:WideString; argKind:string);
property tokenHtml:WideString read getTokenHtml;

end;

implementation
//----------------------------------------------------------------------------------------------------
// 初期化
//----------------------------------------------------------------------------------------------------
constructor TToken.Create(argString:WideString; argKind:string);
begin
tokenString := argString;
tokenKind := argKind;
IsFixed := false;
end;
//----------------------------------------------------------------------------------------------------
// "<", ">", "&", "(", "), "|" を変換
//----------------------------------------------------------------------------------------------------
function TToken.getTokenHtml():WideString;
var
htmlString:WideString;
c: WideChar;
i: Integer;
begin
htmlString := '';

for i := 1 to Length(tokenString) do
begin
c := tokenString[i];

if (c = '<') then htmlString := htmlString + '&#x3C;'
else if (c = '>') then htmlString := htmlString + '&#x3E;'
else if (c = '&') then htmlString := htmlString + '&#x26;'
else if (c = '(') then htmlString := htmlString + '&#x28;' //はてな
else if (c = ')') then htmlString := htmlString + '&#x29;' //はてな
else if (c = '|') then htmlString := htmlString + '&#x7C;' //はてな
else htmlString := htmlString + c;
end;

result := htmlString;
end;

end.