Documentation ¶
Index ¶
- Constants
- Variables
- func DateTimeFromString(env Environment, str string, fillTime bool) (time.Time, error)
- func DateTimeToISO(date time.Time) string
- func DateToUTCRange(d time.Time, tz *time.Location) (time.Time, time.Time)
- func DaysBetween(date1 time.Time, date2 time.Time) int
- func DeriveCountryFromTel(number string) string
- func Indent(s string, prefix string) string
- func IsNil(v interface{}) bool
- func IsPossibleLocationPath(str string) bool
- func IsUUIDv4(s string) bool
- func JSONDecodeGeneric(data []byte) (interface{}, error)
- func JSONMarshal(v interface{}) ([]byte, error)
- func JSONMarshalPretty(v interface{}) ([]byte, error)
- func MaxInt(x, y int) int
- func MinInt(x, y int) int
- func MonthsBetween(date1 time.Time, date2 time.Time) int
- func NewSeededRand(seed int64) *rand.Rand
- func Now() time.Time
- func PrefixOverlap(s1, s2 string) int
- func RandDecimal() decimal.Decimal
- func RandIntN(n int) int
- func ReadTypeFromJSON(data []byte) (string, error)
- func SetRand(rnd *rand.Rand)
- func SetTimeSource(source TimeSource)
- func SetUUIDGenerator(generator UUIDGenerator)
- func Snakify(text string) string
- func StringSliceContains(slice []string, str string, caseSensitive bool) bool
- func StringSlices(s string, indices []int) []string
- func ToGoDateFormat(format string, mode FormattingMode) (string, error)
- func TokenizeString(str string) []string
- func TokenizeStringByChars(str string, chars string) []string
- func UnmarshalAndValidate(data []byte, obj interface{}) error
- func UnmarshalAndValidateWithLimit(reader io.ReadCloser, s interface{}, limit int64) error
- func UnmarshalArray(data json.RawMessage) ([]json.RawMessage, error)
- func Validate(obj interface{}) error
- type Attachment
- type Country
- type Date
- type DateFormat
- type Environment
- type EnvironmentBuilder
- func (b *EnvironmentBuilder) Build() Environment
- func (b *EnvironmentBuilder) WithAllowedLanguages(allowedLanguages []Language) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithDateFormat(dateFormat DateFormat) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithDefaultCountry(defaultCountry Country) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithDefaultLanguage(defaultLanguage Language) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithMaxValueLength(maxValueLength int) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithNumberFormat(numberFormat *NumberFormat) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithRedactionPolicy(redactionPolicy RedactionPolicy) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithTimeFormat(timeFormat TimeFormat) *EnvironmentBuilder
- func (b *EnvironmentBuilder) WithTimezone(timezone *time.Location) *EnvironmentBuilder
- type FormattingMode
- type HTTPClient
- type Language
- type Location
- type LocationHierarchy
- type LocationLevel
- type LocationPath
- type NumberFormat
- type RedactionPolicy
- type TimeFormat
- type TimeOfDay
- type TimeSource
- type Typed
- type TypedEnvelope
- type UUID
- type UUIDGenerator
- type ValidationErrors
Constants ¶
const ( DateFormatYearMonthDay DateFormat = "YYYY-MM-DD" DateFormatMonthDayYear DateFormat = "MM-DD-YYYY" DateFormatDayMonthYear DateFormat = "DD-MM-YYYY" TimeFormatHourMinute TimeFormat = "tt:mm" TimeFormatHourMinuteAmPm TimeFormat = "h:mm aa" TimeFormatHourMinuteSecond TimeFormat = "tt:mm:ss" TimeFormatHourMinuteSecondAmPm TimeFormat = "h:mm:ss aa" )
standard date and time formats
const (
LocationPathSeparator = ">"
)
Variables ¶
var DefaultNumberFormat = &NumberFormat{DecimalSymbol: `.`, DigitGroupingSymbol: `,`}
DefaultNumberFormat is the default number formatting, e.g. 1,234.567
DefaultRand is the default rand for calls to Rand()
var NilCountry = Country("")
NilCountry represents our nil, or unknown country
var NilLanguage = Language("")
NilLanguage represents our nil, or unknown language
var UUID4OnlyRegex = regexp.MustCompile(`^` + UUID4Regex.String() + `$`)
var UUID4Regex = regexp.MustCompile(`[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}`)
var Validator = validator.New()
Validator is our system validator, it can be shared across threads
var ZeroDate = Date{}
ZeroDate is our uninitialized date value
var ZeroDateTime = time.Time{}
ZeroDateTime is our uninitialized datetime value
var ZeroTimeOfDay = TimeOfDay{}
ZeroTimeOfDay is our uninitialized time of day value
Functions ¶
func DateTimeFromString ¶ added in v0.28.4
DateTimeFromString returns a datetime constructed from the passed in string, or an error if we are unable to extract one
func DateTimeToISO ¶ added in v0.28.4
DateTimeToISO converts the passed in time.Time to a string in ISO8601 format
func DateToUTCRange ¶ added in v0.4.0
DateToUTCRange returns the UTC time range of the given day
func DaysBetween ¶
DaysBetween returns the number of calendar days (an int) between the two dates. Note that if these are in different timezones then the local calendar day is used for each and the difference is calculated from that.
func DeriveCountryFromTel ¶ added in v0.14.7
DeriveCountryFromTel attempts to derive a country code (e.g. RW) from a phone number
func IsNil ¶ added in v0.4.0
func IsNil(v interface{}) bool
IsNil returns whether the given object is nil or an interface to a nil
func IsPossibleLocationPath ¶ added in v0.32.0
IsPossibleLocationPath returns whether the given string could be a location path
func IsUUIDv4 ¶ added in v0.39.4
IsUUIDv4 returns whether the given string contains only a valid v4 UUID
func JSONDecodeGeneric ¶ added in v0.23.0
JSONDecodeGeneric decodes the given JSON as a generic map or slice
func JSONMarshal ¶ added in v0.9.6
JSONMarshal marshals the given object to JSON
func JSONMarshalPretty ¶ added in v0.9.6
JSONMarshalPretty marshals the given object to pretty JSON
func MonthsBetween ¶
MonthsBetween returns the number of calendar months (an int) between the two dates. Note that if these are in different timezones then the local calendar day is used for each and the difference is calculated from that.
func NewSeededRand ¶ added in v0.8.0
NewSeededRand creates a new seeded rand
func PrefixOverlap ¶ added in v0.14.7
PrefixOverlap returns the number of prefix characters which s1 and s2 have in common
func RandDecimal ¶ added in v0.8.0
RandDecimal returns a random decimal in the range [0.0, 1.0)
func ReadTypeFromJSON ¶ added in v0.22.0
ReadTypeFromJSON reads a field called `type` from the given JSON
func SetTimeSource ¶ added in v0.10.20
func SetTimeSource(source TimeSource)
SetTimeSource sets the time source used by Now()
func SetUUIDGenerator ¶ added in v0.6.0
func SetUUIDGenerator(generator UUIDGenerator)
SetUUIDGenerator sets the generator used by UUID4()
func Snakify ¶
Snakify turns the passed in string into a context reference. We replace all whitespace characters with _ and replace any duplicate underscores
func StringSliceContains ¶ added in v0.30.2
StringSliceContains determines whether the given slice of strings contains the given string
func StringSlices ¶ added in v0.28.3
StringSlices returns the slices of s defined by pairs of indexes in indices
func ToGoDateFormat ¶
func ToGoDateFormat(format string, mode FormattingMode) (string, error)
ToGoDateFormat converts the passed in format to a GoLang format string.
If mode is DateOnlyFormatting or DateTimeFormatting, the following sequences are accepted:
`YY` - last two digits of year 0-99 `YYYY` - four digits of your 0000-9999 `M` - month 1-12 `MM` - month 01-12 `D` - day of month, 1-31 `DD` - day of month, zero padded 0-31
If mode is TimeOnlyFormatting or DateTimeFormatting, the following sequences are accepted:
`h` - hour of the day 1-12 `hh` - hour of the day 01-12 `tt` - twenty four hour of the day 01-23 `m` - minute 0-59 `mm` - minute 00-59 `s` - second 0-59 `ss` - second 00-59 `fff` - milliseconds `ffffff` - microseconds `fffffffff` - nanoseconds `aa` - am or pm `AA` - AM or PM `Z` - hour and minute offset from UTC, or Z for UTC `ZZZ` - hour and minute offset from UTC
ignored chars: ' ', ':', ',', 'T', '-', '_', '/'
func TokenizeString ¶
TokenizeString returns the words in the passed in string, split by non word characters including emojis
func TokenizeStringByChars ¶ added in v0.10.17
TokenizeStringByChars returns the words in the passed in string, split by the chars in the given string
func UnmarshalAndValidate ¶ added in v0.4.0
UnmarshalAndValidate is a convenience function to unmarshal an object and validate it
func UnmarshalAndValidateWithLimit ¶ added in v0.13.1
func UnmarshalAndValidateWithLimit(reader io.ReadCloser, s interface{}, limit int64) error
UnmarshalAndValidateWithLimit unmarsmals a struct with a limit on how many bytes can be read from the given reader
func UnmarshalArray ¶ added in v0.4.0
func UnmarshalArray(data json.RawMessage) ([]json.RawMessage, error)
UnmarshalArray unmarshals an array of objects from the given JSON
Types ¶
type Attachment ¶ added in v0.32.0
type Attachment string
Attachment is a media attachment on a message in the format <content-type>:<url>. Content type may be a full media type or may omit the subtype when it is unknown.
Examples:
- image/jpeg:http://s3.amazon.com/bucket/test.jpg
- image:http://s3.amazon.com/bucket/test.jpg
func (Attachment) ContentType ¶ added in v0.32.0
func (a Attachment) ContentType() string
ContentType returns the MIME type of this attachment
func (Attachment) ToParts ¶ added in v0.32.0
func (a Attachment) ToParts() (string, string)
ToParts splits an attachment string into content-type and URL
func (Attachment) URL ¶ added in v0.32.0
func (a Attachment) URL() string
URL returns the full URL of this attachment
type Date ¶ added in v0.28.4
Date is a local gregorian calendar date
func DateFromString ¶
func DateFromString(env Environment, str string) (Date, error)
DateFromString returns a date constructed from the passed in string, or an error if we are unable to extract one
func ExtractDate ¶ added in v0.28.4
ExtractDate extracts the date from the give datetime
type DateFormat ¶
type DateFormat string
DateFormat a date format string
func (DateFormat) String ¶
func (df DateFormat) String() string
type Environment ¶
type Environment interface { DateFormat() DateFormat TimeFormat() TimeFormat Timezone() *time.Location DefaultLanguage() Language AllowedLanguages() []Language DefaultCountry() Country NumberFormat() *NumberFormat RedactionPolicy() RedactionPolicy MaxValueLength() int // Convenience method to get the current time in the env timezone Now() time.Time // extensions to the engine can expect their own env values Extension(string) json.RawMessage Equal(Environment) bool }
Environment defines the environment that the Excellent function is running in, this includes the timezone the user is in as well as the preferred date and time formats.
func ReadEnvironment ¶ added in v0.4.0
func ReadEnvironment(data json.RawMessage) (Environment, error)
ReadEnvironment reads an environment from the given JSON
type EnvironmentBuilder ¶ added in v0.27.2
type EnvironmentBuilder struct {
// contains filtered or unexported fields
}
EnvironmentBuilder is a builder for environments
func NewEnvironmentBuilder ¶ added in v0.27.2
func NewEnvironmentBuilder() *EnvironmentBuilder
NewEnvironmentBuilder creates a new environment builder
func (*EnvironmentBuilder) Build ¶ added in v0.27.2
func (b *EnvironmentBuilder) Build() Environment
Build returns the final environment
func (*EnvironmentBuilder) WithAllowedLanguages ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithAllowedLanguages(allowedLanguages []Language) *EnvironmentBuilder
func (*EnvironmentBuilder) WithDateFormat ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithDateFormat(dateFormat DateFormat) *EnvironmentBuilder
WithDateFormat sets the date format
func (*EnvironmentBuilder) WithDefaultCountry ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithDefaultCountry(defaultCountry Country) *EnvironmentBuilder
func (*EnvironmentBuilder) WithDefaultLanguage ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithDefaultLanguage(defaultLanguage Language) *EnvironmentBuilder
func (*EnvironmentBuilder) WithMaxValueLength ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithMaxValueLength(maxValueLength int) *EnvironmentBuilder
func (*EnvironmentBuilder) WithNumberFormat ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithNumberFormat(numberFormat *NumberFormat) *EnvironmentBuilder
func (*EnvironmentBuilder) WithRedactionPolicy ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithRedactionPolicy(redactionPolicy RedactionPolicy) *EnvironmentBuilder
func (*EnvironmentBuilder) WithTimeFormat ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithTimeFormat(timeFormat TimeFormat) *EnvironmentBuilder
WithTimeFormat sets the time format
func (*EnvironmentBuilder) WithTimezone ¶ added in v0.27.2
func (b *EnvironmentBuilder) WithTimezone(timezone *time.Location) *EnvironmentBuilder
type FormattingMode ¶ added in v0.10.19
type FormattingMode int
FormattingMode describe a mode of formatting dates, times, datetimes
const ( DateOnlyFormatting FormattingMode = iota TimeOnlyFormatting DateTimeFormatting )
supported formatting modes
type HTTPClient ¶ added in v0.9.2
type HTTPClient struct {
// contains filtered or unexported fields
}
HTTPClient is a client for HTTP requests
func NewHTTPClient ¶ added in v0.8.0
func NewHTTPClient(defaultUserAgent string) *HTTPClient
NewHTTPClient creates a new HTTP client with our default options
func (*HTTPClient) DoWithDump ¶ added in v0.9.2
DoWithDump does the given HTTP request and returns a dump of the entire request
type Language ¶
type Language string
Language is our internal representation of a language
func ParseLanguage ¶
ParseLanguage returns a new Language for the passed in language string, or an error if not found
type Location ¶ added in v0.4.0
type Location struct {
// contains filtered or unexported fields
}
Location represents a single Location
func NewLocation ¶ added in v0.4.0
func NewLocation(level LocationLevel, name string) *Location
NewLocation creates a new location object
func (*Location) Level ¶ added in v0.4.0
func (l *Location) Level() LocationLevel
Level gets the level of this location
func (*Location) Path ¶ added in v0.9.6
func (l *Location) Path() LocationPath
Path gets the full path of this location
type LocationHierarchy ¶ added in v0.4.0
type LocationHierarchy struct {
// contains filtered or unexported fields
}
LocationHierarchy is a hierarical tree of locations
func NewLocationHierarchy ¶ added in v0.4.0
func NewLocationHierarchy(root *Location, numLevels int) *LocationHierarchy
NewLocationHierarchy cretes a new location hierarchy
func ReadLocationHierarchy ¶ added in v0.4.0
func ReadLocationHierarchy(data json.RawMessage) (*LocationHierarchy, error)
ReadLocationHierarchy reads a location hierarchy from the given JSON
func (*LocationHierarchy) FindByName ¶ added in v0.4.0
func (h *LocationHierarchy) FindByName(name string, level LocationLevel, parent *Location) []*Location
FindByName looks for all locations in the hierarchy with the given level and name or alias
func (*LocationHierarchy) FindByPath ¶ added in v0.9.6
func (h *LocationHierarchy) FindByPath(path LocationPath) *Location
FindByPath looks for a location in the hierarchy with the given path
func (*LocationHierarchy) Root ¶ added in v0.6.0
func (h *LocationHierarchy) Root() *Location
Root gets the root location of this hierarchy (typically a country)
func (*LocationHierarchy) UnmarshalJSON ¶ added in v0.22.0
func (h *LocationHierarchy) UnmarshalJSON(data []byte) error
type LocationLevel ¶ added in v0.4.0
type LocationLevel int
LocationLevel is a numeric level, e.g. 0 = country, 1 = state
type LocationPath ¶ added in v0.32.0
type LocationPath string
LocationPath is a location described by a path Country > State ...
func NewLocationPath ¶ added in v0.32.0
func NewLocationPath(parts ...string) LocationPath
func (LocationPath) Name ¶ added in v0.32.0
func (p LocationPath) Name() string
Name returns the name of the location referenced
func (LocationPath) Normalize ¶ added in v0.32.0
func (p LocationPath) Normalize() LocationPath
Normalize normalizes this location path
type NumberFormat ¶ added in v0.21.2
type NumberFormat struct { DecimalSymbol string `json:"decimal_symbol"` DigitGroupingSymbol string `json:"digit_grouping_symbol"` }
NumberFormat describes how numbers should be parsed and formatted
type RedactionPolicy ¶ added in v0.10.5
type RedactionPolicy string
const ( RedactionPolicyNone RedactionPolicy = "none" RedactionPolicyURNs RedactionPolicy = "urns" )
type TimeFormat ¶
type TimeFormat string
TimeFormat a time format string
func (TimeFormat) String ¶
func (tf TimeFormat) String() string
type TimeOfDay ¶ added in v0.28.0
TimeOfDay represents a local time of day value
func ExtractTimeOfDay ¶ added in v0.28.0
ExtractTimeOfDay extracts the time of day from the give datetime
func NewTimeOfDay ¶ added in v0.28.0
NewTimeOfDay creates a new time of day
func ParseTimeOfDay ¶ added in v0.28.0
ParseTimeOfDay parses the given string into a time of day
func TimeFromString ¶ added in v0.28.0
TimeFromString returns a time of day constructed from the passed in string, or an error if we are unable to extract one
func (TimeOfDay) Combine ¶ added in v0.28.4
Combine combines this time and a date to make a datetime
type TimeSource ¶ added in v0.10.20
TimeSource is something that can provide a time
var DefaultTimeSource TimeSource = defaultTimeSource{}
DefaultTimeSource is the default time source
type Typed ¶
type Typed interface {
Type() string
}
Typed is an interface of objects that are marshalled as typed envelopes
type TypedEnvelope ¶
type TypedEnvelope struct {
Type string `json:"type" validate:"required"`
}
TypedEnvelope can be mixed into envelopes that have a type field
type UUIDGenerator ¶ added in v0.6.0
type UUIDGenerator interface {
Next() UUID
}
UUIDGenerator is something that can generate a UUID
var DefaultUUIDGenerator UUIDGenerator = defaultUUID4Generator{}
DefaultUUIDGenerator is the default generator for calls to NewUUID
type ValidationErrors ¶ added in v0.4.0
type ValidationErrors []error
ValidationErrors combines multiple validation errors as a single error
func (ValidationErrors) Error ¶ added in v0.4.0
func (e ValidationErrors) Error() string
Error returns a string representation of these validation errors