You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.4 KiB
80 lines
1.4 KiB
// Code generated by gitoa.ru/go-4devs/mime and sourse {{.Source}}
|
|
package {{.MimePackage}}
|
|
|
|
import (
|
|
"encoding"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
var (
|
|
_ encoding.TextUnmarshaler = (*Mime)(nil)
|
|
_ encoding.TextMarshaler = (*Mime)(nil)
|
|
)
|
|
|
|
type Mime int
|
|
|
|
type MimeTypes []Mime
|
|
|
|
func (v Mime) Is(types ...Mime) bool {
|
|
for _, mime := range types {
|
|
if mime == v {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func (v Mime) MarshalText() ([]byte, error) {
|
|
return []byte(v.String()), nil
|
|
}
|
|
|
|
func (s *Mime) UnmarshalText(text []byte) error {
|
|
mime := MimeFromString(strings.ToLower(string(text)))
|
|
*s = mime
|
|
|
|
return nil
|
|
}
|
|
|
|
func (v Mime) String() string {
|
|
switch v {
|
|
case {{ name .MimePrefix "unrecognized" }}:
|
|
return "unrecognized"
|
|
{{- range $value := .Mimes }}
|
|
case {{ name $.MimePrefix $value.Name }}:
|
|
return "{{- $value.Name -}}"
|
|
{{- end}}
|
|
}
|
|
|
|
return fmt.Sprintf("Mime(%d)",v)
|
|
}
|
|
|
|
func (v Mime) ExtTypes() ExtTypes{
|
|
switch v {
|
|
{{- range $value := .Mimes }}
|
|
case {{ name $.MimePrefix $value.Name }}:
|
|
return []Ext{ {{- value $.ExtPrefix $value.Value -}} }
|
|
{{- end}}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
const (
|
|
{{ name .MimePrefix "unrecognized" }} Mime = 0
|
|
{{- range $value := .Mimes }}
|
|
{{ name $.MimePrefix $value.Name }} Mime = {{ $value.ID }}
|
|
{{- end}}
|
|
)
|
|
|
|
func MimeFromString(name string) Mime {
|
|
switch name {
|
|
{{- range $value := .Mimes }}
|
|
case "{{- $value.Name -}}":
|
|
return {{ name $.MimePrefix $value.Name }}
|
|
{{- end}}
|
|
}
|
|
|
|
return {{ name .MimePrefix "unrecognized" }}
|
|
}
|
|
|