mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 01:29:19 +02:00
fcl-js: added TTextWriter.LineBreak
git-svn-id: trunk@47741 -
This commit is contained in:
parent
a849e51a3c
commit
2df2986a4b
@ -46,6 +46,7 @@ Type
|
|||||||
FCurElement: TJSElement;
|
FCurElement: TJSElement;
|
||||||
FCurLine: integer;
|
FCurLine: integer;
|
||||||
FCurColumn: integer;
|
FCurColumn: integer;
|
||||||
|
FLineBreak: string;
|
||||||
FOnWriting: TTextWriterWriting;
|
FOnWriting: TTextWriterWriting;
|
||||||
protected
|
protected
|
||||||
Function DoWrite(Const S : TJSWriterString) : Integer; virtual; abstract;
|
Function DoWrite(Const S : TJSWriterString) : Integer; virtual; abstract;
|
||||||
@ -70,6 +71,7 @@ Type
|
|||||||
Property CurColumn: integer read FCurColumn write FCurColumn;// char index, not codepoint
|
Property CurColumn: integer read FCurColumn write FCurColumn;// char index, not codepoint
|
||||||
Property CurElement: TJSElement read FCurElement write SetCurElement;
|
Property CurElement: TJSElement read FCurElement write SetCurElement;
|
||||||
Property OnWriting: TTextWriterWriting read FOnWriting write FOnWriting;
|
Property OnWriting: TTextWriterWriting read FOnWriting write FOnWriting;
|
||||||
|
Property LineBreak: string read FLineBreak write FLineBreak;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef HasFileWriter}
|
{$ifdef HasFileWriter}
|
||||||
@ -652,6 +654,15 @@ const
|
|||||||
p:=h;
|
p:=h;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function SkipToNextLineEnd(const S: TJSString; p: integer): integer;
|
||||||
|
var
|
||||||
|
l: SizeInt;
|
||||||
|
begin
|
||||||
|
l:=length(S);
|
||||||
|
while (p<=l) and not (S[p] in [#10,#13]) do inc(p);
|
||||||
|
Result:=p;
|
||||||
|
end;
|
||||||
|
|
||||||
function SkipToNextLineStart(const S: TJSString; p: integer): integer;
|
function SkipToNextLineStart(const S: TJSString; p: integer): integer;
|
||||||
var
|
var
|
||||||
l: Integer;
|
l: Integer;
|
||||||
@ -711,9 +722,11 @@ begin
|
|||||||
GetLineIndent(JS,p); // the first line is already indented, skip
|
GetLineIndent(JS,p); // the first line is already indented, skip
|
||||||
repeat
|
repeat
|
||||||
StartP:=p;
|
StartP:=p;
|
||||||
p:=SkipToNextLineStart(JS,StartP);
|
p:=SkipToNextLineEnd(JS,StartP);
|
||||||
Write(copy(JS,StartP,p-StartP));
|
Write(copy(JS,StartP,p-StartP));
|
||||||
if p>length(JS) then break;
|
if p>length(JS) then break;
|
||||||
|
Write(sLineBreak);
|
||||||
|
p:=SkipToNextLineStart(JS,p);
|
||||||
CurLineIndent:=GetLineIndent(JS,p);
|
CurLineIndent:=GetLineIndent(JS,p);
|
||||||
Write(StringOfChar(FIndentChar,FCurIndent+CurLineIndent-MinIndent));
|
Write(StringOfChar(FIndentChar,FCurIndent+CurLineIndent-MinIndent));
|
||||||
until false;
|
until false;
|
||||||
@ -2017,6 +2030,7 @@ constructor TTextWriter.Create;
|
|||||||
begin
|
begin
|
||||||
FCurLine:=1;
|
FCurLine:=1;
|
||||||
FCurColumn:=1;
|
FCurColumn:=1;
|
||||||
|
FLineBreak:=sLineBreak;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$ifdef FPC_HAS_CPSTRING}
|
{$ifdef FPC_HAS_CPSTRING}
|
||||||
@ -2085,7 +2099,7 @@ end;
|
|||||||
|
|
||||||
function TTextWriter.WriteLn(const S: TJSWriterString): Integer;
|
function TTextWriter.WriteLn(const S: TJSWriterString): Integer;
|
||||||
begin
|
begin
|
||||||
Result:=Write(S)+Write(sLineBreak);
|
Result:=Write(S)+Write(LineBreak);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TTextWriter.Write(const Fmt: TJSWriterString;
|
function TTextWriter.Write(const Fmt: TJSWriterString;
|
||||||
|
Loading…
Reference in New Issue
Block a user