Skip to content

Commit bf3357e

Browse files
committed
Optimized CleanString and improved the way it is used.
1 parent 5aee502 commit bf3357e

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

PythonForDelphi/Components/Sources/Core/PythonEngine.pas

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2269,7 +2269,7 @@ TPythonEngine = class(TPythonInterface)
22692269
procedure SetProgramName(const ProgramName: string);
22702270
function IsType(ob: PPyObject; obt: PPyTypeObject): Boolean;
22712271
function GetAttrString(obj: PPyObject; AName: PAnsiChar):PAnsiChar;
2272-
function CleanString(const s : AnsiString) : AnsiString;
2272+
function CleanString(const s : AnsiString; AppendLF : Boolean = True) : AnsiString;
22732273
function Run_CommandAsString(const command : AnsiString; mode : Integer) : String;
22742274
function Run_CommandAsObject(const command : AnsiString; mode : Integer) : PPyObject;
22752275
function Run_CommandAsObjectWithDict(const command : AnsiString; mode : Integer; locals, globals : PPyObject) : PPyObject;
@@ -5224,7 +5224,7 @@ function TPythonEngine.GetAttrString(obj: PPyObject; AName: PAnsiChar):PAnsiChar
52245224
PyErr_Clear;
52255225
end;
52265226

5227-
function TPythonEngine.CleanString(const s : AnsiString) : AnsiString;
5227+
function TPythonEngine.CleanString(const s : AnsiString; AppendLF : Boolean) : AnsiString;
52285228
var
52295229
i : Integer;
52305230
begin
@@ -5235,9 +5235,9 @@ function TPythonEngine.CleanString(const s : AnsiString) : AnsiString;
52355235
while i > 0 do
52365236
begin
52375237
Delete( result, i, 1 );
5238-
i := Pos(AnsiString(CR),result);
5238+
i := Pos(AnsiString(CR),result, i);
52395239
end;
5240-
if result[length(result)] <> LF then
5240+
if AppendLF and (result[length(result)] <> LF) then
52415241
Insert( LF, result, length(result)+1 );
52425242
end;
52435243

@@ -6801,7 +6801,8 @@ function TEventDef.GetDisplayName: string;
68016801
function TEventDef.GetDocString : AnsiString;
68026802
begin
68036803
Owner.Container.CheckEngine;
6804-
FTmpDocString := Owner.Container.Engine.CleanString(AnsiString(FDocString.Text));
6804+
FTmpDocString :=
6805+
Owner.Container.Engine.CleanString(AnsiString(FDocString.Text), False);
68056806
Result := fTmpDocString;
68066807
end;
68076808

@@ -7576,7 +7577,9 @@ procedure TPythonModule.DefineDocString;
75767577
begin
75777578
if DocString.Text <> '' then
75787579
begin
7579-
doc := PyString_FromString( PAnsiChar(CleanString(AnsiString(FDocString.Text))) );
7580+
doc :=
7581+
PyString_FromString(PAnsiChar(CleanString(EncodeString(FDocString.Text),
7582+
False)) );
75807583
PyObject_SetAttrString( FModule, '__doc__', doc );
75817584
Py_XDecRef(doc);
75827585
CheckError(False);
@@ -8823,8 +8826,9 @@ procedure TPythonType.InitServices;
88238826
begin
88248827
// Basic services
88258828
if FDocString.Count > 0 then
8829+
With Engine do
88268830
begin
8827-
FCurrentDocString := GetPythonEngine.CleanString(AnsiString(FDocString.Text));
8831+
FCurrentDocString := CleanString(EncodeString(FDocString.Text), False);
88288832
tp_doc := PAnsiChar(FCurrentDocString);
88298833
end;
88308834
tp_dealloc := @PyObjectDestructor;

0 commit comments

Comments
 (0)