object

package
v0.0.0-...-bd71913 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotExist = errors.New("does not exist")
)

Functions

This section is empty.

Types

type Context

type Context interface {
	context.Context
	Fork(any) Context // forks keep same store
	Path() []any      // ref added at each fork
	Store() Store
}

func NewContext

func NewContext(c context.Context, root ...any) Context

type DataTypes

type DataTypes interface {
	Opaque | Refrence
}

type Item

type Item[T any] interface {
	Exist() bool
	Get() T
	Set(T) (T, error)
	Del() error
}

type MatchType

type MatchType int
const (
	ExactMatch MatchType = iota
	PrefixMatch
	SuffixMatch
	SubMatch
	RegExMatch
)

type Object

type Object[T DataTypes] interface {
	Children() []string
	Child(any) Selector[T]
	Set(string, T)
	Get(string) T
	Delete(string)
	Move(string, string) error // rename attribute
	Map() map[string]any
	Flat() map[string]any
	Match(string, MatchType) ([]Object[T], error)
}

func New

func New[T DataTypes]() Object[T]

func Pipe

func Pipe[T DataTypes](c Context, o Object[T], transformers ...Transformer[T]) (Object[T], error)

type Opaque

type Opaque []byte

type Refrence

type Refrence any

type Resolver

type Resolver[T DataTypes] interface {
	Root() Object[T]
	Resolve(path ...string) (Object[T], error)
}

func NewResolver

func NewResolver[T DataTypes](root Object[T]) Resolver[T]

type Selector

type Selector[T DataTypes] interface {
	Name() string
	Exists() bool
	Rename(string) error       // rename self in parent
	Move(string, string) error // rename attribute
	Set(string, T) error
	Get(string) (T, error)
	Delete(string)
	Add(Object[T]) error
	Object() (Object[T], error)
}

type Store

type Store interface {
	String(string) Item[string]
	Bytes(string) Item[[]byte]
	Any(string) Item[any]
}

type Transformer

type Transformer[T DataTypes] interface {
	Process(Context, Object[T]) (Object[T], error)
}

func Cloner

func Cloner() Transformer[Opaque]

type Transtyper

type Transtyper[F DataTypes, T DataTypes] interface {
	Process(Object[F]) (Object[T], error)
}

func Cbor

func Cbor[F DataTypes]() Transtyper[F, Opaque]

Jump to

Keyboard shortcuts

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