Skip to content

Commit

Permalink
Merge pull request #516 from unidoc-build/prep-rc-v1.34.0
Browse files Browse the repository at this point in the history
Release v1.34.0
  • Loading branch information
gunnsth authored Jun 21, 2024
2 parents e353c17 + 6d282f3 commit 2509d38
Show file tree
Hide file tree
Showing 60 changed files with 57,544 additions and 57,453 deletions.
9 changes: 4 additions & 5 deletions algo/algo.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,9 @@
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package algo ;import _a "strconv";
package algo ;import _d "strconv";func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_ae :=make ([]byte ,len (s )*cnt );_ffb :=[]byte (s );for _gf :=0;_gf < cnt ;_gf ++{copy (_ae [_gf :],_ffb );};return string (_ae );};

// NaturalLess compares two strings in a human manner so rId2 sorts less than rId10
func NaturalLess (lhs ,rhs string )bool {_cf ,_aa :=0,0;for _cf < len (lhs )&&_aa < len (rhs ){_f :=lhs [_cf ];_b :=rhs [_aa ];_fe :=_c (_f );_fg :=_c (_b );switch {case _fe &&!_fg :return true ;case !_fe &&_fg :return false ;case !_fe &&!_fg :if _f !=_b {return _f < _b ;
};_cf ++;_aa ++;default:_dg :=_cf +1;_ce :=_aa +1;for _dg < len (lhs )&&_c (lhs [_dg ]){_dg ++;};for _ce < len (rhs )&&_c (rhs [_ce ]){_ce ++;};_ba ,_ :=_a .ParseUint (lhs [_cf :_dg ],10,64);_e ,_ :=_a .ParseUint (rhs [_cf :_ce ],10,64);if _ba !=_e {return _ba < _e ;
};_cf =_dg ;_aa =_ce ;};};return len (lhs )< len (rhs );};func _c (_g byte )bool {return _g >='0'&&_g <='9'};func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_ec :=make ([]byte ,len (s )*cnt );_fgc :=[]byte (s );for _gc :=0;_gc < cnt ;
_gc ++{copy (_ec [_gc :],_fgc );};return string (_ec );};
func NaturalLess (lhs ,rhs string )bool {_gd ,_ac :=0,0;for _gd < len (lhs )&&_ac < len (rhs ){_f :=lhs [_gd ];_fa :=rhs [_ac ];_e :=_c (_f );_ff :=_c (_fa );switch {case _e &&!_ff :return true ;case !_e &&_ff :return false ;case !_e &&!_ff :if _f !=_fa {return _f < _fa ;
};_gd ++;_ac ++;default:_b :=_gd +1;_bd :=_ac +1;for _b < len (lhs )&&_c (lhs [_b ]){_b ++;};for _bd < len (rhs )&&_c (rhs [_bd ]){_bd ++;};_ca ,_ :=_d .ParseUint (lhs [_gd :_b ],10,64);_bdf ,_ :=_d .ParseUint (rhs [_gd :_bd ],10,64);if _ca !=_bdf {return _ca < _bdf ;
};_gd =_b ;_ac =_bd ;};};return len (lhs )< len (rhs );};func _c (_g byte )bool {return _g >='0'&&_g <='9'};
883 changes: 444 additions & 439 deletions chart/chart.go

Large diffs are not rendered by default.

76 changes: 38 additions & 38 deletions color/color.go

Large diffs are not rendered by default.

712 changes: 357 additions & 355 deletions common/axcontrol/axcontrol.go

Large diffs are not rendered by default.

712 changes: 357 additions & 355 deletions common/common.go

Large diffs are not rendered by default.

41 changes: 20 additions & 21 deletions common/license/license.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,40 +11,39 @@

// Package license helps manage commercial licenses and check if they
// are valid for the version of UniOffice used.
package license ;import _e "github.com/unidoc/unioffice/internal/license";
package license ;import _g "github.com/unidoc/unioffice/internal/license";

// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _e .SetLicenseKey (content ,customerName );};
// LicenseKey represents a loaded license key.
type LicenseKey =_g .LicenseKey ;

