macroproc

package
v0.0.0-...-b442dbf Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2018 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Null = ValueType(iota)
	Boolean
	Number
	String
	Object
	Array
)
View Source
const (
	MacrosEvalPhaseA = iota
	MacrosEvalPhaseB
	MacrosEvalPhaseC
	MacrosEvalPhaseD
	MacrosEvalPhaseE
	MacrosEvalPhases
)

Variables

View Source
var (
	MacroBooleanIf = &Macro{
		ReturnType: Null,
		EvalPhase:  MacrosEvalPhaseA,
		VerbName:   "If",
	}

	MacroBooleanLookup = &Macro{
		ReturnType: Boolean,
		EvalPhase:  MacrosEvalPhaseB,
		VerbName:   "Lookup",
	}
	MacroStringLookup = &Macro{
		ReturnType: String,
		EvalPhase:  MacrosEvalPhaseB,
		VerbName:   "Lookup",
	}
	MacroNumberLookup = &Macro{
		ReturnType: Number,
		EvalPhase:  MacrosEvalPhaseB,
		VerbName:   "Lookup",
	}
	MacroArrayLookup = &Macro{
		ReturnType: Array,
		EvalPhase:  MacrosEvalPhaseB,
		VerbName:   "Lookup",
	}
	MacroObjectLookup = &Macro{
		ReturnType: Object,
		EvalPhase:  MacrosEvalPhaseB,
		VerbName:   "Lookup",
	}

	LoadObjectJSON = &Macro{
		ReturnType: Object,
		EvalPhase:  MacrosEvalPhaseC,
		VerbName:   "LoadJSON",
	}
	LoadArrayJSON = &Macro{
		ReturnType: Array,
		EvalPhase:  MacrosEvalPhaseC,
		VerbName:   "LoadJSON",
	}

	MacroStringJoin = &Macro{
		ReturnType: String,
		EvalPhase:  MacrosEvalPhaseD,
		VerbName:   "Join",
	}
	MacroStringAsJSON = &Macro{
		ReturnType: String,
		EvalPhase:  MacrosEvalPhaseD,
		VerbName:   "AsJSON",
	}
	MacroStringAsYAML = &Macro{
		ReturnType: String,
		EvalPhase:  MacrosEvalPhaseD,
		VerbName:   "AsYAML",
	}
	MacroStringAsBASE64 = &Macro{
		ReturnType: String,
		EvalPhase:  MacrosEvalPhaseD,
		VerbName:   "AsBASE64",
	}
)

Functions

This section is empty.

Types

type BranchLocator

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

func (*BranchLocator) Kind

func (b *BranchLocator) Kind() ValueType

func (*BranchLocator) PathToString

func (b *BranchLocator) PathToString() string

func (*BranchLocator) Refresh

func (b *BranchLocator) Refresh(c *Converter) error

Refresh get latest value from t and recurses into parents

func (*BranchLocator) StringValue

func (b *BranchLocator) StringValue() *string

func (*BranchLocator) Value

func (b *BranchLocator) Value() *Tree

type Converter

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

func New

func New() *Converter

func (*Converter) DefineMacro

func (c *Converter) DefineMacro(m *Macro, fn MakeModifier)

func (*Converter) DefineMacroWithCallbackt

func (c *Converter) DefineMacroWithCallbackt(m *Macro, cb func() MakeModifier)

func (*Converter) Delete

func (c *Converter) Delete(branch *BranchLocator) error

func (*Converter) LoadObject

func (c *Converter) LoadObject(data []byte, sourcePath string, instanceName string) error

func (*Converter) MarshalJSON

func (c *Converter) MarshalJSON() ([]byte, error)

func (*Converter) Overlay

func (c *Converter) Overlay(branch *BranchLocator, value interface{}) error

func (*Converter) Run

func (c *Converter) Run() error

func (*Converter) Set

func (c *Converter) Set(branch *BranchLocator, value interface{}) error

func (*Converter) TypeCheckModifier

func (c *Converter) TypeCheckModifier(branch *BranchLocator, kind ValueType, cb ModifierCallback) (ModifierCallback, error)

func (*Converter) UnloadObject

func (c *Converter) UnloadObject(obj interface{}, sourcePath string, instanceName string) error

type Macro

type Macro struct {
	ReturnType ValueType
	EvalPhase  MacrosEvalPhase
	VerbName   string
	Argument   bool
}

func (*Macro) String

func (m *Macro) String() string

type MacrosEvalPhase

type MacrosEvalPhase = int

type MakeModifier

type MakeModifier func(*Converter, *BranchLocator, *Macro) (ModifierCallback, error)

type Modifier

type Modifier struct {
	Macro  *Macro
	Branch *BranchLocator
	// contains filtered or unexported fields
}

func (*Modifier) Do

func (m *Modifier) Do(c *Converter) error

type ModifierCallback

type ModifierCallback func(*Modifier, *Converter) error

func MakeArrayLoadJSON

func MakeArrayLoadJSON(c *Converter, branch *BranchLocator, jsonData []byte) (ModifierCallback, error)

