123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- unit pas2jswebcompiler;
- {$mode objfpc}
- interface
- uses
- Classes, SysUtils, pas2jsfs, pasuseanalyzer, pas2jscompiler, FPPJsSrcMap, webfilecache;
- Type
- { TPas2JSWebcompiler }
- TPas2JSWebcompiler = Class(TPas2JSCompiler)
- private
- function GetWebFS: TPas2JSWebFS;
- Protected
- function DoWriteJSFile(const DestFilename: String; aWriter: TPas2JSMapper): Boolean; override;
- function CreateSetOfCompilerFiles(keyType: TKeyCompareType): TPasAnalyzerKeySet; override;
- function CreateFS : TPas2JSFS; override;
- Public
- Property WebFS : TPas2JSWebFS read GetWebFS;
- end;
- implementation
- uses js;
- function Pas2jsCompilerFile_FilenameToKeyName(Item: Pointer): String;
- var
- aFile: TPas2jsCompilerFile absolute Item;
- begin
- Result:=LowerCase(aFile.PasFilename);
- end;
- function PtrUnitnameToKeyName(Item: Pointer): String;
- var
- aUnitName: string absolute Item;
- begin
- Result:=LowerCase(aUnitName);
- end;
- function Pas2jsCompilerFile_UnitnameToKeyName(Item: Pointer): String;
- var
- aFile: TPas2jsCompilerFile absolute Item;
- begin
- Result:=LowerCase(aFile.PasUnitName);
- end;
- function PtrFilenameToKeyName(FilenameAsPtr: Pointer): string;
- var
- Filename: String absolute FilenameAsPtr;
- begin
- Result:=LowerCase(Filename);
- end;
- { TPas2JSWebcompiler }
- function TPas2JSWebcompiler.GetWebFS: TPas2JSWebFS;
- begin
- Result:=TPas2JSWebFS(FS)
- end;
- function TPas2JSWebcompiler.DoWriteJSFile(const DestFilename: String; aWriter: TPas2JSMapper): Boolean;
- Var
- S : String;
- begin
- // Writeln('aWriter',AWriter.BufferLength,', array size ',Length(AWriter.Buffer));
- S:=TJSArray(AWriter.Buffer).Join('');
- // Writeln('TPas2JSWebcompiler.DoWriteJSFile(',DestFileName,') (',Length(S),' chars): ',S);
- WebFS.SetFileContent(DestFileName,S);
- Result:=True;
- end;
- function TPas2JSWebcompiler.CreateSetOfCompilerFiles(keyType: TKeyCompareType): TPasAnalyzerKeySet;
- begin
- Case keyType of
- kcFileName:
- Result:=TPasAnalyzerKeySet.Create(@Pas2jsCompilerFile_FilenameToKeyName,@PtrFilenameToKeyName);
- kcUnitName:
- Result:=TPasAnalyzerKeySet.Create(@Pas2jsCompilerFile_UnitnameToKeyName,@PtrUnitnameToKeyName);
- else
- Raise EPas2jsFS.CreateFmt('Internal Unknown key type: %d',[Ord(KeyType)]);
- end;
- end;
- function TPas2JSWebcompiler.CreateFS: TPas2JSFS;
- begin
- Result:=TPas2JSWebFS.Create;
- end;
- end.
|