// MakeUnlicensedKey returns a default key.
func MakeUnlicensedKey ()*LicenseKey {return _e .MakeUnlicensedKey ()};const (LicenseTierUnlicensed =_e .LicenseTierUnlicensed ;LicenseTierCommunity =_e .LicenseTierCommunity ;LicenseTierIndividual =_e .LicenseTierIndividual ;LicenseTierBusiness =_e .LicenseTierBusiness ;
);
func MakeUnlicensedKey ()*LicenseKey {return _g .MakeUnlicensedKey ()};

// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _e .GetLicenseKey ()};
// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _g .SetLicenseKey (content ,customerName );};

// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_e .LegacyLicense ;
// GetMeteredState checks the currently used metered document usage status,
// documents used and credits available.
func GetMeteredState ()(_g .MeteredStatus ,error ){return _g .GetMeteredState ()};

// SetMeteredKeyPersistentCache sets the metered License API Key persistent cache.
// Default value `true`, set to `false` will report the usage immediately to license server,
// this can be used when there's no access to persistent data storage.
func SetMeteredKeyPersistentCache (val bool ){_e .SetMeteredKeyPersistentCache (val )};
func SetMeteredKeyPersistentCache (val bool ){_g .SetMeteredKeyPersistentCache (val )};

// LicenseKey represents a loaded license key.
type LicenseKey =_e .LicenseKey ;
// LegacyLicenseType is the type of license
type LegacyLicenseType =_g .LegacyLicenseType ;const (LicenseTierUnlicensed =_g .LicenseTierUnlicensed ;LicenseTierCommunity =_g .LicenseTierCommunity ;LicenseTierIndividual =_g .LicenseTierIndividual ;LicenseTierBusiness =_g .LicenseTierBusiness ;);

// SetMeteredKey sets the metered License API key required for SaaS operation.
// Document usage is reported periodically for the product to function correctly.
func SetMeteredKey (apiKey string )error {return _e .SetMeteredKey (apiKey )};
func SetMeteredKey (apiKey string )error {return _g .SetMeteredKey (apiKey )};

// SetLegacyLicenseKey installs a legacy license code. License codes issued prior to June 2019.
// Will be removed at some point in a future major version.
func SetLegacyLicenseKey (s string )error {return _e .SetLegacyLicenseKey (s )};
// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_g .LegacyLicense ;

// GetMeteredState checks the currently used metered document usage status,
// documents used and credits available.
func GetMeteredState ()(_e .MeteredStatus ,error ){return _e .GetMeteredState ()};
// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _g .GetLicenseKey ()};

// LegacyLicenseType is the type of license
type LegacyLicenseType =_e .LegacyLicenseType ;
// SetLegacyLicenseKey installs a legacy license code. License codes issued prior to June 2019.
// Will be removed at some point in a future major version.
func SetLegacyLicenseKey (s string )error {return _g .SetLegacyLicenseKey (s )};
113 changes: 56 additions & 57 deletions common/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,98 +9,97 @@
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package logger ;import (_f "fmt";_dg "io";_c "os";_d "path/filepath";_a "runtime";);
package logger ;import (_d "fmt";_c "io";_e "os";_de "path/filepath";_bd "runtime";);

// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _dg .Writer ;};

// Warning logs warning message.
func (_ccc WriterLogger )Warning (format string ,args ...interface{}){if _ccc .LogLevel >=LogLevelWarning {_gdea :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_ccc .logToWriter (_ccc .Output ,_gdea ,format ,args ...);};};var Log Logger =DummyLogger {};


