| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | unit pas2jswebcompiler;{$mode objfpc}interfaceuses  Classes, SysUtils, pas2jsfs, pasuseanalyzer, pas2jscompiler, FPPJsSrcMap, webfilecache;Type  { TPas2JSWebcompiler }  TPas2JSWebcompiler = Class(TPas2JSCompiler)  private    function GetWebFS: TPas2JSWebFS;  Protected    function DoWriteJSFile(const DestFilename, DestMapFile: String; aWriter: TPas2JSMapper): Boolean; override;    function CreateSetOfCompilerFiles(keyType: TKeyCompareType): TPasAnalyzerKeySet; override;    function CreateFS : TPas2JSFS; override;  Public    Property WebFS : TPas2JSWebFS read GetWebFS;  end;implementationuses 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, DestMapFile: 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.
 |