Documentation
¶
Index ¶
- Constants
- Variables
- func Eval(env *Env, msg proto.Message, value *Value, args ...interface{}) (interface{}, error)
- type Env
- type Scope
- func (*Scope) Descriptor() ([]byte, []int)deprecated
- func (x *Scope) GetFieldDescriptor() *descriptorpb.FieldDescriptorProto
- func (x *Scope) GetList() []*anypb.Any
- func (x *Scope) GetMap() map[string]*anypb.Any
- func (x *Scope) GetParent() *Scope
- func (x *Scope) GetValue() *anypb.Any
- func (*Scope) ProtoMessage()
- func (x *Scope) ProtoReflect() protoreflect.Message
- func (x *Scope) Reset()
- func (x *Scope) String() string
- type Value
- func (*Value) Descriptor() ([]byte, []int)deprecated
- func (x *Value) GetAllOf() *Value_ValueList
- func (x *Value) GetAnyOf() *Value_ValueList
- func (x *Value) GetArg() uint32
- func (x *Value) GetArgs() []*Value
- func (x *Value) GetBasicMessage() *anypb.Any
- func (x *Value) GetBasicValue() *structpb.Value
- func (x *Value) GetBreak() uint32
- func (x *Value) GetBytes() []byte
- func (x *Value) GetContinue() uint32
- func (x *Value) GetDefault() *emptypb.Empty
- func (x *Value) GetDropArgs() uint32
- func (x *Value) GetDuration() *durationpb.Duration
- func (x *Value) GetEnum() *Value_Enum
- func (x *Value) GetInt() int64
- func (x *Value) GetList() *Value_List
- func (x *Value) GetLoad() *Value
- func (x *Value) GetMap() *Value_Map
- func (x *Value) GetMessage() *Value_Message
- func (x *Value) GetNot() *Value
- func (x *Value) GetParent() *Value
- func (x *Value) GetProc() *Value_StoredValue
- func (x *Value) GetProgram() *Value_Program
- func (x *Value) GetRange() *Value_Range
- func (x *Value) GetScope() *structpb.ListValue
- func (x *Value) GetSeq() *Value_ValueList
- func (x *Value) GetStore() *Value_StoredValue
- func (x *Value) GetSwitch() *Value_Switch
- func (x *Value) GetTimestamp() *timestamppb.Timestamp
- func (x *Value) GetUint() uint64
- func (m *Value) GetValue() isValue_Value
- func (x *Value) GetWhile() *Value_Branch
- func (*Value) ProtoMessage()
- func (x *Value) ProtoReflect() protoreflect.Message
- func (x *Value) Reset()
- func (x *Value) String() string
- type Value_AllOf
- type Value_AnyOf
- type Value_Arg
- type Value_BasicMessage
- type Value_BasicValue
- type Value_Branch
- func (*Value_Branch) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Branch) GetCase() *Value
- func (x *Value_Branch) GetThen() *Value
- func (*Value_Branch) ProtoMessage()
- func (x *Value_Branch) ProtoReflect() protoreflect.Message
- func (x *Value_Branch) Reset()
- func (x *Value_Branch) String() string
- type Value_Break
- type Value_Bytes
- type Value_Continue
- type Value_Default
- type Value_Duration
- type Value_Enum
- func (*Value_Enum) Descriptor() ([]byte, []int)deprecated
- func (m *Value_Enum) GetBy() isValue_Enum_By
- func (x *Value_Enum) GetName() string
- func (x *Value_Enum) GetNumber() int32
- func (x *Value_Enum) GetType() string
- func (*Value_Enum) ProtoMessage()
- func (x *Value_Enum) ProtoReflect() protoreflect.Message
- func (x *Value_Enum) Reset()
- func (x *Value_Enum) String() string
- type Value_Enum_
- type Value_Enum_Name
- type Value_Enum_Number
- type Value_Int
- type Value_Kind
- type Value_List
- func (*Value_List) Descriptor() ([]byte, []int)deprecated
- func (x *Value_List) GetKind() Value_Kind
- func (x *Value_List) GetType() string
- func (x *Value_List) GetValues() []*Value
- func (*Value_List) ProtoMessage()
- func (x *Value_List) ProtoReflect() protoreflect.Message
- func (x *Value_List) Reset()
- func (x *Value_List) String() string
- type Value_List_
- type Value_Load
- type Value_Map
- func (*Value_Map) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Map) GetEntries() []*Value_Map_Entry
- func (x *Value_Map) GetKeyKind() Value_Kind
- func (x *Value_Map) GetValueKind() Value_Kind
- func (x *Value_Map) GetValueType() string
- func (*Value_Map) ProtoMessage()
- func (x *Value_Map) ProtoReflect() protoreflect.Message
- func (x *Value_Map) Reset()
- func (x *Value_Map) String() string
- type Value_Map_
- type Value_Map_Entry
- func (*Value_Map_Entry) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Map_Entry) GetKey() *Value
- func (x *Value_Map_Entry) GetValue() *Value
- func (*Value_Map_Entry) ProtoMessage()
- func (x *Value_Map_Entry) ProtoReflect() protoreflect.Message
- func (x *Value_Map_Entry) Reset()
- func (x *Value_Map_Entry) String() string
- type Value_Message
- func (*Value_Message) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Message) GetFields() map[string]*Value
- func (x *Value_Message) GetType() string
- func (*Value_Message) ProtoMessage()
- func (x *Value_Message) ProtoReflect() protoreflect.Message
- func (x *Value_Message) Reset()
- func (x *Value_Message) String() string
- type Value_Message_
- type Value_Not
- type Value_Parent
- type Value_Proc
- type Value_Program
- func (*Value_Program) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Program) GetCode() string
- func (x *Value_Program) GetLines() []string
- func (*Value_Program) ProtoMessage()
- func (x *Value_Program) ProtoReflect() protoreflect.Message
- func (x *Value_Program) Reset()
- func (x *Value_Program) String() string
- type Value_Program_
- type Value_Range
- func (*Value_Range) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Range) GetIterable() *Value
- func (x *Value_Range) GetValue() *Value
- func (*Value_Range) ProtoMessage()
- func (x *Value_Range) ProtoReflect() protoreflect.Message
- func (x *Value_Range) Reset()
- func (x *Value_Range) String() string
- type Value_Range_
- type Value_Seq
- type Value_Store
- type Value_StoredValue
- func (*Value_StoredValue) Descriptor() ([]byte, []int)deprecated
- func (x *Value_StoredValue) GetKey() *Value
- func (x *Value_StoredValue) GetValue() *Value
- func (*Value_StoredValue) ProtoMessage()
- func (x *Value_StoredValue) ProtoReflect() protoreflect.Message
- func (x *Value_StoredValue) Reset()
- func (x *Value_StoredValue) String() string
- type Value_Switch
- func (*Value_Switch) Descriptor() ([]byte, []int)deprecated
- func (x *Value_Switch) GetCases() []*Value_Branch
- func (x *Value_Switch) GetDefault() *Value
- func (*Value_Switch) ProtoMessage()
- func (x *Value_Switch) ProtoReflect() protoreflect.Message
- func (x *Value_Switch) Reset()
- func (x *Value_Switch) String() string
- type Value_Switch_
- type Value_Timestamp
- type Value_Uint
- type Value_ValueList
- type Value_While
Constants ¶
const ( // DefaultEvalMax is the default maximum number of sub-evaluations before // a call to Eval is aborted. DefaultEvalMax = 1000 )
Variables ¶
var ( Value_Kind_name = map[int32]string{ 0: "INVALID", 1: "DOUBLE", 2: "FLOAT", 3: "INT64", 4: "UINT64", 5: "INT32", 6: "FIXED64", 7: "FIXED32", 8: "BOOL", 9: "STRING", 11: "MESSAGE", 12: "BYTES", 13: "UINT32", 14: "ENUM", 15: "SFIXED32", 16: "SFIXED64", 17: "SINT32", 18: "SINT64", } Value_Kind_value = map[string]int32{ "INVALID": 0, "DOUBLE": 1, "FLOAT": 2, "INT64": 3, "UINT64": 4, "INT32": 5, "FIXED64": 6, "FIXED32": 7, "BOOL": 8, "STRING": 9, "MESSAGE": 11, "BYTES": 12, "UINT32": 13, "ENUM": 14, "SFIXED32": 15, "SFIXED64": 16, "SINT32": 17, "SINT64": 18, } )
Enum value maps for Value_Kind.
var CelArgListType = &celArgListType{}
CelArgListType is the CEL type for an argument list.
var CelEnvType = &celEnvType{}
CelEnvType is the CEL type for the protoeval environment.
var ( // ErrEvalTooLong is returned when an evaluation is too complex. ErrEvalTooLong = errors.New("evaluation took too long") )
Errors
var File_protoeval_value_proto protoreflect.FileDescriptor
Functions ¶
Types ¶
type Env ¶
type Env struct {
// contains filtered or unexported fields
}
Env describes an environment within which an evaluation can take place. Instances of this type are not safe for concurrent use. Clone your environment instead.
func (*Env) Clone ¶
Clone creates a copy of this environment. Note that values set with Set or through previous evaluations are copied shallowly.
func (*Env) Get ¶
Get gets a value from this environment for the given key. If no such value exists, ok == false is returned.
func (*Env) Set ¶
Set sets a value in this environment under the given key. If there already is a value, it is overwritten. If value is nil, it is deleted instead. If the value cannot be converted to a proper CEL value, an error is returned.
func (*Env) SetEvalMax ¶
SetEvalMax sets the maximum number of sub-evaluations for an Eval call with this environment. A non-positive value will cause all evaluations to fail. This environment is returned.
type Scope ¶
type Scope struct {
// parent is the parent scope of this scope. If omitted, this scope is the
// root scope.
Parent *Scope `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
// field_descriptor describes the field leading up to the value of this Scope.
// If omitted, this scope is the root scope.
FieldDescriptor *descriptorpb.FieldDescriptorProto `protobuf:"bytes,2,opt,name=field_descriptor,json=fieldDescriptor,proto3" json:"field_descriptor,omitempty"`
// value is the scope value for messages and scalars. For scalars, the
// google.protobuf wrappers types will be used. Enum values will be
// converted to google.protobuf.Int32Value.
// CEL automatically converts the Any and wrapper types to their proper
// message or scalar types.
// If the scope value is not a message or a scalar, value will be omitted.
Value *anypb.Any `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
// list is the scope value for lists. If the list element type is a scalar,
// a google.protobuf wrappers type will be used.
// CEL automatically converts the Any and wrapper types to their proper
// message or scalar types.
// If the scope value is not a list, list will be omitted.
List []*anypb.Any `protobuf:"bytes,4,rep,name=list,proto3" json:"list,omitempty"`
// map is the scope value for maps. If the map key type is not a string, the
// keys will be converted to a string as follows:
//
// /-----------------------------------------\
// | Key | String representation of Key |
// |=========|===============================|
// | false | "False" |
// | true | "True" |
// | integer | The integer as decimal string |
// \-----------------------------------------/
//
// If the map value type is a scalar, a google.protobuf wrappers type will be
// used. CEL automatically converts the Any and wrapper types to their proper
// message or scalar types.
// If the scope value is not a map, map will be omitted.
Map map[string]*anypb.Any `` /* 147-byte string literal not displayed */
// contains filtered or unexported fields
}
Scope describes a scope for CEL programs. It can be used for more complex message access. The Scope message is not directly used in the Value message.
func (*Scope) Descriptor
deprecated
func (*Scope) GetFieldDescriptor ¶
func (x *Scope) GetFieldDescriptor() *descriptorpb.FieldDescriptorProto
func (*Scope) ProtoMessage ¶
func (*Scope) ProtoMessage()
func (*Scope) ProtoReflect ¶
func (x *Scope) ProtoReflect() protoreflect.Message
type Value ¶
type Value struct {
// drop_args drops the specified number of arguments (optional). That is, if
// drop_args = n, args 0 through n-1 are dropped and the previously n-th
// argument becomes the 0-th argument.
// drop_args is applied before the args field is.
//
// Since arguments are available only from the current scope and all
// subscopes, explicitly dropping arguments may be unnecessary.
DropArgs uint32 `protobuf:"varint,1,opt,name=drop_args,json=dropArgs,proto3" json:"drop_args,omitempty"`
// args adds the specified arguments. Arguments can be accessed by a
// zero based index. Previous arguments are shifted, e. g., if the length
// of args is n, the previous 0-th argument becomes the n-th argument.
// Optional.
//
// The args field is applied after the drop_args and the scope fields.
// The arguments are available in the resulting scope and all subscopes.
Args []*Value `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"`
// scope changes the scope relative to the current scope.
//
// If omitted, the current scope remains unchanged.
//
// If empty, forces the creation of a new scope identical to its parent scope.
// This can be useful in combination with argument handling.
//
// If non-empty, each element corresponds to a field, list element, or map
// entry selection. A string element can select a message field by name or a
// map entry (if the map does not have string keys, an attempt at conversion
// will be made). A number element can select a message field by field number,
// a list entry by index, or a map entry if the map has integer keys. It is an
// error if the number is not losslessly convertible to the corresponding
// integer type. A bool element can only select a map entry, and the map must
// have boolean keys.
Scope *structpb.ListValue `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
// value describes the actual value. If omitted, the value will be the
// scope value.
//
// Types that are assignable to Value:
// *Value_Arg
// *Value_Parent
// *Value_Default
// *Value_BasicValue
// *Value_Int
// *Value_Uint
// *Value_Bytes
// *Value_Enum_
// *Value_List_
// *Value_Map_
// *Value_Message_
// *Value_BasicMessage
// *Value_Duration
// *Value_Timestamp
// *Value_Not
// *Value_AllOf
// *Value_AnyOf
// *Value_Seq
// *Value_Switch_
// *Value_While
// *Value_Break
// *Value_Continue
// *Value_Store
// *Value_Proc
// *Value_Load
// *Value_Program_
// *Value_Range_
Value isValue_Value `protobuf_oneof:"value"`
// contains filtered or unexported fields
}
Value describes how to arrive at a value given an environment and a scope. An environment maps names to other Values and is predetermined by the user. A scope arises from how the fields in a Value are used (see their documentation). The initial scope is the protobuf message to be evaluated.
func (*Value) Descriptor
deprecated
func (*Value) GetAllOf ¶
func (x *Value) GetAllOf() *Value_ValueList
func (*Value) GetAnyOf ¶
func (x *Value) GetAnyOf() *Value_ValueList
func (*Value) GetBasicMessage ¶
func (*Value) GetBasicValue ¶ added in v0.0.4
func (*Value) GetContinue ¶
func (*Value) GetDefault ¶
func (*Value) GetDropArgs ¶ added in v0.0.2
func (*Value) GetDuration ¶
func (x *Value) GetDuration() *durationpb.Duration
func (*Value) GetEnum ¶
func (x *Value) GetEnum() *Value_Enum
func (*Value) GetList ¶
func (x *Value) GetList() *Value_List
func (*Value) GetMessage ¶
func (x *Value) GetMessage() *Value_Message
func (*Value) GetProc ¶
func (x *Value) GetProc() *Value_StoredValue
func (*Value) GetProgram ¶
func (x *Value) GetProgram() *Value_Program
func (*Value) GetRange ¶ added in v0.0.4
func (x *Value) GetRange() *Value_Range
func (*Value) GetSeq ¶
func (x *Value) GetSeq() *Value_ValueList
func (*Value) GetStore ¶
func (x *Value) GetStore() *Value_StoredValue
func (*Value) GetSwitch ¶
func (x *Value) GetSwitch() *Value_Switch
func (*Value) GetTimestamp ¶
func (x *Value) GetTimestamp() *timestamppb.Timestamp
func (*Value) GetWhile ¶
func (x *Value) GetWhile() *Value_Branch
func (*Value) ProtoMessage ¶
func (*Value) ProtoMessage()
func (*Value) ProtoReflect ¶
func (x *Value) ProtoReflect() protoreflect.Message
type Value_AllOf ¶
type Value_AllOf struct {
// all_of yields a boolean value, which is true if and only if all values
// in the list (based on scope) are true.
// The list is checked in order, and if a false value is encountered, the
// remaining entries in the list are ignored.
// It is an error if there are values which are not boolean.
// If the list is empty, the result is true.
AllOf *Value_ValueList `protobuf:"bytes,19,opt,name=all_of,json=allOf,proto3,oneof"`
}
type Value_AnyOf ¶
type Value_AnyOf struct {
// any_of yields a boolean value, and is true if and only if there is a
// value in the list (based on scope) which is true.
// The list is checked in order, and if a true value is encountered, the
// remaining entries in the list are ignored.
// It is an error if there are values which are not boolean.
// If the list is empty, the result is false.
AnyOf *Value_ValueList `protobuf:"bytes,20,opt,name=any_of,json=anyOf,proto3,oneof"`
}
type Value_Arg ¶ added in v0.0.2
type Value_Arg struct {
// arg yields the numbered argument.
Arg uint32 `protobuf:"varint,4,opt,name=arg,proto3,oneof"`
}
type Value_BasicMessage ¶
type Value_BasicMessage struct {
// basic_message is an explicit message value. It uses the protobuf Any
// mechanism. While this doesn't allow complex message generation, the
// specification of the message itself in a configuration file will be
// less cluttered.
BasicMessage *anypb.Any `protobuf:"bytes,15,opt,name=basic_message,json=basicMessage,proto3,oneof"`
}
type Value_BasicValue ¶ added in v0.0.4
type Value_BasicValue struct {
// value is an explicit basic value. A basic value is null, bool, double,
// string, a list of basic values, or a map with string keys and basic
// values. These are exactly the values which can be represented with JSON
// without ancillary information (i. e., JSON numbers are all interpreted as
// double; see the int and uint fields to create explicit integer values).
BasicValue *structpb.Value `protobuf:"bytes,7,opt,name=basic_value,json=basicValue,proto3,oneof"`
}
type Value_Branch ¶
type Value_Branch struct {
// case must be a boolean value. If it is true, then will be evaluated.
Case *Value `protobuf:"bytes,1,opt,name=case,proto3" json:"case,omitempty"`
// then is the value of this Branch if case is true.
Then *Value `protobuf:"bytes,2,opt,name=then,proto3" json:"then,omitempty"`
// contains filtered or unexported fields
}
Branch describes a conditional branch.
func (*Value_Branch) Descriptor
deprecated
func (*Value_Branch) Descriptor() ([]byte, []int)
Deprecated: Use Value_Branch.ProtoReflect.Descriptor instead.
func (*Value_Branch) GetCase ¶
func (x *Value_Branch) GetCase() *Value
func (*Value_Branch) GetThen ¶
func (x *Value_Branch) GetThen() *Value
func (*Value_Branch) ProtoMessage ¶
func (*Value_Branch) ProtoMessage()
func (*Value_Branch) ProtoReflect ¶
func (x *Value_Branch) ProtoReflect() protoreflect.Message
func (*Value_Branch) Reset ¶
func (x *Value_Branch) Reset()
func (*Value_Branch) String ¶
func (x *Value_Branch) String() string
type Value_Break ¶
type Value_Break struct {
// break breaks out of the given number of while evaluations.
// while evaluations where break occurs in the conditional part do not
// count.
Break uint32 `protobuf:"varint,24,opt,name=break,proto3,oneof"`
}
type Value_Bytes ¶
type Value_Bytes struct {
// bytes is an explicit bytes value.
Bytes []byte `protobuf:"bytes,10,opt,name=bytes,proto3,oneof"`
}
type Value_Continue ¶
type Value_Continue struct {
// continue continues the given nth enclosing while evaluation.
// while evaluations where continue occurs in the conditional
// part do not count.
Continue uint32 `protobuf:"varint,25,opt,name=continue,proto3,oneof"`
}
type Value_Default ¶
type Value_Duration ¶
type Value_Duration struct {
// duration is an explicit duration.
Duration *durationpb.Duration `protobuf:"bytes,16,opt,name=duration,proto3,oneof"`
}
type Value_Enum ¶
type Value_Enum struct {
// type is the full name of the enum type. Required.
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
// by selects the enum value by its numeric value or by its name. Required.
//
// Types that are assignable to By:
// *Value_Enum_Number
// *Value_Enum_Name
By isValue_Enum_By `protobuf_oneof:"by"`
// contains filtered or unexported fields
}
Enum describes an enum value.
func (*Value_Enum) Descriptor
deprecated
func (*Value_Enum) Descriptor() ([]byte, []int)
Deprecated: Use Value_Enum.ProtoReflect.Descriptor instead.
func (*Value_Enum) GetBy ¶
func (m *Value_Enum) GetBy() isValue_Enum_By
func (*Value_Enum) GetName ¶
func (x *Value_Enum) GetName() string
func (*Value_Enum) GetNumber ¶
func (x *Value_Enum) GetNumber() int32
func (*Value_Enum) GetType ¶
func (x *Value_Enum) GetType() string
func (*Value_Enum) ProtoMessage ¶
func (*Value_Enum) ProtoMessage()
func (*Value_Enum) ProtoReflect ¶
func (x *Value_Enum) ProtoReflect() protoreflect.Message
func (*Value_Enum) Reset ¶
func (x *Value_Enum) Reset()
func (*Value_Enum) String ¶
func (x *Value_Enum) String() string
type Value_Enum_ ¶
type Value_Enum_ struct {
// enum is an explicit enum value.
Enum *Value_Enum `protobuf:"bytes,11,opt,name=enum,proto3,oneof"`
}
type Value_Enum_Name ¶
type Value_Enum_Name struct {
// name is the name of the enum constant.
Name string `protobuf:"bytes,3,opt,name=name,proto3,oneof"`
}
type Value_Enum_Number ¶
type Value_Enum_Number struct {
// number is the numeric value of the enum constant.
Number int32 `protobuf:"varint,2,opt,name=number,proto3,oneof"`
}
type Value_Int ¶ added in v0.0.2
type Value_Int struct {
// int is an explicit signed integer value.
Int int64 `protobuf:"varint,8,opt,name=int,proto3,oneof"`
}
type Value_Kind ¶
type Value_Kind int32
Kind enumerates protobuf type kinds as in google.protobuf.FieldDescriptorProto.Type. We cannot use the latter enum because it is a proto2 type and we use proto3 syntax. The enum numbers are identical, though.
const ( // INVALID has no counterpart in google.protobuf.FieldDescriptorProto.Type, // but proto3 enums must start with zero. Value_INVALID Value_Kind = 0 // DOUBLE is the kind of the double type. Value_DOUBLE Value_Kind = 1 // FLOAT is the kind of the float type. Value_FLOAT Value_Kind = 2 // INT64 is the kind of the int64 type. Value_INT64 Value_Kind = 3 // UINT64 is the kind of the uint64 type. Value_UINT64 Value_Kind = 4 // INT32 is the kind of the int32 type. Value_INT32 Value_Kind = 5 // FIXED64 is the kind of the fixed64 type. Value_FIXED64 Value_Kind = 6 // FIXED32 is the kind of the fixed32 type. Value_FIXED32 Value_Kind = 7 // BOOL is the kind of the bool type. Value_BOOL Value_Kind = 8 // STRING is the kind of the string type. Value_STRING Value_Kind = 9 // MESSAGE is the kind for all message types. Value_MESSAGE Value_Kind = 11 // BYTES is the kind for the bytes type. Value_BYTES Value_Kind = 12 // UINT32 is the kind for the uint32 type. Value_UINT32 Value_Kind = 13 // ENUM is the kind for all enum types. Value_ENUM Value_Kind = 14 // SFIXED32 is the kind for the sfixed32 type. Value_SFIXED32 Value_Kind = 15 // SFIXED64 is the kind for the sfixed64 type. Value_SFIXED64 Value_Kind = 16 // SINT32 is the kind for the sint32 type. Value_SINT32 Value_Kind = 17 // SINT64 is the kind for the sint64 type. Value_SINT64 Value_Kind = 18 )
func (Value_Kind) Descriptor ¶
func (Value_Kind) Descriptor() protoreflect.EnumDescriptor
func (Value_Kind) Enum ¶
func (x Value_Kind) Enum() *Value_Kind
func (Value_Kind) EnumDescriptor
deprecated
func (Value_Kind) EnumDescriptor() ([]byte, []int)
Deprecated: Use Value_Kind.Descriptor instead.
func (Value_Kind) Number ¶
func (x Value_Kind) Number() protoreflect.EnumNumber
func (Value_Kind) String ¶
func (x Value_Kind) String() string
func (Value_Kind) Type ¶
func (Value_Kind) Type() protoreflect.EnumType
type Value_List ¶
type Value_List struct {
// kind is the kind of the value type of the list.
Kind Value_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=com.github.thecount.protoeval.Value_Kind" json:"kind,omitempty"`
// type is the full name of the value type of the list.
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
// values are the values in this List. Unless the list is a heterogeneous
// CEL list, all values must have a type compatible with kind and type.
Values []*Value `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
// contains filtered or unexported fields
}
List describes a list value. If both kind and type are omitted, the resulting list is a heterogeneous CEL list. If kind is omitted but type is not, kind is assumed to be MESSAGE. If kind is ENUM or MESSAGE, type must not be omitted.
func (*Value_List) Descriptor
deprecated
func (*Value_List) Descriptor() ([]byte, []int)
Deprecated: Use Value_List.ProtoReflect.Descriptor instead.
func (*Value_List) GetKind ¶
func (x *Value_List) GetKind() Value_Kind
func (*Value_List) GetType ¶
func (x *Value_List) GetType() string
func (*Value_List) GetValues ¶
func (x *Value_List) GetValues() []*Value
func (*Value_List) ProtoMessage ¶
func (*Value_List) ProtoMessage()
func (*Value_List) ProtoReflect ¶
func (x *Value_List) ProtoReflect() protoreflect.Message
func (*Value_List) Reset ¶
func (x *Value_List) Reset()
func (*Value_List) String ¶
func (x *Value_List) String() string
type Value_List_ ¶
type Value_List_ struct {
// list is an explicit list value based on scope. For simple lists,
// basic_value may be a better choice.
List *Value_List `protobuf:"bytes,12,opt,name=list,proto3,oneof"`
}
type Value_Load ¶
type Value_Load struct {
// load loads a value from the environment.
// load should evaluate to a string, the key to be retrieved from the
// enviroinment.
// If no previous store under that key is present, the value is null.
Load *Value `protobuf:"bytes,28,opt,name=load,proto3,oneof"`
}
type Value_Map ¶
type Value_Map struct {
// key_kind is the kind of the key type of the map.
// Must be a valid kind for a map key type.
// Can be omitted, see above.
KeyKind Value_Kind `` /* 129-byte string literal not displayed */
// value_kind is the kind of the value type of the map.
ValueKind Value_Kind `` /* 135-byte string literal not displayed */
// value_type is the full name of the value type of the map.
ValueType string `protobuf:"bytes,3,opt,name=value_type,json=valueType,proto3" json:"value_type,omitempty"`
// entries is the list of map entries. The keys must be mutually distinct.
// Keys and values must match the types determined by
// key_kind/value_kind/value_type as described above.
Entries []*Value_Map_Entry `protobuf:"bytes,4,rep,name=entries,proto3" json:"entries,omitempty"`
// contains filtered or unexported fields
}
Map describes a map value. If key_kind is omitted, all key types allowed for protobuf maps (string, bool, and the integer types) are permitted for keys. If value_kind and value_type are both omitted, the resulting map can have heterogeneous values. If value_kind is omitted but value_type is not, value_kind is assumed to be MESSAGE. If value_kind is ENUM or MESSAGE, value_type must not be omitted.
func (*Value_Map) Descriptor
deprecated
func (*Value_Map) GetEntries ¶
func (x *Value_Map) GetEntries() []*Value_Map_Entry
func (*Value_Map) GetKeyKind ¶
func (x *Value_Map) GetKeyKind() Value_Kind
func (*Value_Map) GetValueKind ¶
func (x *Value_Map) GetValueKind() Value_Kind
func (*Value_Map) GetValueType ¶
func (*Value_Map) ProtoMessage ¶
func (*Value_Map) ProtoMessage()
func (*Value_Map) ProtoReflect ¶
func (x *Value_Map) ProtoReflect() protoreflect.Message
type Value_Map_ ¶
type Value_Map_ struct {
// map is an explicit map value based on scope. For simple maps,
// basic_value may be a better choice.
Map *Value_Map `protobuf:"bytes,13,opt,name=map,proto3,oneof"`
}
type Value_Map_Entry ¶
type Value_Map_Entry struct {
// key is the the of this entry. Required.
Key *Value `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// value is the value of this entry. Required.
Value *Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
// contains filtered or unexported fields
}
Entry describes a map entry.
func (*Value_Map_Entry) Descriptor
deprecated
func (*Value_Map_Entry) Descriptor() ([]byte, []int)
Deprecated: Use Value_Map_Entry.ProtoReflect.Descriptor instead.
func (*Value_Map_Entry) GetKey ¶
func (x *Value_Map_Entry) GetKey() *Value
func (*Value_Map_Entry) GetValue ¶
func (x *Value_Map_Entry) GetValue() *Value
func (*Value_Map_Entry) ProtoMessage ¶
func (*Value_Map_Entry) ProtoMessage()
func (*Value_Map_Entry) ProtoReflect ¶
func (x *Value_Map_Entry) ProtoReflect() protoreflect.Message
func (*Value_Map_Entry) Reset ¶
func (x *Value_Map_Entry) Reset()
func (*Value_Map_Entry) String ¶
func (x *Value_Map_Entry) String() string
type Value_Message ¶
type Value_Message struct {
// type is the full name of the message type. Required.
Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
// fields describes the message fields. The types of the values must match
// the message field types.
Fields map[string]*Value `` /* 153-byte string literal not displayed */
// contains filtered or unexported fields
}
Message describes a message value.
func (*Value_Message) Descriptor
deprecated
func (*Value_Message) Descriptor() ([]byte, []int)
Deprecated: Use Value_Message.ProtoReflect.Descriptor instead.
func (*Value_Message) GetFields ¶
func (x *Value_Message) GetFields() map[string]*Value
func (*Value_Message) GetType ¶
func (x *Value_Message) GetType() string
func (*Value_Message) ProtoMessage ¶
func (*Value_Message) ProtoMessage()
func (*Value_Message) ProtoReflect ¶
func (x *Value_Message) ProtoReflect() protoreflect.Message
func (*Value_Message) Reset ¶
func (x *Value_Message) Reset()
func (*Value_Message) String ¶
func (x *Value_Message) String() string
type Value_Message_ ¶
type Value_Message_ struct {
// message is an explicit message value based on scope. For simple
// messages, basic_message may be a better choice.
Message *Value_Message `protobuf:"bytes,14,opt,name=message,proto3,oneof"`
}
type Value_Not ¶
type Value_Not struct {
// not yields a boolean value which is the inverse of the specified value
// based on scope. It is an error if the specified value is not boolean.
Not *Value `protobuf:"bytes,18,opt,name=not,proto3,oneof"`
}
type Value_Parent ¶
type Value_Parent struct {
// parent is a value based on the parent scope. It can be used to backtrack
// from the current scope.
Parent *Value `protobuf:"bytes,5,opt,name=parent,proto3,oneof"`
}
type Value_Proc ¶
type Value_Proc struct {
// proc stores the value in the environment.
// Only when loaded, the value will be evaluated with the then valid
// environment and scope.
Proc *Value_StoredValue `protobuf:"bytes,27,opt,name=proc,proto3,oneof"`
}
type Value_Program ¶
type Value_Program struct {
// code is the program code, unless lines is used.
// If lines is used, code must be empty.
Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
// lines are the lines of code. The program code is derived from the lines
// by concatenating them with newline characters between them. This is
// a convenience feature for protobuf representations which don't have
// easily human readable multiline strings (namely JSON).
// If code is used, lines must be empty.
Lines []string `protobuf:"bytes,2,rep,name=lines,proto3" json:"lines,omitempty"`
// contains filtered or unexported fields
}
Program describes a CEL program.
func (*Value_Program) Descriptor
deprecated
added in
v0.0.3
func (*Value_Program) Descriptor() ([]byte, []int)
Deprecated: Use Value_Program.ProtoReflect.Descriptor instead.
func (*Value_Program) GetCode ¶ added in v0.0.3
func (x *Value_Program) GetCode() string
func (*Value_Program) GetLines ¶ added in v0.0.3
func (x *Value_Program) GetLines() []string
func (*Value_Program) ProtoMessage ¶ added in v0.0.3
func (*Value_Program) ProtoMessage()
func (*Value_Program) ProtoReflect ¶ added in v0.0.3
func (x *Value_Program) ProtoReflect() protoreflect.Message
func (*Value_Program) Reset ¶ added in v0.0.3
func (x *Value_Program) Reset()
func (*Value_Program) String ¶ added in v0.0.3
func (x *Value_Program) String() string
type Value_Program_ ¶ added in v0.0.3
type Value_Program_ struct {
// program is a user defined program to determine the value.
Program *Value_Program `protobuf:"bytes,29,opt,name=program,proto3,oneof"`
}
type Value_Range ¶ added in v0.0.4
type Value_Range struct {
// iterable is the iterable value ranged over. If omitted, the scope value
// is used instead. It is an error if this value is not an aggregate.
Iterable *Value `protobuf:"bytes,1,opt,name=iterable,proto3" json:"iterable,omitempty"`
// value is evaluated for each element in the iterable value ranged over.
//
// Two arguments will be added before each evaluation, and
// removed after each evaluation: for a list, the 0-th argument is the zero
// based list index, the 1st argument is the list value. For a map, the 0-th
// argument is the map key, and the 1st argument is the map value.
//
// A list will be evaluated in order. The evaluation order for a map is
// unspecified.
//
// If an evaluation yields a value other than null, evaluation
// stops early and the range yields that value. Otherwise, the range
// yields null.
Value *Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
// contains filtered or unexported fields
}
Range describes a value obtained by ranging over an aggregate, i. e., a list or a map.
func (*Value_Range) Descriptor
deprecated
added in
v0.0.4
func (*Value_Range) Descriptor() ([]byte, []int)
Deprecated: Use Value_Range.ProtoReflect.Descriptor instead.
func (*Value_Range) GetIterable ¶ added in v0.0.4
func (x *Value_Range) GetIterable() *Value
func (*Value_Range) GetValue ¶ added in v0.0.4
func (x *Value_Range) GetValue() *Value
func (*Value_Range) ProtoMessage ¶ added in v0.0.4
func (*Value_Range) ProtoMessage()
func (*Value_Range) ProtoReflect ¶ added in v0.0.4
func (x *Value_Range) ProtoReflect() protoreflect.Message
func (*Value_Range) Reset ¶ added in v0.0.4
func (x *Value_Range) Reset()
func (*Value_Range) String ¶ added in v0.0.4
func (x *Value_Range) String() string
type Value_Range_ ¶ added in v0.0.4
type Value_Range_ struct {
// range ranges over an aggregate value. See the Range documentation for
// which value this yields.
Range *Value_Range `protobuf:"bytes,30,opt,name=range,proto3,oneof"`
}
type Value_Seq ¶
type Value_Seq struct {
// seq yields the value of last evaluated element in the list (based on
// scope). This is normally the final element, but occurrences of break
// or continue may cut the evaluation short. If no elements are evaluated,
// seq yields null.
Seq *Value_ValueList `protobuf:"bytes,21,opt,name=seq,proto3,oneof"`
}
type Value_Store ¶
type Value_Store struct {
// store stores the evaluated value in the environment.
// The completely evaluated value can be retrieved again with load.
Store *Value_StoredValue `protobuf:"bytes,26,opt,name=store,proto3,oneof"`
}
type Value_StoredValue ¶
type Value_StoredValue struct {
// key is the storage key. It must evaluate to a string.
Key *Value `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// value is the value stored under key.
Value *Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
// contains filtered or unexported fields
}
StoredValue describes a value stored in the environment.
func (*Value_StoredValue) Descriptor
deprecated
func (*Value_StoredValue) Descriptor() ([]byte, []int)
Deprecated: Use Value_StoredValue.ProtoReflect.Descriptor instead.
func (*Value_StoredValue) GetKey ¶
func (x *Value_StoredValue) GetKey() *Value
func (*Value_StoredValue) GetValue ¶
func (x *Value_StoredValue) GetValue() *Value
func (*Value_StoredValue) ProtoMessage ¶
func (*Value_StoredValue) ProtoMessage()
func (*Value_StoredValue) ProtoReflect ¶
func (x *Value_StoredValue) ProtoReflect() protoreflect.Message
func (*Value_StoredValue) Reset ¶
func (x *Value_StoredValue) Reset()
func (*Value_StoredValue) String ¶
func (x *Value_StoredValue) String() string
type Value_Switch ¶
type Value_Switch struct {
// cases is the list of cases. The list will be evaluated in order. The
// first case which matches determines the then value of this Switch.
// If no case matches, the default value is returned.
Cases []*Value_Branch `protobuf:"bytes,1,rep,name=cases,proto3" json:"cases,omitempty"`
// default is the value returned if none of the cases matches.
// If default is omitted, the value will be null in this case.
Default *Value `protobuf:"bytes,2,opt,name=default,proto3" json:"default,omitempty"`
// contains filtered or unexported fields
}
Switch describes a value selection by condition.
func (*Value_Switch) Descriptor
deprecated
func (*Value_Switch) Descriptor() ([]byte, []int)
Deprecated: Use Value_Switch.ProtoReflect.Descriptor instead.
func (*Value_Switch) GetCases ¶
func (x *Value_Switch) GetCases() []*Value_Branch
func (*Value_Switch) GetDefault ¶
func (x *Value_Switch) GetDefault() *Value
func (*Value_Switch) ProtoMessage ¶
func (*Value_Switch) ProtoMessage()
func (*Value_Switch) ProtoReflect ¶
func (x *Value_Switch) ProtoReflect() protoreflect.Message
func (*Value_Switch) Reset ¶
func (x *Value_Switch) Reset()
func (*Value_Switch) String ¶
func (x *Value_Switch) String() string
type Value_Switch_ ¶
type Value_Switch_ struct {
// switch yields a value (based on scope) based on conditions.
Switch *Value_Switch `protobuf:"bytes,22,opt,name=switch,proto3,oneof"`
}
type Value_Timestamp ¶
type Value_Timestamp struct {
// timestamp is an explicit timestamp.
Timestamp *timestamppb.Timestamp `protobuf:"bytes,17,opt,name=timestamp,proto3,oneof"`
}
type Value_Uint ¶ added in v0.0.2
type Value_Uint struct {
// uint is an explicit unsigned integer value.
Uint uint64 `protobuf:"varint,9,opt,name=uint,proto3,oneof"`
}
type Value_ValueList ¶
type Value_ValueList struct {
// values is the list of values.
Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
// contains filtered or unexported fields
}
ValueList is a list of values, not necessarily of the same type (though users of ValueList often prescribe certain type constraints).
func (*Value_ValueList) Descriptor
deprecated
func (*Value_ValueList) Descriptor() ([]byte, []int)
Deprecated: Use Value_ValueList.ProtoReflect.Descriptor instead.
func (*Value_ValueList) GetValues ¶
func (x *Value_ValueList) GetValues() []*Value
func (*Value_ValueList) ProtoMessage ¶
func (*Value_ValueList) ProtoMessage()
func (*Value_ValueList) ProtoReflect ¶
func (x *Value_ValueList) ProtoReflect() protoreflect.Message
func (*Value_ValueList) Reset ¶
func (x *Value_ValueList) Reset()
func (*Value_ValueList) String ¶
func (x *Value_ValueList) String() string
type Value_While ¶
type Value_While struct {
// while repeatedly evaluates the then part of the branch for as long
// as the case yields true. The final value from then is returned.
// If then is never evaluated, null is returned.
While *Value_Branch `protobuf:"bytes,23,opt,name=while,proto3,oneof"`
}