// Error logs error message.
func (_adb WriterLogger )Error (format string ,args ...interface{}){if _adb .LogLevel >=LogLevelError {_be :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_adb .logToWriter (_adb .Output ,_be ,format ,args ...);};};func (_fg WriterLogger )logToWriter (_gfc _dg .Writer ,_cd string ,_fa string ,_ecd ...interface{}){_dag (_gfc ,_cd ,_fa ,_ecd );
// Info logs info message.
func (_cd ConsoleLogger )Info (format string ,args ...interface{}){if _cd .LogLevel >=LogLevelInfo {_gb :="\u005bI\u004e\u0046\u004f\u005d\u0020";_cd .output (_e .Stdout ,_gb ,format ,args ...);};};func (_af WriterLogger )logToWriter (_afc _c .Writer ,_gf string ,_dea string ,_cbd ...interface{}){_fda (_afc ,_gf ,_dea ,_cbd );
};

// Warning logs warning message.
func (_gb ConsoleLogger )Warning (format string ,args ...interface{}){if _gb .LogLevel >=LogLevelWarning {_gf :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_gb .output (_c .Stdout ,_gf ,format ,args ...);};};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_bd WriterLogger )IsLogLevel (level LogLevel )bool {return _bd .LogLevel >=level };
// Error logs error message.
func (_g ConsoleLogger )Error (format string ,args ...interface{}){if _g .LogLevel >=LogLevelError {_aa :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_g .output (_e .Stdout ,_aa ,format ,args ...);};};var Log Logger =DummyLogger {};

// Error does nothing for dummy logger.
func (DummyLogger )Error (format string ,args ...interface{}){};

// IsLogLevel returns true from dummy logger.
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };

// Info logs info message.
func (_cg WriterLogger )Info (format string ,args ...interface{}){if _cg .LogLevel >=LogLevelInfo {_dfd :="\u005bI\u004e\u0046\u004f\u005d\u0020";_cg .logToWriter (_cg .Output ,_dfd ,format ,args ...);};};

// Debug does nothing for dummy logger.
func (DummyLogger )Debug (format string ,args ...interface{}){};

// Trace logs trace message.
func (_dba ConsoleLogger )Trace (format string ,args ...interface{}){if _dba .LogLevel >=LogLevelTrace {_gde :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_dba .output (_c .Stdout ,_gde ,format ,args ...);};};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;
LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);
// Notice does nothing for dummy logger.
func (DummyLogger )Notice (format string ,args ...interface{}){};

// Trace logs trace message.
func (_ac WriterLogger )Trace (format string ,args ...interface{}){if _ac .LogLevel >=LogLevelTrace {_dcbg :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_ac .logToWriter (_ac .Output ,_dcbg ,format ,args ...);};};
// Debug logs debug message.
func (_cdg WriterLogger )Debug (format string ,args ...interface{}){if _cdg .LogLevel >=LogLevelDebug {_fb :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_cdg .logToWriter (_cdg .Output ,_fb ,format ,args ...);};};

// Notice logs notice message.
func (_gdg WriterLogger )Notice (format string ,args ...interface{}){if _gdg .LogLevel >=LogLevelNotice {_ff :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_gdg .logToWriter (_gdg .Output ,_ff ,format ,args ...);};};
// Warning logs warning message.
func (_ac ConsoleLogger )Warning (format string ,args ...interface{}){if _ac .LogLevel >=LogLevelWarning {_bdfb :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_ac .output (_e .Stdout ,_bdfb ,format ,args ...);};};

// NewConsoleLogger creates new console logger.
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};
// Logger is the interface used for logging in the unipdf package.
type Logger interface{Error (_bdf string ,_ce ...interface{});Warning (_ed string ,_ec ...interface{});Notice (_a string ,_ecd ...interface{});Info (_bc string ,_bb ...interface{});Debug (_bdc string ,_ag ...interface{});Trace (_f string ,_ff ...interface{});
IsLogLevel (_fe LogLevel )bool ;};

// Warning does nothing for dummy logger.
func (DummyLogger )Warning (format string ,args ...interface{}){};

// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};
// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _c .Writer ;};

// SetLogger sets 'logger' to be used by the unidoc unipdf library.
func SetLogger (logger Logger ){Log =logger };

// DummyLogger does nothing.
type DummyLogger struct{};

// Info logs info message.
func (_dcb ConsoleLogger )Info (format string ,args ...interface{}){if _dcb .LogLevel >=LogLevelInfo {_cee :="\u005bI\u004e\u0046\u004f\u005d\u0020";_dcb .output (_c .Stdout ,_cee ,format ,args ...);};};
// Trace does nothing for dummy logger.
func (DummyLogger )Trace (format string ,args ...interface{}){};

// Debug does nothing for dummy logger.
func (DummyLogger )Debug (format string ,args ...interface{}){};

// NewConsoleLogger creates new console logger.
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};