func MakeModifierStringAsBASE64

func MakeModifierStringAsBASE64(_ *Converter, _ *BranchLocator, _ *Macro) (ModifierCallback, error)

func MakeModifierStringAsJSON

func MakeModifierStringAsJSON(_ *Converter, _ *BranchLocator, _ *Macro) (ModifierCallback, error)

func MakeModifierStringAsYAML

func MakeModifierStringAsYAML(_ *Converter, _ *BranchLocator, _ *Macro) (ModifierCallback, error)

func MakeModifierStringJoin

func MakeModifierStringJoin(c *Converter, branch *BranchLocator, _ *Macro) (ModifierCallback, error)

func MakeObjectLoadJSON

func MakeObjectLoadJSON(c *Converter, branch *BranchLocator, jsonData []byte) (ModifierCallback, error)

type Tree

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

Tree holds arbitrary JSON object and allows for walking and manipulating it (as needed for this package)

func NewTree

func NewTree(x *interface{}) *Tree

NewTree creates a tree root

func (*Tree) ArrayEach

func (t *Tree) ArrayEach(fn treeArrayIterator) error

ArrayEach is for walking Array branches

func (*Tree) Bytes

func (t *Tree) Bytes() []byte

Bytes returns JSON-encoded representation it is mostly used for testing, so it will panic if the object cannot be encoded

func (*Tree) BytesAsJSON

func (t *Tree) BytesAsJSON() ([]byte, error)

BytesAsJSON returns JSON-encoded representation

func (*Tree) Check

func (t *Tree) Check(path ...interface{}) (*ValueType, error)

Check the path exists and return value type

func (*Tree) Delete

func (t *Tree) Delete(keys ...interface{}) error

Delete a given path

func (*Tree) Each

func (t *Tree) Each(ifObject treeObjectIterator, ifArray treeArrayIterator) error

Each is for walking branches

func (*Tree) Get

func (t *Tree) Get(keys ...interface{}) (*Tree, error)

Get fetches sub-tree at a given path

func (*Tree) GetArray

func (t *Tree) GetArray(keys ...interface{}) ([]interface{}, error)

GetArray fetches Array at a given path

func (*Tree) GetBoolean

func (t *Tree) GetBoolean(keys ...interface{}) (bool, error)

GetBoolean fetches Boolean at a given path

func (*Tree) GetFloat

func (t *Tree) GetFloat(keys ...interface{}) (float64, error)

GetFloat fetches Float at a given path

func (*Tree) GetInt

func (t *Tree) GetInt(keys ...interface{}) (int, error)

GetInt fetches Int at a given path

func (*Tree) GetObject

func (t *Tree) GetObject(keys ...interface{}) (map[string]interface{}, error)

GetObject fetches Object at a given path

func (*Tree) GetString

func (t *Tree) GetString(keys ...interface{}) (string, error)

GetString fetches String at a given path

func (*Tree) GetValue

func (t *Tree) GetValue(keys ...interface{}) (interface{}, error)

GetValue fetches value at a given path

func (*Tree) Len

func (t *Tree) Len() int

Len returns lenght of Object or Array of a tree branch

func (*Tree) ObjectEach

func (t *Tree) ObjectEach(fn treeObjectIterator) error

ObjectEach is for walking Object branches

func (*Tree) Overlay

func (t *Tree) Overlay(source *Tree, keys ...interface{}) error

Overlay source tree onto

func (*Tree) Set

func (t *Tree) Set(value interface{}, keys ...interface{}) error

Set value at a given path

func (*Tree) SetArray

func (t *Tree) SetArray(v []interface{}, keys ...interface{}) error

SetArray at a given path

func (*Tree) SetBoolean

func (t *Tree) SetBoolean(v bool, keys ...interface{}) error

SetBoolean at a given path

func (*Tree) SetFloat

func (t *Tree) SetFloat(v float64, keys ...interface{}) error

SetFloat at a given path

func (*Tree) SetInt

func (t *Tree) SetInt(v int64, keys ...interface{}) error

SetInt at a given path

func (*Tree) SetObject

func (t *Tree) SetObject(v map[string]interface{}, keys ...interface{}) error

SetObject at a given path

func (*Tree) SetString

func (t *Tree) SetString(v string, keys ...interface{}) error

SetString at a given path

func (*Tree) String

func (t *Tree) String() string

String returns JSON-encoded representation it is mostly used for testing, so it will panic if the object cannot be encoded

func (*Tree) StringAsJSON

func (t *Tree) StringAsJSON() (string, error)

StringAsJSON returns JSON-encoded representation

type UnregisteredModifier

type UnregisteredModifier struct {
	Macro *Macro
	// contains filtered or unexported fields
}

func (*UnregisteredModifier) Register

func (m *UnregisteredModifier) Register(c *Converter, branch *BranchLocator) (*Modifier, error)

type ValueType

type ValueType int

func (ValueType) String

func (vt ValueType) String() string

Jump to

Keyboard shortcuts

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