Skip to content

Commit

Permalink
Merge pull request #509 from unidoc-build/prep-rc-v1.30.0
Browse files Browse the repository at this point in the history
Release v1.30.0
  • Loading branch information
gunnsth committed Feb 17, 2024
2 parents 378770e + 05ccb60 commit 4765c1f
Show file tree
Hide file tree
Showing 62 changed files with 57,349 additions and 57,302 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,28 @@ background color. However it's easy to do manually via editing the

If you are interested in contributing, please contact us.

## Development Notes

The bash script file `run_test.sh` could be used to run test and update the test result (if required). This script could receive the following parameter:
- `-s`: Save a baseline, updates all the test result.
- `-v`: Run the test in verbose mode.
- `t` or `--testname` [test name]: Run a specific test name. For example `-t AddImage` would be running a `TestAddImage` test.

To run the script in dockerized environment, use the provided `Makefile` such as:

```bash
make docker-test
```
or

```bash
make docker-update-testdata
```

## Go Version Compatibility

Officially we support three latest Go versions, but internally we would test the build with up to five latest Go versions in our CI runner.

## Support and consulting ##

Please email us at support@unidoc.io for any queries.
Expand Down
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";func _f (_af byte )bool {return _af >='0'&&_af <='9'};
package algo ;import _d "strconv";func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_eeb :=make ([]byte ,len (s )*cnt );_ab :=[]byte (s );for _dd :=0;_dd < cnt ;_dd ++{copy (_eeb [_dd :],_ab );};return string (_eeb );};

// NaturalLess compares two strings in a human manner so rId2 sorts less than rId10
func NaturalLess (lhs ,rhs string )bool {_fb ,_dg :=0,0;for _fb < len (lhs )&&_dg < len (rhs ){_dd :=lhs [_fb ];_fa :=rhs [_dg ];_db :=_f (_dd );_fd :=_f (_fa );switch {case _db &&!_fd :return true ;case !_db &&_fd :return false ;case !_db &&!_fd :if _dd !=_fa {return _dd < _fa ;
};_fb ++;_dg ++;default:_b :=_fb +1;_fdf :=_dg +1;for _b < len (lhs )&&_f (lhs [_b ]){_b ++;};for _fdf < len (rhs )&&_f (rhs [_fdf ]){_fdf ++;};_c ,_ :=_a .ParseUint (lhs [_fb :_b ],10,64);_fad ,_ :=_a .ParseUint (rhs [_fb :_fdf ],10,64);if _c !=_fad {return _c < _fad ;
};_fb =_b ;_dg =_fdf ;};};return len (lhs )< len (rhs );};func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_aa :=make ([]byte ,len (s )*cnt );_g :=[]byte (s );for _fdfg :=0;_fdfg < cnt ;_fdfg ++{copy (_aa [_fdfg :],_g );};return string (_aa );
};
func NaturalLess (lhs ,rhs string )bool {_ee ,_b :=0,0;for _ee < len (lhs )&&_b < len (rhs ){_ec :=lhs [_ee ];_f :=rhs [_b ];_ba :=_df (_ec );_ga :=_df (_f );switch {case _ba &&!_ga :return true ;case !_ba &&_ga :return false ;case !_ba &&!_ga :if _ec !=_f {return _ec < _f ;
};_ee ++;_b ++;default:_c :=_ee +1;_eec :=_b +1;for _c < len (lhs )&&_df (lhs [_c ]){_c ++;};for _eec < len (rhs )&&_df (rhs [_eec ]){_eec ++;};_fc ,_ :=_d .ParseUint (lhs [_ee :_c ],10,64);_ge ,_ :=_d .ParseUint (rhs [_ee :_eec ],10,64);if _fc !=_ge {return _fc < _ge ;
};_ee =_c ;_b =_eec ;};};return len (lhs )< len (rhs );};func _df (_e byte )bool {return _e >='0'&&_e <='9'};
890 changes: 444 additions & 446 deletions chart/chart.go