// Debug logs debug message.
func (_db ConsoleLogger )Debug (format string ,args ...interface{}){if _db .LogLevel >=LogLevelDebug {_cb :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_db .output (_c .Stdout ,_cb ,format ,args ...);};};
func (_db ConsoleLogger )Debug (format string ,args ...interface{}){if _db .LogLevel >=LogLevelDebug {_eb :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_db .output (_e .Stdout ,_eb ,format ,args ...);};};func (_fd ConsoleLogger )output (_cdc _c .Writer ,_cc string ,_bca string ,_gd ...interface{}){_fda (_cdc ,_cc ,_bca ,_gd ...);
};

// Notice does nothing for dummy logger.
func (DummyLogger )Notice (format string ,args ...interface{}){};
// Trace logs trace message.
func (_cb ConsoleLogger )Trace (format string ,args ...interface{}){if _cb .LogLevel >=LogLevelTrace {_cde :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_cb .output (_e .Stdout ,_cde ,format ,args ...);};};

// NewWriterLogger creates new 'writer' logger.
func NewWriterLogger (logLevel LogLevel ,writer _dg .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};
// Error logs error message.
func (_eggd WriterLogger )Error (format string ,args ...interface{}){if _eggd .LogLevel >=LogLevelError {_fa :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_eggd .logToWriter (_eggd .Output ,_fa ,format ,args ...);};};

// Debug logs debug message.
func (_afe WriterLogger )Debug (format string ,args ...interface{}){if _afe .LogLevel >=LogLevelDebug {_dac :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_afe .logToWriter (_afe .Output ,_dac ,format ,args ...);};};
// NewWriterLogger creates new 'writer' logger.
func NewWriterLogger (logLevel LogLevel ,writer _c .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};

// LogLevel is the verbosity level for logging.
type LogLevel int ;

// Error logs error message.
func (_ed ConsoleLogger )Error (format string ,args ...interface{}){if _ed .LogLevel >=LogLevelError {_g :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_ed .output (_c .Stdout ,_g ,format ,args ...);};};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_fc ConsoleLogger )IsLogLevel (level LogLevel )bool {return _fc .LogLevel >=level };
func (_eg ConsoleLogger )IsLogLevel (level LogLevel )bool {return _eg .LogLevel >=level };

// Info does nothing for dummy logger.
func (DummyLogger )Info (format string ,args ...interface{}){};
// Notice logs notice message.
func (_feg WriterLogger )Notice (format string ,args ...interface{}){if _feg .LogLevel >=LogLevelNotice {_egf :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_feg .logToWriter (_feg .Output ,_egf ,format ,args ...);};};

// Logger is the interface used for logging in the unipdf package.
type Logger interface{Error (_bg string ,_dc ...interface{});Warning (_df string ,_ag ...interface{});Notice (_agc string ,_ce ...interface{});Info (_fe string ,_dgd ...interface{});Debug (_fb string ,_af ...interface{});Trace (_da string ,_cef ...interface{});
IsLogLevel (_e LogLevel )bool ;};func _dag (_fd _dg .Writer ,_fgb string ,_de string ,_ab ...interface{}){_ ,_bgg ,_cf ,_ef :=_a .Caller (3);if !_ef {_bgg ="\u003f\u003f\u003f";_cf =0;}else {_bgg =_d .Base (_bgg );};_beg :=_f .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_fgb ,_bgg ,_cf )+_de +"\u000a";
_f .Fprintf (_fd ,_beg ,_ab ...);};
// Info logs info message.
func (_edd WriterLogger )Info (format string ,args ...interface{}){if _edd .LogLevel >=LogLevelInfo {_ebd :="\u005bI\u004e\u0046\u004f\u005d\u0020";_edd .logToWriter (_edd .Output ,_ebd ,format ,args ...);};};

// Trace does nothing for dummy logger.
func (DummyLogger )Trace (format string ,args ...interface{}){};func (_aa ConsoleLogger )output (_ec _dg .Writer ,_ebg string ,_cc string ,_ad ...interface{}){_dag (_ec ,_ebg ,_cc ,_ad ...);};
// Trace logs trace message.
func (_fde WriterLogger )Trace (format string ,args ...interface{}){if _fde .LogLevel >=LogLevelTrace {_gdf :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_fde .logToWriter (_fde .Output ,_gdf ,format ,args ...);};};

