2020-08-23 14:15:53 +00:00
|
|
|
//
|
|
|
|
// Copyright 2020 FoxyUtils ehf. All rights reserved.
|
|
|
|
//
|
|
|
|
// This is a commercial product and requires a license to operate.
|
|
|
|
// A trial license can be obtained at https://unidoc.io
|
|
|
|
//
|
|
|
|
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
|
|
|
|
//
|
|
|
|
// 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 unioffice provides creation, reading, and writing of ECMA 376 Office Open
|
|
|
|
XML documents, spreadsheets and presentations. It is still early in
|
|
|
|
development, but is progressing quickly. This library takes a slightly
|
|
|
|
different approach from others, in that it starts by trying to support all of
|
|
|
|
the ECMA-376 standard when marshaling/unmarshaling XML documents. From there it
|
|
|
|
adds wrappers around the ECMA-376 derived types that provide a more convenient
|
|
|
|
interface.
|
|
|
|
|
|
|
|
The raw XML based types reside in the `schema/`` directory. These types are
|
|
|
|
always accessible from the wrapper types via a `X() method that returns the
|
|
|
|
raw type. Except for the base documents (document.Document,
|
|
|
|
spreadsheet.Workbook and presentation.Presentation), the other wrapper types are
|
|
|
|
value types with non-pointer methods. They exist solely to modify and return
|
|
|
|
data from one or more XML types.
|
|
|
|
|
|
|
|
The packages of interest are github.com/unidoc/unioffice/document,
|
|
|
|
unidoc/unioffice/spreadsheet and github.com/unidoc/unioffice/presentation.
|
|
|
|
|
|
|
|
*/
|
2020-12-17 22:07:08 +00:00
|
|
|
package unioffice ;import (_c "encoding/xml";_gd "errors";_b "fmt";_d "github.com/unidoc/unioffice/algo";_fe "log";_e "reflect";_gb "strings";_g "unicode";);
|
2020-10-12 13:59:12 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// AddPreserveSpaceAttr adds an xml:space="preserve" attribute to a start
|
|
|
|
// element if it is required for the string s.
|
|
|
|
func AddPreserveSpaceAttr (se *_c .StartElement ,s string ){if NeedsSpacePreserve (s ){se .Attr =append (se .Attr ,_c .Attr {Name :_c .Name {Local :"\u0078m\u006c\u003a\u0073\u0070\u0061\u0063e"},Value :"\u0070\u0072\u0065\u0073\u0065\u0072\u0076\u0065"});};};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// AbsoluteImageFilename returns the full path to an image from the root of the
|
|
|
|
// zip container.
|
|
|
|
func AbsoluteImageFilename (dt DocType ,index int ,fileExtension string )string {_ga :=AbsoluteFilename (dt ,ImageType ,index );return _ga [0:len (_ga )-3]+fileExtension ;};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Int8 returns a copy of v as a pointer.
|
|
|
|
func Int8 (v int8 )*int8 {_ed :=v ;return &_ed };
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Uint16 returns a copy of v as a pointer.
|
|
|
|
func Uint16 (v uint16 )*uint16 {_eba :=v ;return &_eba };
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// RegisterConstructor registers a constructor function used for unmarshaling
|
|
|
|
// xsd:any elements.
|
|
|
|
func RegisterConstructor (ns ,name string ,fn interface{}){_gf [ns +"\u002f"+name ]=fn };const (OfficeDocumentTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072g\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u006f\u0066\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006de\u006e\u0074";StylesTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006frg\u002fo\u006f\u0078\u006d\u006c\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044o\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068i\u0070\u0073\u002f\u0073\u0074\u0079\u006c\u0065\u0073";ThemeTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0074\u0068\u0065\u006d\u0065";SettingsTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002eo\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006ff\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u0073e\u0074\u0074i\u006eg\u0073";ImageTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0069\u006d\u0061\u0067\u0065";CommentsTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002eo\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006ff\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u0063o\u006d\u006de\u006et\u0073";ThumbnailTypeStrict ="\u0068\u0074\u0074\u0070\u003a/\u002f\u0070\u0075\u0072\u006c\u002eo\u0063\u006c\u0063\u002e\u006f\u0072\u0067/\u006f\u006f\u0078m\u006c\u002f\u006f\u0066f\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u006d\u0065\u0074\u0061\u0064\u0061\u0074\u0061\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c";DrawingTypeStrict ="\u0068t\u0074\u0070\u003a\u002f\u002f\u0070\u0075rl\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006dl\u002f\u006ff\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068ip\u0073\u002f\u0064r\u0061\u0077\u0069\u006e\u0067";ChartTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0063\u0068\u0061\u0072\u0074";ExtendedPropertiesTypeStrict ="\u0068\u0074\u0074\u0070\u003a/\u002f\u0070\u0075\u0072\u006c\u002eo\u0063\u006c\u0063\u002e\u006f\u0072\u0067/\u006f\u006f\u0078m\u006c\u002f\u006f\u0066f\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u0065\u0078\u0074\u0065\u006e\u0064\u0065\u0064\u0050\u0072\u006f\u0070\u0065\u0072\u0074\u0069\u0065\u0073";CustomXMLTypeStrict ="\u0068\u0074\u0074\u0070\u003a/\u002f\u0070\u0075\u0072\u006c.\u006fc\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u007
|
2020-11-09 01:00:18 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Uint8 returns a copy of v as a pointer.
|
|
|
|
func Uint8 (v uint8 )*uint8 {_dc :=v ;return &_dc };
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-10-12 13:59:12 +00:00
|
|
|
// Float32 returns a copy of v as a pointer.
|
2020-12-17 22:07:08 +00:00
|
|
|
func Float32 (v float32 )*float32 {_cce :=v ;return &_cce };
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// CreateElement creates an element with the given namespace and name. It is
|
|
|
|
// used to unmarshal some xsd:any elements to the appropriate concrete type.
|
|
|
|
func CreateElement (start _c .StartElement )(Any ,error ){_fec ,_bg :=_gf [start .Name .Space +"\u002f"+start .Name .Local ];if !_bg {_dd :=&XSDAny {};return _dd ,nil ;};_cg :=_e .ValueOf (_fec );_bgf :=_cg .Call (nil );if len (_bgf )!=1{return nil ,_b .Errorf ("\u0063\u006fn\u0073\u0074\u0072\u0075\u0063t\u006f\u0072\u0020\u0066\u0075n\u0063\u0074\u0069\u006f\u006e\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006f\u006e\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u002c\u0020\u0067\u006f\u0074\u0020\u0025\u0064",len (_bgf ));};_fd ,_bg :=_bgf [0].Interface ().(Any );if !_bg {return nil ,_gd .New ("\u0063o\u006e\u0073t\u0072\u0075\u0063\u0074o\u0072\u0020\u0066u\u006e\u0063\u0074\u0069\u006f\u006e\u0020\u0073\u0068ou\u006c\u0064\u0020r\u0065\u0074u\u0072\u006e\u0020\u0061\u006e\u0079 \u0027\u0041n\u0079\u0027");};return _fd ,nil ;};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Int32 returns a copy of v as a pointer.
|
|
|
|
func Int32 (v int32 )*int32 {_eed :=v ;return &_eed };func (_gde *nsSet )getPrefix (_bbd string )string {if _cf ,_dg :=_feb [_bbd ];_dg {if _ ,_cd :=_gde ._gfc [_cf ];!_cd {_gde ._gfc [_cf ]=_bbd ;_gde ._bfb [_bbd ]=_cf ;_gde ._eac =append (_gde ._eac ,_cf );};return _cf ;};_bbd =_gb .TrimFunc (_bbd ,func (_gbf rune )bool {return !_g .IsLetter (_gbf )});if _ae ,_de :=_gde ._bfb [_bbd ];_de {return _ae ;};_gef :=_gb .Split (_bbd ,"\u002f");_gef =_gb .Split (_gef [len (_gef )-1],"\u003a");_da :=_gef [len (_gef )-1];_cfd :=0;_bcd :=[]byte {};for {if _cfd < len (_da ){_bcd =append (_bcd ,_da [_cfd ]);}else {_bcd =append (_bcd ,'_');};_cfd ++;if _ ,_dba :=_gde ._gfc [string (_bcd )];!_dba {_gde ._gfc [string (_bcd )]=_bbd ;_gde ._bfb [_bbd ]=string (_bcd );_gde ._eac =append (_gde ._eac ,string (_bcd ));return string (_bcd );};};};const MinGoVersion =_ff ;
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Uint32 returns a copy of v as a pointer.
|
|
|
|
func Uint32 (v uint32 )*uint32 {_af :=v ;return &_af };func (_eg nsSet )applyToNode (_bbdc *any ){if _bbdc .XMLName .Space ==""{return ;};_ccc :=_eg .getPrefix (_bbdc .XMLName .Space );_bbdc .XMLName .Space ="";_bbdc .XMLName .Local =_ccc +"\u003a"+_bbdc .XMLName .Local ;_bdd :=_bbdc .Attrs ;_bbdc .Attrs =nil ;for _ ,_fdd :=range _bdd {if _fdd .Name .Space =="\u0078\u006d\u006cn\u0073"{continue ;};if _fdd .Name .Space !=""{_df :=_eg .getPrefix (_fdd .Name .Space );_fdd .Name .Space ="";_fdd .Name .Local =_df +"\u003a"+_fdd .Name .Local ;};_bbdc .Attrs =append (_bbdc .Attrs ,_fdd );};for _ ,_gbg :=range _bbdc .Nodes {_eg .applyToNode (_gbg );};};const (Unknown DocType =iota ;DocTypeSpreadsheet ;DocTypeDocument ;DocTypePresentation ;);
|
2020-10-12 13:59:12 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Float64 returns a copy of v as a pointer.
|
|
|
|
func Float64 (v float64 )*float64 {_gce :=v ;return &_gce };func _ag (_gcb *any ){for _ ,_ea :=range _gcb .Nodes {_ag (_ea );};};var _ba =map[string ]bool {"\u0077\u0031\u0030":true ,"\u0077\u0031\u0034":true ,"\u0077\u0070\u0031\u0034":true ,"\u0077\u0031\u0035":true ,"\u0078\u0031\u0035a\u0063":true ,"\u0077\u0031\u0036s\u0065":true ,"\u0077\u0031\u0036\u0063\u0069\u0064":true ,"\u0077\u0031\u0036":true ,"\u0077\u0031\u0036\u0063\u0065\u0078":true };const (ContentTypesFilename ="\u005b\u0043\u006f\u006ete\u006e\u0074\u005f\u0054\u0079\u0070\u0065\u0073\u005d\u002e\u0078\u006d\u006c";BaseRelsFilename ="_\u0072\u0065\u006c\u0073\u002f\u002e\u0072\u0065\u006c\u0073";);func _ead (_bbb []*XSDAny )[]*any {_cdd :=[]*any {};for _ ,_dfa :=range _bbb {_ace :=&any {};_ace .XMLName =_dfa .XMLName ;_dca :=[]_c .Attr {};for _ ,_bea :=range _dfa .Attrs {if _bea .Name .Local !="\u0078\u006d\u006cn\u0073"{_dca =append (_dca ,_bea );};};_ace .Attrs =_dca ;_ace .Data =_dfa .Data ;_ace .Nodes =_ead (_dfa .Nodes );_cdd =append (_cdd ,_ace );};return _cdd ;};
|
2020-10-12 13:59:12 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// XSDAny is used to marshal/unmarshal xsd:any types in the OOXML schema.
|
|
|
|
type XSDAny struct{XMLName _c .Name ;Attrs []_c .Attr ;Data []byte ;Nodes []*XSDAny ;};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// MarshalXML implements the xml.Marshaler interface.
|
|
|
|
func (_ef *XSDAny )MarshalXML (e *_c .Encoder ,start _c .StartElement )error {start .Name =_ef .XMLName ;start .Attr =_ef .Attrs ;_afd :=any {};_afd .XMLName =_ef .XMLName ;_afd .Attrs =_ef .Attrs ;_afd .Data =_ef .Data ;_afd .Nodes =_ead (_ef .Nodes );_gdg :=[]string {};_cgb :=false ;_efg :=nsSet {_bfb :map[string ]string {},_gfc :map[string ]string {}};_ef .collectNS (&_efg );_efg .applyToNode (&_afd );for _ ,_bfa :=range _efg ._eac {if _ ,_beab :=_ba [_bfa ];_beab {_gdg =append (_gdg ,_bfa );};_ffd :=_efg ._gfc [_bfa ];_afd .Attrs =append (_afd .Attrs ,_c .Attr {Name :_c .Name {Local :"\u0078\u006d\u006c\u006e\u0073\u003a"+_bfa },Value :_ffd });if _bfa =="\u006d\u0063"{_cgb =true ;};};if _cgb &&len (_gdg )> 0{_afd .Attrs =append (_afd .Attrs ,_c .Attr {Name :_c .Name {Local :"\u006d\u0063\u003aI\u0067\u006e\u006f\u0072\u0061\u0062\u006c\u0065"},Value :_gb .Join (_gdg ,"\u0020")});};return e .Encode (&_afd );};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-11-09 01:00:18 +00:00
|
|
|
// Bool returns a copy of v as a pointer.
|
2020-12-17 22:07:08 +00:00
|
|
|
func Bool (v bool )*bool {_cb :=v ;return &_cb };
|
2020-08-31 22:58:25 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// DisableLogging sets the Log function to a no-op so that any log messages are
|
|
|
|
// silently discarded.
|
|
|
|
func DisableLogging (){Log =func (string ,...interface{}){}};var Log =_fe .Printf ;
|
|
|
|
|
|
|
|
// Int64 returns a copy of v as a pointer.
|
|
|
|
func Int64 (v int64 )*int64 {_afb :=v ;return &_afb };func (_bgd *XSDAny )collectNS (_bcdc *nsSet ){if _bgd .XMLName .Space !=""{_bcdc .getPrefix (_bgd .XMLName .Space );};for _ ,_geb :=range _bgd .Attrs {if _geb .Name .Space !=""&&_geb .Name .Space !="\u0078\u006d\u006cn\u0073"{_bcdc .getPrefix (_geb .Name .Space );};};for _ ,_cbd :=range _bgd .Nodes {_cbd .collectNS (_bcdc );};};const _ff =true ;func _gg (_afa []*any )[]*XSDAny {_ca :=[]*XSDAny {};for _ ,_dbc :=range _afa {_bad :=&XSDAny {};_bad .XMLName =_dbc .XMLName ;_bad .Attrs =_dbc .Attrs ;_bad .Data =_dbc .Data ;_bad .Nodes =_gg (_dbc .Nodes );_ca =append (_ca ,_bad );};return _ca ;};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-11-09 01:00:18 +00:00
|
|
|
// UnmarshalXML implements the xml.Unmarshaler interface.
|
2020-12-17 22:07:08 +00:00
|
|
|
func (_edg *XSDAny )UnmarshalXML (d *_c .Decoder ,start _c .StartElement )error {_cgf :=any {};if _ge :=d .DecodeElement (&_cgf ,&start );_ge !=nil {return _ge ;};_ag (&_cgf );_edg .XMLName =_cgf .XMLName ;_edg .Attrs =_cgf .Attrs ;_edg .Data =_cgf .Data ;_edg .Nodes =_gg (_cgf .Nodes );return nil ;};
|
|
|
|
|
|
|
|
// String returns a copy of v as a pointer.
|
|
|
|
func String (v string )*string {_bf :=v ;return &_bf };
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-11-09 01:00:18 +00:00
|
|
|
// Uint64 returns a copy of v as a pointer.
|
2020-12-17 22:07:08 +00:00
|
|
|
func Uint64 (v uint64 )*uint64 {_aa :=v ;return &_aa };var _feb =func ()map[string ]string {_bbg :=map[string ]string {};for _bdg ,_fda :=range _bc {_bbg [_fda ]=_bdg ;};return _bbg ;}();
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// RelativeFilename returns a filename relative to the source file referenced
|
|
|
|
// from a relationships file. Index is used in some cases for files which there
|
|
|
|
// may be more than one of (e.g. worksheets/drawings/charts)
|
|
|
|
func RelativeFilename (dt DocType ,relToTyp ,typ string ,index int )string {_bgfa :=AbsoluteFilename (dt ,typ ,index );if relToTyp ==""{return _bgfa ;};_eb :=AbsoluteFilename (dt ,relToTyp ,index );_bb :=_gb .Split (_eb ,"\u002f");_bd :=_gb .Split (_bgfa ,"\u002f");_ebf :=0;for _ee :=0;_ee < len (_bb );_ee ++{if _bb [_ee ]==_bd [_ee ]{_ebf ++;};if _ee +1==len (_bd ){break ;};};_bb =_bb [_ebf :];_bd =_bd [_ebf :];_ac :=len (_bb )-1;if _ac > 0{return _d .RepeatString ("\u002e\u002e\u002f",_ac )+_gb .Join (_bd ,"\u002f");};return _gb .Join (_bd ,"\u002f");};
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// AbsoluteFilename returns the full path to a file from the root of the zip
|
|
|
|
// container. Index is used in some cases for files which there may be more than
|
|
|
|
// one of (e.g. worksheets/drawings/charts)
|
|
|
|
func AbsoluteFilename (dt DocType ,typ string ,index int )string {switch typ {case CorePropertiesType :return "\u0064\u006f\u0063\u0050\u0072\u006f\u0070\u0073\u002f\u0063\u006f\u0072e\u002e\u0078\u006d\u006c";case CustomPropertiesType :return "\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c";case ExtendedPropertiesType ,ExtendedPropertiesTypeStrict :return "\u0064\u006fc\u0050\u0072\u006fp\u0073\u002f\u0061\u0070\u0070\u002e\u0078\u006d\u006c";case ThumbnailType ,ThumbnailTypeStrict :return "\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067";case CustomXMLType :return _b .Sprintf ("c\u0075s\u0074\u006f\u006d\u0058\u006d\u006c\u002f\u0069t\u0065\u006d\u0025\u0064.x\u006d\u006c",index );case PresentationPropertiesType :return "\u0070\u0070\u0074\u002f\u0070\u0072\u0065\u0073\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c";case ViewPropertiesType :switch dt {case DocTypePresentation :return "\u0070\u0070\u0074\u002f\u0076\u0069\u0065\u0077\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c";case DocTypeSpreadsheet :return "\u0078\u006c/\u0076\u0069\u0065w\u0050\u0072\u006f\u0070\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077o\u0072d\u002f\u0076\u0069\u0065\u0077P\u0072\u006fp\u0073\u002e\u0078\u006d\u006c";};case TableStylesType :switch dt {case DocTypePresentation :return "\u0070\u0070\u0074\u002fta\u0062\u006c\u0065\u0053\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypeSpreadsheet :return "\u0078l\u002ft\u0061\u0062\u006c\u0065\u0053t\u0079\u006ce\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "w\u006fr\u0064\u002f\u0074\u0061\u0062\u006c\u0065\u0053t\u0079\u006c\u0065\u0073.x\u006d\u006c";};case HyperLinkType :return "";case OfficeDocumentType ,OfficeDocumentTypeStrict :switch dt {case DocTypeSpreadsheet :return "\u0078l\u002fw\u006f\u0072\u006b\u0062\u006f\u006f\u006b\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077\u006f\u0072\u0064\u002f\u0064\u006f\u0063\u0075\u006d\u0065\u006et\u002e\u0078\u006d\u006c";case DocTypePresentation :return "p\u0070t\u002f\u0070\u0072\u0065\u0073\u0065\u006e\u0074a\u0074\u0069\u006f\u006e.x\u006d\u006c";default:Log ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case ThemeType ,ThemeTypeStrict ,ThemeContentType :switch dt {case DocTypeSpreadsheet :return _b .Sprintf ("x\u006c/\u0074\u0068\u0065\u006d\u0065\u002f\u0074\u0068e\u006d\u0065\u0025\u0064.x\u006d\u006c",index );case DocTypeDocument :return _b .Sprintf ("\u0077\u006f\u0072\u0064/t\u0068\u0065\u006d\u0065\u002f\u0074\u0068\u0065\u006d\u0065\u0025\u0064\u002e\u0078m\u006c",index );case DocTypePresentation :return _b .Sprintf ("p\u0070\u0074\u002f\u0074he\u006de\u002f\u0074\u0068\u0065\u006de\u0025\u0064\u002e\u0078\u006d\u006c",index );default:Log ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case StylesType ,StylesTypeStrict :switch dt {case DocTypeSpreadsheet :return "\u0078\u006c\u002f\u0073\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077o\u0072d\u002f\u0073\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypePresentation :return "\u0070\u0070\u0074\u002f\u0073\u0074\u0079\u006c\u0065s\u002e\u0078\u006d\u006c";default:Log ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case ChartType ,ChartTypeStrict ,ChartContentType :switch dt {case DocTypeSpreadsheet :return _b .Sprintf ("x\u006c\u002f\u0063\u0068ar\u0074s\u002f\u0063\u0068\u0061\u0072t\u0025\u0064\u002e\u0078\u006d\u006c",index );case DocTypeDocument :return _b .Sprintf ("\u0077\u006f\u0072d/\u0063\u0068\u
|
2020-08-23 14:15:53 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// NeedsSpacePreserve returns true if the string has leading or trailing space.
|
|
|
|
func NeedsSpacePreserve (s string )bool {if len (s )==0{return false ;};switch s [0]{case '\t','\n','\v','\f','\r',' ',0x85,0xA0:return true ;};switch s [len (s )-1]{case '\t','\n','\v','\f','\r',' ',0x85,0xA0:return true ;};return false ;};var _bc =map[string ]string {"\u0061":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065m\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006cf\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067m\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u006d\u0061\u0069\u006e","\u0064\u0063":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0072\u0067/\u0064c\u002f\u0065\u006c\u0065\u006d\u0065\u006e\u0074\u0073\u002f\u0031\u002e\u0031\u002f","\u0064c\u0074\u0065\u0072\u006d\u0073":"\u0068t\u0074\u0070\u003a\u002f/\u0070\u0075\u0072\u006c\u002eo\u0072g\u002fd\u0063\u002f\u0074\u0065\u0072\u006d\u0073/","\u006d\u0063":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u006d\u0061\u0072\u006b\u0075\u0070\u002d\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006ci\u0074\u0079\u002f\u0032\u00300\u0036","\u006d\u006f":"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068e\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002ec\u006f\u006d\u002f\u006f\u0066fi\u0063\u0065\u002f\u006d\u0061\u0063\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0032\u0030\u0030\u0038\u002f\u006d\u0061\u0069\u006e","\u0077":"ht\u0074\u0070:\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073.\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063\u0065s\u0073i\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u00306\u002fm\u0061\u0069n","\u0077\u0031\u0030":"\u0075\u0072n\u003a\u0073\u0063\u0068e\u006d\u0061s\u002d\u006d\u0069\u0063\u0072\u006f\u0073\u006ff\u0074\u002d\u0063\u006f\u006d\u003a\u006f\u0066\u0066\u0069\u0063\u0065:\u0077\u006f\u0072\u0064","\u0077\u0031\u0034":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0031\u0030\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u0031\u0035":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0031\u0032\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u006e\u0065":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0030\u0036\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u0070":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072a\u0077\u0069\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069n\u0067\u0044\u0072\u0061\u0077i\u006e\u0067","\u0077\u0070\u0031\u0034":"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006d\u0069\u0063\u0072o\u0073\u006f\u0066\u0074\u002ec\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006fr\u0064\u002f\u0032\u0030\u0031\u0030\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063e\u0073\u0073\u0069\u006e\u0067\u0044\u0072\u0061w\u0069\u006e\u0067","\u0077\u0070\u0063":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006d\u0069\u0063\u0072\u006f\u0073\u
|
2020-08-31 22:58:25 +00:00
|
|
|
|
2020-10-12 13:59:12 +00:00
|
|
|
// DocType represents one of the three document types supported (docx/xlsx/pptx)
|
2020-12-17 22:07:08 +00:00
|
|
|
type DocType byte ;var _gf =map[string ]interface{}{};
|
2020-08-31 22:58:25 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// RelativeImageFilename returns an image filename relative to the source file referenced
|
|
|
|
// from a relationships file. It is identical to RelativeFilename but is used particularly for images
|
|
|
|
// in order to handle different image formats.
|
|
|
|
func RelativeImageFilename (dt DocType ,relToTyp ,typ string ,index int ,fileExtension string )string {_db :=RelativeFilename (dt ,relToTyp ,typ ,index );return _db [0:len (_db )-3]+fileExtension ;};
|
2020-08-31 22:58:25 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Stringf formats according to a format specifier and returns a pointer to the
|
|
|
|
// resulting string.
|
|
|
|
func Stringf (f string ,args ...interface{})*string {_ccd :=_b .Sprintf (f ,args ...);return &_ccd };
|
2020-08-31 22:58:25 +00:00
|
|
|
|
2020-12-17 22:07:08 +00:00
|
|
|
// Any is the interface used for marshaling/unmarshaling xsd:any
|
|
|
|
type Any interface{MarshalXML (_cc *_c .Encoder ,_gc _c .StartElement )error ;UnmarshalXML (_a *_c .Decoder ,_ab _c .StartElement )error ;};
|