Files
bds.mr.dpg/src.lib/dpglib.DelphiCharFormatter.pas
T
2026-01-03 18:33:48 +01:00

83 lines
3.4 KiB
ObjectPascal

unit dpglib.DelphiCharFormatter;
interface
uses
System.Classes,
dpglib.types;
type
TDelphiCharFormatter = class( TInterfacedObject, ICharFormatter)
// ----------------------------------------------------------------------
// IdpgCharFormatter methods
// ----------------------------------------------------------------------
public
function EscapeChar( pChar : integer;
pForCharLiteral : boolean) : AnsiString;
function EscapeString( pString : AnsiString) : AnsiString;
function LiteralChar( pChar : integer) : AnsiString;
function LiteralString( pString : AnsiString) : AnsiString;
end;
implementation
{ TDelphiCharFormatter }
// @@@: IdpgCharFormatter +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// IdpgCharFormatter
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ================================================================================================
// EscapeChar
//
// Given a character value, return a string representing the character that can be embedded
// inside a string literal or character literal.
// ================================================================================================
function TDelphiCharFormatter.EscapeChar( pChar : integer;
pForCharLiteral: boolean): AnsiString;
begin
result := AnsiChar(pChar);
end;
// ================================================================================================
// EscapeString
//
// Converts a string into a representation that can be uses as a literal when surrounded by
// quotes.
// ================================================================================================
function TDelphiCharFormatter.EscapeString(pString: AnsiString): AnsiString;
var
i: integer;
begin
result := '';
for i:=1 to Length(pString) do
result := result + EscapeChar( ord(pString[i]), false);
end;
// ================================================================================================
// LiteralChar
//
// Given a character value, return a string representing a character literal that can be
// recognized by the target language compiler.
// ================================================================================================
function TDelphiCharFormatter.LiteralChar(pChar: integer): AnsiString;
begin
result := '''' + EscapeChar( ord(pChar), true) + '''';
end;
// ================================================================================================
// LiteralString
// ================================================================================================
function TDelphiCharFormatter.LiteralString(pString: AnsiString): AnsiString;
begin
result := '''' + EscapeString( pString) + '''';
end;
end.