Large diffs are not rendered by default.

77 changes: 39 additions & 38 deletions color/color.go

Large diffs are not rendered by default.

707 changes: 354 additions & 353 deletions common/axcontrol/axcontrol.go

Large diffs are not rendered by default.

705 changes: 353 additions & 352 deletions common/common.go

Large diffs are not rendered by default.

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

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

// 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 _b .SetLegacyLicenseKey (s )};

// 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 ){_b .SetMeteredKeyPersistentCache (val )};

// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_b .LegacyLicense ;

// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _b .GetLicenseKey ()};
// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _f .SetLicenseKey (content ,customerName );};const (LicenseTierUnlicensed =_f .LicenseTierUnlicensed ;LicenseTierCommunity =_f .LicenseTierCommunity ;LicenseTierIndividual =_f .LicenseTierIndividual ;
LicenseTierBusiness =_f .LicenseTierBusiness ;);

// GetMeteredState checks the currently used metered document usage status,
// documents used and credits available.
func GetMeteredState ()(_b .MeteredStatus ,error ){return _b .GetMeteredState ()};
func GetMeteredState ()(_f .MeteredStatus ,error ){return _f .GetMeteredState ()};

// 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 _f .SetMeteredKey (apiKey )};

// LegacyLicenseType is the type of license
type LegacyLicenseType =_b .LegacyLicenseType ;
type LegacyLicenseType =_f .LegacyLicenseType ;

// MakeUnlicensedKey returns a default key.
func MakeUnlicensedKey ()*LicenseKey {return _b .MakeUnlicensedKey ()};
func MakeUnlicensedKey ()*LicenseKey {return _f .MakeUnlicensedKey ()};

// LicenseKey represents a loaded license key.
type LicenseKey =_b .LicenseKey ;
// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_f .LegacyLicense ;

// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _b .SetLicenseKey (content ,customerName );};const (LicenseTierUnlicensed =_b .LicenseTierUnlicensed ;LicenseTierCommunity =_b .LicenseTierCommunity ;LicenseTierIndividual =_b .LicenseTierIndividual ;
LicenseTierBusiness =_b .LicenseTierBusiness ;);
// 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 _f .SetLegacyLicenseKey (s )};

// 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 _b .SetMeteredKey (apiKey )};
// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _f .GetLicenseKey ()};

// LicenseKey represents a loaded license key.
type LicenseKey =_f .LicenseKey ;

// 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 ){_f .SetMeteredKeyPersistentCache (val )};
120 changes: 60 additions & 60 deletions common/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,97 +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 (_db "fmt";_e "io";_ac "os";_a "path/filepath";_df "runtime";);
package logger ;import (_b "fmt";_be "io";_d "os";_a "path/filepath";_c "runtime";);

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

// Debug logs debug message.
func (_fd ConsoleLogger )Debug (format string ,args ...interface{}){if _fd .LogLevel >=LogLevelDebug {_cea :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_fd .output (_d .Stdout ,_cea ,format ,args ...);};};

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

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

// Debug logs debug message.
func (_ega ConsoleLogger )Debug (format string ,args ...interface{}){if _ega .LogLevel >=LogLevelDebug {_egd :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_ega .output (_ac .Stdout ,_egd ,format ,args ...);};};func (_fc ConsoleLogger )output (_ab _e .Writer ,_gg string ,_bb string ,_ag ...interface{}){_egf (_ab ,_gg ,_bb ,_ag ...);
};
// IsLogLevel returns true from dummy logger.
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };

// Warning logs warning message.
func (_dd ConsoleLogger )Warning (format string ,args ...interface{}){if _dd .LogLevel >=LogLevelWarning {_ae :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_dd .output (_ac .Stdout ,_ae ,format ,args ...);};};
// Logger is the interface used for logging in the unipdf package.
type Logger interface{Error (_dg string ,_g ...interface{});Warning (_f string ,_ec ...interface{});Notice (_gd string ,_beg ...interface{});Info (_cc string ,_df ...interface{});Debug (_af string ,_ab ...interface{});Trace (_bf string ,_bfb ...interface{});
IsLogLevel (_bg LogLevel )bool ;};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_cc ConsoleLogger )IsLogLevel (level LogLevel )bool {return _cc .LogLevel >=level };
// Error logs error message.
func (_gb WriterLogger )Error (format string ,args ...interface{}){if _gb .LogLevel >=LogLevelError {_acb :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_gb .logToWriter (_gb .Output ,_acb ,format ,args ...);};};

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

// Error logs error message.
func (_aed WriterLogger )Error (format string ,args ...interface{}){if _aed .LogLevel >=LogLevelError {_aee :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_aed .logToWriter (_aed .Output ,_aee ,format ,args ...);};};

// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};

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

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

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

// Trace logs trace message.
func (_gda WriterLogger )Trace (format string ,args ...interface{}){if _gda .LogLevel >=LogLevelTrace {_gff :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_gda .logToWriter (_gda .Output ,_gff ,format ,args ...);};};

// Trace does nothing for dummy logger.
func (DummyLogger )Trace (format string ,args ...interface{}){};
// Info logs info message.
func (_abg WriterLogger )Info (format string ,args ...interface{}){if _abg .LogLevel >=LogLevelInfo {_bgg :="\u005bI\u004e\u0046\u004f\u005d\u0020";_abg .logToWriter (_abg .Output ,_bgg ,format ,args ...);};};

// Logger is the interface used for logging in the unipdf package.
type Logger interface{Error (_b string ,_c ...interface{});Warning (_g string ,_cf ...interface{});Notice (_ce string ,_f ...interface{});Info (_ge string ,_bg ...interface{});Debug (_fa string ,_gb ...interface{});Trace (_eg string ,_be ...interface{});
IsLogLevel (_fg LogLevel )bool ;};
// Info logs info message.
func (_ac ConsoleLogger )Info (format string ,args ...interface{}){if _ac .LogLevel >=LogLevelInfo {_cgc :="\u005bI\u004e\u0046\u004f\u005d\u0020";_ac .output (_d .Stdout ,_cgc ,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 (_bbc WriterLogger )IsLogLevel (level LogLevel )bool {return _bbc .LogLevel >=level };
func (_eb ConsoleLogger )IsLogLevel (level LogLevel )bool {return _eb .LogLevel >=level };

// Notice logs notice message.
func (_egb ConsoleLogger )Notice (format string ,args ...interface{}){if _egb .LogLevel >=LogLevelNotice {_ga :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_egb .output (_ac .Stdout ,_ga ,format ,args ...);};};
func (_ed ConsoleLogger )Notice (format string ,args ...interface{}){if _ed .LogLevel >=LogLevelNotice {_ad :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_ed .output (_d .Stdout ,_ad ,format ,args ...);};};

// Debug logs debug message.
func (_acfe WriterLogger )Debug (format string ,args ...interface{}){if _acfe .LogLevel >=LogLevelDebug {_bgf :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_acfe .logToWriter (_acfe .Output ,_bgf ,format ,args ...);};};

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

// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};

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

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

// Info logs info message.
func (_bf WriterLogger )Info (format string ,args ...interface{}){if _bf .LogLevel >=LogLevelInfo {_aa :="\u005bI\u004e\u0046\u004f\u005d\u0020";_bf .logToWriter (_bf .Output ,_aa ,format ,args ...);};};
// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _be .Writer ;};

// Info logs info message.
func (_ca ConsoleLogger )Info (format string ,args ...interface{}){if _ca .LogLevel >=LogLevelInfo {_cag :="\u005bI\u004e\u0046\u004f\u005d\u0020";_ca .output (_ac .Stdout ,_cag ,format ,args ...);};};
// Error logs error message.
func (_gg ConsoleLogger )Error (format string ,args ...interface{}){if _gg .LogLevel >=LogLevelError {_cg :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_gg .output (_d .Stdout ,_cg ,format ,args ...);};};

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

// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _e .Writer ;};
// NewConsoleLogger creates new console logger.
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};func _bca (_gf _be .Writer ,_gge string ,_cb string ,_aa ...interface{}){_ ,_da ,_de ,_gae :=_c .Caller (3);if !_gae {_da ="\u003f\u003f\u003f";_de =0;
}else {_da =_a .Base (_da );};_bgfb :=_b .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_gge ,_da ,_de )+_cb +"\u000a";_b .Fprintf (_gf ,_bgfb ,_aa ...);};var Log Logger =DummyLogger {};

// Warning logs warning message.
func (_bgf WriterLogger )Warning (format string ,args ...interface{}){if _bgf .LogLevel >=LogLevelWarning {_gd :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_bgf .logToWriter (_bgf .Output ,_gd ,format ,args ...);};};func _egf (_bgc _e .Writer ,_bda string ,_ed string ,_fdc ...interface{}){_ ,_acg ,_cae ,_ea :=_df .Caller (3);
if !_ea {_acg ="\u003f\u003f\u003f";_cae =0;}else {_acg =_a .Base (_acg );};_af :=_db .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_bda ,_acg ,_cae )+_ed +"\u000a";_db .Fprintf (_bgc ,_af ,_fdc ...);};
// 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{}){};
// Notice logs notice message.
func (_ede WriterLogger )Notice (format string ,args ...interface{}){if _ede .LogLevel >=LogLevelNotice {_dfb :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_ede .logToWriter (_ede .Output ,_dfb ,format ,args ...);};};

