parser

package
v0.4.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CStr = DateHandlerTokenWrapper{
	// contains filtered or unexported fields
}

Formatter built around C FFI to strftime and strptime

As this uses C FFI with `cgo`; not all OS's are supported or tested

View Source
var Go = DateHandlerTokenWrapper{
	// contains filtered or unexported fields
}

Handler for parsing and formatting date time with Go's standard library `time` package

Functions

This section is empty.

Types

type DateDescriptor added in v0.3.0

type DateDescriptor interface {
	// Outputs all supported tokens with their descriptions and any aliases
	TokenDesc() string
	// Outputs all supported tokens with their descriptions and any aliases with
	// support for providing a token formatter to customise how tokens are displayed
	TokenDescTokenFormatter(tokenFmt func(format string, a ...any) string) string
	// Mapping between any token and it's corresponding meta data
	TokenMap() TokenMap
}

Describes and contains a mapping of tokens

type DateFormatter

type DateFormatter interface {
	// Formats a given time and locale according to the provided string
	Format(dt time.Time, locale locales.Translator, str *string) string
}

Allows formatting date times into other data types

type DateHandler added in v0.3.0

type DateHandler interface {
	*DateDescriptor
	*DateFormatter
	*DateParser
}

type DateHandlerPrefix added in v0.3.0

type DateHandlerPrefix struct {
	Prefix rune
	// contains filtered or unexported fields
}

Date handler for tokens that always start with a predefined prefix rune

e.g. C based `strptime` function tokens: '%c', '%Oy' etc.

var GoStrptime DateHandlerPrefix

Go port of the C time functions `strptime` and `strftime`

Most formatting tokens are supported for English locales and are near one to one with the C equivalents with some small differences when it comes to spacing between characters

Parsing is very much a work in progress only supporting a very limited set.

Due to these incompatibilities it's recommend to use the CStr parser if possible for the time being

func (DateHandlerPrefix) Format added in v0.3.0

func (formatter DateHandlerPrefix) Format(dt time.Time, locale locales.Translator, str *string) string

func (*DateHandlerPrefix) Parse added in v0.3.0

func (formatter *DateHandlerPrefix) Parse(input, format string) (time.Time, error)

func (DateHandlerPrefix) TokenDesc added in v0.3.0

func (formatter DateHandlerPrefix) TokenDesc() string

func (DateHandlerPrefix) TokenDescTokenFormatter added in v0.3.0

func (formatter DateHandlerPrefix) TokenDescTokenFormatter(tokenFmt func(format string, a ...any) string) string

func (*DateHandlerPrefix) TokenMap added in v0.3.0

func (formatter *DateHandlerPrefix) TokenMap() TokenMap

func (DateHandlerPrefix) TokenMapExpanded added in v0.3.0

func (formatter DateHandlerPrefix) TokenMapExpanded() map[string]FormatToken[string]

Expands the inner token map to include aliases

type DateHandlerString added in v0.3.0

type DateHandlerString struct {
	// contains filtered or unexported fields
}

Date handler for string based tokens of varying lengths with support for escaping characters

var Luxon DateHandlerString

Handler for pasing and formatting using the `luxon` tokens and rules

var MomentJs DateHandlerString

Handler for parsing and formatting using the `momentjs` tokens and rules

func (*DateHandlerString) Format added in v0.3.0

func (formatter *DateHandlerString) Format(dt time.Time, locale locales.Translator, str *string) string

func (*DateHandlerString) Parse added in v0.3.0

func (formatter *DateHandlerString) Parse(input, format string) (time.Time, error)

func (*DateHandlerString) TokenDesc added in v0.3.0

func (formatter *DateHandlerString) TokenDesc() string

func (*DateHandlerString) TokenDescTokenFormatter added in v0.3.0

func (formatter *DateHandlerString) TokenDescTokenFormatter(tokenFmt func(format string, a ...any) string) string

func (*DateHandlerString) TokenMap added in v0.3.0

func (formatter *DateHandlerString) TokenMap() TokenMap

type DateHandlerTokenWrapper added in v0.3.0

type DateHandlerTokenWrapper struct {
	// contains filtered or unexported fields
}

Simplest date handler type wrapping functionality defined elsewhere that works with tokens

func (*DateHandlerTokenWrapper) Format added in v0.3.0

func (formatter *DateHandlerTokenWrapper) Format(dt time.Time, locale locales.Translator, str *string) string

func (*DateHandlerTokenWrapper) Parse added in v0.3.0

func (formatter *DateHandlerTokenWrapper) Parse(input, format string) (time.Time, error)

func (*DateHandlerTokenWrapper) TokenDesc added in v0.3.0

func (formatter *DateHandlerTokenWrapper) TokenDesc() string

func (*DateHandlerTokenWrapper) TokenDescTokenFormatter added in v0.3.0

func (formatter *DateHandlerTokenWrapper) TokenDescTokenFormatter(tokenFmt func(format string, a ...any) string) string

func (*DateHandlerTokenWrapper) TokenMap added in v0.3.0

func (formatter *DateHandlerTokenWrapper) TokenMap() TokenMap

type DateParser added in v0.3.0

type DateParser interface {
	// Parses a time string according to the provided format
	Parse(input, format string) (time.Time, error)
}

Allows parsing data types into date times

type FormatToken

type FormatToken[T any] struct {
	// Description of what the token represents
	Desc string
	// contains filtered or unexported fields
}

type TokenGraphNode

type TokenGraphNode[T any] struct {
	// contains filtered or unexported fields
}

type TokenMap

type TokenMap = map[string]FormatToken[string]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL