From be81221a1d3321f511fab76dc7aa05076868c665 Mon Sep 17 00:00:00 2001 From: mattias Date: Wed, 9 Dec 2020 21:42:48 +0000 Subject: [PATCH] pastojs: precompiled code: always store with unix line ending, write with platform line ending --- compiler/packages/fcl-js/src/jswriter.pp | 18 ++++++++++++++++-- compiler/packages/pastojs/src/fppas2js.pp | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/compiler/packages/fcl-js/src/jswriter.pp b/compiler/packages/fcl-js/src/jswriter.pp index 4daecc0..6b775d4 100644 --- a/compiler/packages/fcl-js/src/jswriter.pp +++ b/compiler/packages/fcl-js/src/jswriter.pp @@ -46,6 +46,7 @@ Type FCurElement: TJSElement; FCurLine: integer; FCurColumn: integer; + FLineBreak: string; FOnWriting: TTextWriterWriting; protected 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 CurElement: TJSElement read FCurElement write SetCurElement; Property OnWriting: TTextWriterWriting read FOnWriting write FOnWriting; + Property LineBreak: string read FLineBreak write FLineBreak; end; {$ifdef HasFileWriter} @@ -652,6 +654,15 @@ const p:=h; 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; var l: Integer; @@ -711,9 +722,11 @@ begin GetLineIndent(JS,p); // the first line is already indented, skip repeat StartP:=p; - p:=SkipToNextLineStart(JS,StartP); + p:=SkipToNextLineEnd(JS,StartP); Write(copy(JS,StartP,p-StartP)); if p>length(JS) then break; + Write(sLineBreak); + p:=SkipToNextLineStart(JS,p); CurLineIndent:=GetLineIndent(JS,p); Write(StringOfChar(FIndentChar,FCurIndent+CurLineIndent-MinIndent)); until false; @@ -2017,6 +2030,7 @@ constructor TTextWriter.Create; begin FCurLine:=1; FCurColumn:=1; + FLineBreak:=sLineBreak; end; {$ifdef FPC_HAS_CPSTRING} @@ -2085,7 +2099,7 @@ end; function TTextWriter.WriteLn(const S: TJSWriterString): Integer; begin - Result:=Write(S)+Write(sLineBreak); + Result:=Write(S)+Write(LineBreak); end; function TTextWriter.Write(const Fmt: TJSWriterString; diff --git a/compiler/packages/pastojs/src/fppas2js.pp b/compiler/packages/pastojs/src/fppas2js.pp index 7d125d1..d31accf 100644 --- a/compiler/packages/pastojs/src/fppas2js.pp +++ b/compiler/packages/pastojs/src/fppas2js.pp @@ -19502,6 +19502,7 @@ begin aJSWriter.Options:=DefaultJSWriterOptions; aJSWriter.IndentSize:=2; aJSWriter.SkipCurlyBrackets:=true; + aJSWriter.Writer.LineBreak:=#10; aJSWriter.WriteJS(El); Result:=aWriter.AsString; finally