// IsLogLevel returns true from dummy logger.
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };
// LogLevel is the verbosity level for logging.
type LogLevel int ;

// Trace logs trace message.
func (_ec ConsoleLogger )Trace (format string ,args ...interface{}){if _ec .LogLevel >=LogLevelTrace {_dbe :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_ec .output (_ac .Stdout ,_dbe ,format ,args ...);};};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;
LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);func (_agg WriterLogger )logToWriter (_beeg _e .Writer ,_cfc string ,_fd string ,_ecc ...interface{}){_egf (_beeg ,_cfc ,_fd ,_ecc );};
func (_gba WriterLogger )Trace (format string ,args ...interface{}){if _gba .LogLevel >=LogLevelTrace {_caf :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_gba .logToWriter (_gba .Output ,_caf ,format ,args ...);};};

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

// Debug logs debug message.
func (_faf WriterLogger )Debug (format string ,args ...interface{}){if _faf .LogLevel >=LogLevelDebug {_caf :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_faf .logToWriter (_faf .Output ,_caf ,format ,args ...);};};
// Error does nothing for dummy logger.
func (DummyLogger )Error (format string ,args ...interface{}){};

// NewWriterLogger creates new 'writer' logger.
func NewWriterLogger (logLevel LogLevel ,writer _e .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};
// Trace logs trace message.
func (_ge ConsoleLogger )Trace (format string ,args ...interface{}){if _ge .LogLevel >=LogLevelTrace {_bc :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_ge .output (_d .Stdout ,_bc ,format ,args ...);};};func (_ebg ConsoleLogger )output (_acf _be .Writer ,_ebd string ,_cca string ,_acg ...interface{}){_bca (_acf ,_ebd ,_cca ,_acg ...);
};func (_edf WriterLogger )logToWriter (_caa _be .Writer ,_dc string ,_dd string ,_ga ...interface{}){_bca (_caa ,_dc ,_dd ,_ga );};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;
LogLevelError LogLevel =0;);

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

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

0 comments on commit 4765c1f

Please sign in to comment.