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.