fcl-js: started TFileWriter for nodejs

git-svn-id: trunk@40039 -
This commit is contained in:
Mattias Gaertner 2018-10-25 19:42:02 +00:00
parent 703f5ea97e
commit 024c6de3cc

View File

@ -18,6 +18,10 @@ unit jswriter;
{ $DEFINE DEBUGJSWRITER} { $DEFINE DEBUGJSWRITER}
{AllowWriteln} {AllowWriteln}
{$if defined(fpc) or defined(NodeJS)}
{$define HasFileWriter}
{$endif}
interface interface
uses uses
@ -72,17 +76,22 @@ Type
Property OnWriting: TTextWriterWriting read FOnWriting write FOnWriting; Property OnWriting: TTextWriterWriting read FOnWriting write FOnWriting;
end; end;
{$ifdef fpc} {$ifdef HasFileWriter}
{ TFileWriter } { TFileWriter }
TFileWriter = Class(TTextWriter) TFileWriter = Class(TTextWriter)
Protected Protected
{$ifdef NodeJS}
{$else}
FFile : Text; FFile : Text;
{$endif}
FFileName : String; FFileName : String;
Function DoWrite(Const S : TJSWriterString) : Integer; override; Function DoWrite(Const S : TJSWriterString) : Integer; override;
{$ifdef FPC_HAS_CPSTRING}
Function DoWrite(Const S : UnicodeString) : Integer; override; Function DoWrite(Const S : UnicodeString) : Integer; override;
{$endif}
Public Public
Constructor Create(Const AFileNAme : String); Constructor Create(Const AFileName : String); reintroduce;
Destructor Destroy; override; Destructor Destroy; override;
Procedure Flush; Procedure Flush;
Procedure Close; Procedure Close;
@ -214,7 +223,7 @@ Type
Public Public
Function EscapeString(const S: TJSString; Quote: TJSEscapeQuote = jseqDouble): TJSString; Function EscapeString(const S: TJSString; Quote: TJSEscapeQuote = jseqDouble): TJSString;
Constructor Create(AWriter : TTextWriter); Constructor Create(AWriter : TTextWriter);
{$ifdef fpc} {$ifdef HasFileWriter}
Constructor Create(Const AFileName : String); Constructor Create(Const AFileName : String);
{$endif} {$endif}
Destructor Destroy; override; Destructor Destroy; override;
@ -803,7 +812,7 @@ begin
FOptions:=[{$ifdef FPC_HAS_CPSTRING}woUseUTF8{$endif}]; FOptions:=[{$ifdef FPC_HAS_CPSTRING}woUseUTF8{$endif}];
end; end;
{$ifdef fpc} {$ifdef HasFileWriter}
constructor TJSWriter.Create(const AFileName: String); constructor TJSWriter.Create(const AFileName: String);
begin begin
Create(TFileWriter.Create(AFileName)); Create(TFileWriter.Create(AFileName));
@ -1774,27 +1783,37 @@ begin
FSkipCurlyBrackets:=False; FSkipCurlyBrackets:=False;
end; end;
{$ifdef fpc} {$ifdef HasFileWriter}
{ TFileWriter } { TFileWriter }
Function TFileWriter.DoWrite(Const S: TJSWriterString) : Integer; Function TFileWriter.DoWrite(Const S: TJSWriterString) : Integer;
begin begin
Result:=Length(S); Result:=Length(S);
{$ifdef NodeJS}
system.writeln('TFileWriter.DoWrite ToDo ',S);
{$else}
system.Write(FFile,S); system.Write(FFile,S);
{$endif}
end; end;
{$ifdef FPC_HAS_CPSTRING}
Function TFileWriter.DoWrite(Const S: UnicodeString) : Integer; Function TFileWriter.DoWrite(Const S: UnicodeString) : Integer;
begin begin
Result:=Length(S)*SizeOf(UnicodeChar); Result:=Length(S)*SizeOf(UnicodeChar);
system.Write(FFile,S); system.Write(FFile,S);
end; end;
{$endif}
Constructor TFileWriter.Create(Const AFileNAme: String); Constructor TFileWriter.Create(Const AFileName: String);
begin begin
inherited Create; inherited Create;
FFileName:=AFileName; FFileName:=AFileName;
{$ifdef NodeJS}
system.writeln('TFileWriter.Create ToDo ',AFileName);
{$else}
Assign(FFile,AFileName); Assign(FFile,AFileName);
Rewrite(FFile); Rewrite(FFile);
{$endif}
end; end;
Destructor TFileWriter.Destroy; Destructor TFileWriter.Destroy;
@ -1805,12 +1824,20 @@ end;
Procedure TFileWriter.Flush; Procedure TFileWriter.Flush;
begin begin
{$ifdef NodeJS}
system.writeln('TFileWriter.Flush ToDO');
{$else}
system.Flush(FFile); system.Flush(FFile);
{$endif}
end; end;
Procedure TFileWriter.Close; Procedure TFileWriter.Close;
begin begin
{$ifdef NodeJS}
system.writeln('TFileWriter.DoWrite ToDo ');
{$else}
system.Close(FFile); system.Close(FFile);
{$endif}
end; end;
{$endif} {$endif}