mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2024-12-29 10:36:31 +00:00
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
|
package form
|
||
|
|
||
|
import (
|
||
|
"reflect"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
blank = ""
|
||
|
ignore = "-"
|
||
|
fieldNS = "Field Namespace:"
|
||
|
errorText = " ERROR:"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
timeType = reflect.TypeOf(time.Time{})
|
||
|
)
|
||
|
|
||
|
// Mode specifies which mode the form decoder is to run
|
||
|
type Mode uint8
|
||
|
|
||
|
const (
|
||
|
|
||
|
// ModeImplicit tries to parse values for all
|
||
|
// fields that do not have an ignore '-' tag
|
||
|
ModeImplicit Mode = iota
|
||
|
|
||
|
// ModeExplicit only parses values for field with a field tag
|
||
|
// and that tag is not the ignore '-' tag
|
||
|
ModeExplicit
|
||
|
)
|
||
|
|
||
|
// AnonymousMode specifies how data should be rolled up
|
||
|
// or separated from anonymous structs
|
||
|
type AnonymousMode uint8
|
||
|
|
||
|
const (
|
||
|
// AnonymousEmbed embeds anonymous data when encoding
|
||
|
// eg. type A struct { Field string }
|
||
|
// type B struct { A, Field string }
|
||
|
// encode results: url.Values{"Field":[]string{"B FieldVal", "A FieldVal"}}
|
||
|
AnonymousEmbed AnonymousMode = iota
|
||
|
|
||
|
// AnonymousSeparate does not embed anonymous data when encoding
|
||
|
// eg. type A struct { Field string }
|
||
|
// type B struct { A, Field string }
|
||
|
// encode results: url.Values{"Field":[]string{"B FieldVal"}, "A.Field":[]string{"A FieldVal"}}
|
||
|
AnonymousSeparate
|
||
|
)
|