forked from lug/matterbridge
		
	Use mattermost v5 module (#1192)
This commit is contained in:
		
							
								
								
									
										82
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/plural_translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/plural_translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | ||||
| package translation | ||||
|  | ||||
| import ( | ||||
| 	"github.com/mattermost/go-i18n/i18n/language" | ||||
| ) | ||||
|  | ||||
| type pluralTranslation struct { | ||||
| 	id        string | ||||
| 	templates map[language.Plural]*template | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) MarshalInterface() interface{} { | ||||
| 	return map[string]interface{}{ | ||||
| 		"id":          pt.id, | ||||
| 		"translation": pt.templates, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) MarshalFlatInterface() interface{} { | ||||
| 	return pt.templates | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) ID() string { | ||||
| 	return pt.id | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) Template(pc language.Plural) *template { | ||||
| 	return pt.templates[pc] | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) UntranslatedCopy() Translation { | ||||
| 	return &pluralTranslation{pt.id, make(map[language.Plural]*template)} | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) Normalize(l *language.Language) Translation { | ||||
| 	// Delete plural categories that don't belong to this language. | ||||
| 	for pc := range pt.templates { | ||||
| 		if _, ok := l.Plurals[pc]; !ok { | ||||
| 			delete(pt.templates, pc) | ||||
| 		} | ||||
| 	} | ||||
| 	// Create map entries for missing valid categories. | ||||
| 	for pc := range l.Plurals { | ||||
| 		if _, ok := pt.templates[pc]; !ok { | ||||
| 			pt.templates[pc] = mustNewTemplate("") | ||||
| 		} | ||||
| 	} | ||||
| 	return pt | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) Backfill(src Translation) Translation { | ||||
| 	for pc, t := range pt.templates { | ||||
| 		if (t == nil || t.src == "") && src != nil { | ||||
| 			pt.templates[pc] = src.Template(language.Other) | ||||
| 		} | ||||
| 	} | ||||
| 	return pt | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) Merge(t Translation) Translation { | ||||
| 	other, ok := t.(*pluralTranslation) | ||||
| 	if !ok || pt.ID() != t.ID() { | ||||
| 		return t | ||||
| 	} | ||||
| 	for pluralCategory, template := range other.templates { | ||||
| 		if template != nil && template.src != "" { | ||||
| 			pt.templates[pluralCategory] = template | ||||
| 		} | ||||
| 	} | ||||
| 	return pt | ||||
| } | ||||
|  | ||||
| func (pt *pluralTranslation) Incomplete(l *language.Language) bool { | ||||
| 	for pc := range l.Plurals { | ||||
| 		if t := pt.templates[pc]; t == nil || t.src == "" { | ||||
| 			return true | ||||
| 		} | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| var _ = Translation(&pluralTranslation{}) | ||||
							
								
								
									
										61
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/single_translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/single_translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,61 @@ | ||||
| package translation | ||||
|  | ||||
| import ( | ||||
| 	"github.com/mattermost/go-i18n/i18n/language" | ||||
| ) | ||||
|  | ||||
| type singleTranslation struct { | ||||
| 	id       string | ||||
| 	template *template | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) MarshalInterface() interface{} { | ||||
| 	return map[string]interface{}{ | ||||
| 		"id":          st.id, | ||||
| 		"translation": st.template, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) MarshalFlatInterface() interface{} { | ||||
| 	return map[string]interface{}{"other": st.template} | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) ID() string { | ||||
| 	return st.id | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) Template(pc language.Plural) *template { | ||||
| 	return st.template | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) UntranslatedCopy() Translation { | ||||
| 	return &singleTranslation{st.id, mustNewTemplate("")} | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) Normalize(language *language.Language) Translation { | ||||
| 	return st | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) Backfill(src Translation) Translation { | ||||
| 	if (st.template == nil || st.template.src == "") && src != nil { | ||||
| 		st.template = src.Template(language.Other) | ||||
| 	} | ||||
| 	return st | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) Merge(t Translation) Translation { | ||||
| 	other, ok := t.(*singleTranslation) | ||||
| 	if !ok || st.ID() != t.ID() { | ||||
| 		return t | ||||
| 	} | ||||
| 	if other.template != nil && other.template.src != "" { | ||||
| 		st.template = other.template | ||||
| 	} | ||||
| 	return st | ||||
| } | ||||
|  | ||||
| func (st *singleTranslation) Incomplete(l *language.Language) bool { | ||||
| 	return st.template == nil || st.template.src == "" | ||||
| } | ||||
|  | ||||
| var _ = Translation(&singleTranslation{}) | ||||
							
								
								
									
										65
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/template.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/template.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| package translation | ||||
|  | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"encoding" | ||||
| 	"strings" | ||||
| 	gotemplate "text/template" | ||||
| ) | ||||
|  | ||||
| type template struct { | ||||
| 	tmpl *gotemplate.Template | ||||
| 	src  string | ||||
| } | ||||
|  | ||||
| func newTemplate(src string) (*template, error) { | ||||
| 	if src == "" { | ||||
| 		return new(template), nil | ||||
| 	} | ||||
|  | ||||
| 	var tmpl template | ||||
| 	err := tmpl.parseTemplate(src) | ||||
| 	return &tmpl, err | ||||
| } | ||||
|  | ||||
| func mustNewTemplate(src string) *template { | ||||
| 	t, err := newTemplate(src) | ||||
| 	if err != nil { | ||||
| 		panic(err) | ||||
| 	} | ||||
| 	return t | ||||
| } | ||||
|  | ||||
| func (t *template) String() string { | ||||
| 	return t.src | ||||
| } | ||||
|  | ||||
| func (t *template) Execute(args interface{}) string { | ||||
| 	if t.tmpl == nil { | ||||
| 		return t.src | ||||
| 	} | ||||
| 	var buf bytes.Buffer | ||||
| 	if err := t.tmpl.Execute(&buf, args); err != nil { | ||||
| 		return err.Error() | ||||
| 	} | ||||
| 	return buf.String() | ||||
| } | ||||
|  | ||||
| func (t *template) MarshalText() ([]byte, error) { | ||||
| 	return []byte(t.src), nil | ||||
| } | ||||
|  | ||||
| func (t *template) UnmarshalText(src []byte) error { | ||||
| 	return t.parseTemplate(string(src)) | ||||
| } | ||||
|  | ||||
| func (t *template) parseTemplate(src string) (err error) { | ||||
| 	t.src = src | ||||
| 	if strings.Contains(src, "{{") { | ||||
| 		t.tmpl, err = gotemplate.New(src).Parse(src) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| var _ = encoding.TextMarshaler(&template{}) | ||||
| var _ = encoding.TextUnmarshaler(&template{}) | ||||
							
								
								
									
										84
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								vendor/github.com/mattermost/go-i18n/i18n/translation/translation.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,84 @@ | ||||
| // Package translation defines the interface for a translation. | ||||
| package translation | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/mattermost/go-i18n/i18n/language" | ||||
| ) | ||||
|  | ||||
| // Translation is the interface that represents a translated string. | ||||
| type Translation interface { | ||||
| 	// MarshalInterface returns the object that should be used | ||||
| 	// to serialize the translation. | ||||
| 	MarshalInterface() interface{} | ||||
| 	MarshalFlatInterface() interface{} | ||||
| 	ID() string | ||||
| 	Template(language.Plural) *template | ||||
| 	UntranslatedCopy() Translation | ||||
| 	Normalize(language *language.Language) Translation | ||||
| 	Backfill(src Translation) Translation | ||||
| 	Merge(Translation) Translation | ||||
| 	Incomplete(l *language.Language) bool | ||||
| } | ||||
|  | ||||
| // SortableByID implements sort.Interface for a slice of translations. | ||||
| type SortableByID []Translation | ||||
|  | ||||
| func (a SortableByID) Len() int           { return len(a) } | ||||
| func (a SortableByID) Swap(i, j int)      { a[i], a[j] = a[j], a[i] } | ||||
| func (a SortableByID) Less(i, j int) bool { return a[i].ID() < a[j].ID() } | ||||
|  | ||||
| // NewTranslation reflects on data to create a new Translation. | ||||
| // | ||||
| // data["id"] must be a string and data["translation"] must be either a string | ||||
| // for a non-plural translation or a map[string]interface{} for a plural translation. | ||||
| func NewTranslation(data map[string]interface{}) (Translation, error) { | ||||
| 	id, ok := data["id"].(string) | ||||
| 	if !ok { | ||||
| 		return nil, fmt.Errorf(`missing "id" key`) | ||||
| 	} | ||||
| 	var pluralObject map[string]interface{} | ||||
| 	switch translation := data["translation"].(type) { | ||||
| 	case string: | ||||
| 		tmpl, err := newTemplate(translation) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		return &singleTranslation{id, tmpl}, nil | ||||
| 	case map[interface{}]interface{}: | ||||
| 		// The YAML parser uses interface{} keys so we first convert them to string keys. | ||||
| 		pluralObject = make(map[string]interface{}) | ||||
| 		for k, v := range translation { | ||||
| 			kstr, ok := k.(string) | ||||
| 			if !ok { | ||||
| 				return nil, fmt.Errorf(`invalid plural category type %T; expected string`, k) | ||||
| 			} | ||||
| 			pluralObject[kstr] = v | ||||
| 		} | ||||
| 	case map[string]interface{}: | ||||
| 		pluralObject = translation | ||||
| 	case nil: | ||||
| 		return nil, fmt.Errorf(`missing "translation" key`) | ||||
| 	default: | ||||
| 		return nil, fmt.Errorf(`unsupported type for "translation" key %T`, translation) | ||||
| 	} | ||||
|  | ||||
| 	templates := make(map[language.Plural]*template, len(pluralObject)) | ||||
| 	for k, v := range pluralObject { | ||||
| 		pc, err := language.NewPlural(k) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		str, ok := v.(string) | ||||
| 		if !ok { | ||||
| 			return nil, fmt.Errorf(`plural category "%s" has value of type %T; expected string`, pc, v) | ||||
| 		} | ||||
| 		tmpl, err := newTemplate(str) | ||||
| 		if err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		templates[pc] = tmpl | ||||
| 	} | ||||
| 	return &pluralTranslation{id, templates}, nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Wim
					Wim