// Info does nothing for dummy logger.
func (DummyLogger )Info (format string ,args ...interface{}){};func _fda (_cf _c .Writer ,_dc string ,_cfa string ,_cfae ...interface{}){_ ,_cg ,_fad ,_ebdb :=_bd .Caller (3);if !_ebdb {_cg ="\u003f\u003f\u003f";_fad =0;}else {_cg =_de .Base (_cg );};_ef :=_d .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_dc ,_cg ,_fad )+_cfa +"\u000a";
_d .Fprintf (_cf ,_ef ,_cfae ...);};

// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);

// Notice logs notice message.
func (_eb ConsoleLogger )Notice (format string ,args ...interface{}){if _eb .LogLevel >=LogLevelNotice {_gd :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_eb .output (_c .Stdout ,_gd ,format ,args ...);};};
func (_bg ConsoleLogger )Notice (format string ,args ...interface{}){if _bg .LogLevel >=LogLevelNotice {_fc :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_bg .output (_e .Stdout ,_fc ,format ,args ...);};};

// SetLogger sets 'logger' to be used by the unidoc unipdf library.
func SetLogger (logger Logger ){Log =logger };
// Warning logs warning message.
func (_dg WriterLogger )Warning (format string ,args ...interface{}){if _dg .LogLevel >=LogLevelWarning {_be :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_dg .logToWriter (_dg .Output ,_be ,format ,args ...);};};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_aca WriterLogger )IsLogLevel (level LogLevel )bool {return _aca .LogLevel >=level };
22 changes: 11 additions & 11 deletions common/tempstorage/diskstore/diskstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@

// Package diskstore implements tempStorage interface
// by using disk as a storage
package diskstore ;import (_bg "github.com/unidoc/unioffice/common/tempstorage";_c "io/ioutil";_e "os";_b "strings";);
package diskstore ;import (_eb "github.com/unidoc/unioffice/common/tempstorage";_e "io/ioutil";_g "os";_eg "strings";);

// TempFile creates a new temp file by calling ioutil TempFile
func (_cd diskStorage )TempFile (dir ,pattern string )(_bg .File ,error ){return _c .TempFile (dir ,pattern );};

// Open opens file from disk according to a path
func (_f diskStorage )Open (path string )(_bg .File ,error ){return _e .OpenFile (path ,_e .O_RDWR ,0644)};
// TempFile creates a new temp directory by calling ioutil TempDir
func (_ba diskStorage )TempDir (pattern string )(string ,error ){return _e .TempDir ("",pattern )};type diskStorage struct{};

// SetAsStorage sets temp storage as a disk storage
func SetAsStorage (){_ec :=diskStorage {};_bg .SetAsStorage (&_ec )};
func SetAsStorage (){_a :=diskStorage {};_eb .SetAsStorage (&_a )};

// Add is not applicable in the diskstore implementation
func (_df diskStorage )Add (path string )error {return nil };
func (_bad diskStorage )Add (path string )error {return nil };

// RemoveAll removes all files in the directory
func (_d diskStorage )RemoveAll (dir string )error {if _b .HasPrefix (dir ,_e .TempDir ()){return _e .RemoveAll (dir );};return nil ;};
func (_f diskStorage )RemoveAll (dir string )error {if _eg .HasPrefix (dir ,_g .TempDir ()){return _g .RemoveAll (dir );};return nil ;};

// TempFile creates a new temp directory by calling ioutil TempDir
func (_ac diskStorage )TempDir (pattern string )(string ,error ){return _c .TempDir ("",pattern )};type diskStorage struct{};
// Open opens file from disk according to a path
func (_b diskStorage )Open (path string )(_eb .File ,error ){return _g .OpenFile (path ,_g .O_RDWR ,0644)};

// TempFile creates a new temp file by calling ioutil TempFile
func (_c diskStorage )TempFile (dir ,pattern string )(_eb .File ,error ){return _e .TempFile (dir ,pattern );};
Loading

0 comments on commit 2509d38

Please sign in to comment.