83 lines
3.4 KiB
ObjectPascal
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.
|