Documentation
¶
Index ¶
- Constants
- func IsFirstOrderPredicateOperation(op string) bool
- func IsJsonPatchExtendedOperation(op string) bool
- func IsJsonPatchOperation(op string) bool
- func IsPredicateOperation(op string) bool
- func IsSecondOrderPredicateOperation(op string) bool
- func IsValidJsonPatchType(typeStr string) bool
- type ApplyPatchOptions
- type Codec
- type CompactOperation
- type CreateRegexMatcher
- type JsonPatchOptions
- type JsonPatchTypes
- type Op
- type OpResult
- type OpType
- type Operation
- type PatchResult
- type PredicateOp
- type RegexMatcher
- type SecondOrderPredicateOp
Constants ¶
const ( // JSON Patch (RFC 6902) operations OpAddCode = 0 OpRemoveCode = 1 OpReplaceCode = 2 OpCopyCode = 3 OpMoveCode = 4 OpTestCode = 5 // String editing OpStrInsCode = 6 OpStrDelCode = 7 // Extra OpFlipCode = 8 OpIncCode = 9 // Slate.js OpSplitCode = 10 OpMergeCode = 11 OpExtendCode = 12 // JSON Predicate OpContainsCode = 30 OpDefinedCode = 31 OpEndsCode = 32 OpInCode = 33 OpLessCode = 34 OpMatchesCode = 35 OpMoreCode = 36 OpStartsCode = 37 OpUndefinedCode = 38 OpTestTypeCode = 39 OpTestStringCode = 40 OpTestStringLenCode = 41 OpTypeCode = 42 OpAndCode = 43 OpNotCode = 44 OpOrCode = 45 )
Operation code constants, numeric codes
Variables ¶
This section is empty.
Functions ¶
func IsFirstOrderPredicateOperation ¶
IsFirstOrderPredicateOperation checks if operation is a first-order predicate
func IsJsonPatchExtendedOperation ¶
IsJsonPatchExtendedOperation checks if operation is an extended operation.
func IsJsonPatchOperation ¶
IsJsonPatchOperation checks if operation is a core JSON Patch operation
func IsPredicateOperation ¶
IsPredicateOperation checks if operation is a predicate operation
func IsSecondOrderPredicateOperation ¶
IsSecondOrderPredicateOperation checks if operation is a second-order predicate.
func IsValidJsonPatchType ¶
IsValidJsonPatchType checks if a type string is a valid JSON Patch type
Types ¶
type ApplyPatchOptions ¶
type ApplyPatchOptions struct {
Mutate bool
JsonPatchOptions JsonPatchOptions
}
ApplyPatchOptions contains options for applying patches.
type Codec ¶
type Codec interface {
// Decode decodes a JSON operation object into an Op instance
Decode(operation Operation) (Op, error)
// DecodeSlice decodes an array of operations into an Op slice
DecodeSlice(operations []Operation) ([]Op, error)
// Encode encodes an Op instance into a JSON operation object
Encode(op Op) (Operation, error)
// EncodeSlice encodes an Op slice into an array of operations
EncodeSlice(ops []Op) ([]Operation, error)
}
Codec is the interface for codecs that provide unified encoding and decoding functionality.
type CompactOperation ¶
type CompactOperation = []interface{}
CompactOperation represents a compact format operation actually []interface{}, but with clearer semantics
type CreateRegexMatcher ¶
type CreateRegexMatcher func(pattern string, ignoreCase bool) RegexMatcher
CreateRegexMatcher is a function type that creates a regular expression matcher.
type JsonPatchOptions ¶
type JsonPatchOptions struct {
CreateMatcher CreateRegexMatcher
}
JsonPatchOptions contains options for JSON Patch operations.
type JsonPatchTypes ¶
type JsonPatchTypes string
JsonPatchTypes represents the valid JSON types for type operations.
const ( JsonPatchTypeString JsonPatchTypes = "string" JsonPatchTypeNumber JsonPatchTypes = "number" JsonPatchTypeBoolean JsonPatchTypes = "boolean" JsonPatchTypeObject JsonPatchTypes = "object" JsonPatchTypeInteger JsonPatchTypes = "integer" JsonPatchTypeArray JsonPatchTypes = "array" JsonPatchTypeNull JsonPatchTypes = "null" )
func GetJsonPatchType ¶
func GetJsonPatchType(value interface{}) JsonPatchTypes
GetJsonPatchType returns the JSON Patch type for a given value
type Op ¶
type Op interface {
// Op returns the operation type string (e.g. "add", "remove", etc.)
Op() OpType
// Code returns the numeric code for the operation (consistent with constants)
Code() int
// Path returns the JSON Pointer path for the operation (slice form)
Path() []string
// Apply applies the operation to the document, returning the new document and old value
Apply(doc any) (OpResult, error)
// ToJSON returns the standard JSON Patch format
ToJSON() (Operation, error)
// ToCompact returns the compact array format
ToCompact() (CompactOperation, error)
// Validate validates the operation parameters
Validate() error
}
Op is the unified interface for all JSON Patch operations. Any operation must implement these methods.
type OpResult ¶
type OpResult struct {
Doc interface{} `json:"doc"`
Old interface{} `json:"old,omitempty"`
}
OpResult represents the result of a single operation
type OpType ¶
type OpType string
const ( // JSON Patch (RFC 6902) operations OpAddType OpType = "add" OpRemoveType OpType = "remove" OpReplaceType OpType = "replace" OpMoveType OpType = "move" OpCopyType OpType = "copy" OpTestType OpType = "test" // JSON Predicate operations OpContainsType OpType = "contains" OpDefinedType OpType = "defined" OpUndefinedType OpType = "undefined" OpTypeType OpType = "type" OpTestTypeType OpType = "test_type" OpTestStringType OpType = "test_string" OpTestStringLenType OpType = "test_string_len" OpEndsType OpType = "ends" OpStartsType OpType = "starts" OpInType OpType = "in" OpLessType OpType = "less" OpMoreType OpType = "more" OpMatchesType OpType = "matches" // Composite operations OpAndType OpType = "and" OpOrType OpType = "or" OpNotType OpType = "not" // Extended operations OpFlipType OpType = "flip" OpIncType OpType = "inc" OpStrInsType OpType = "str_ins" OpStrDelType OpType = "str_del" OpSplitType OpType = "split" OpMergeType OpType = "merge" OpExtendType OpType = "extend" )
type Operation ¶
type Operation = map[string]interface{}
Operation represents a JSON Patch operation object compatible with map format
type PatchResult ¶
type PatchResult struct {
Doc interface{} `json:"doc"`
Res []OpResult `json:"res"`
}
PatchResult represents the result of a patch operation
type PredicateOp ¶
type PredicateOp interface {
Op
// Test tests the operation on the document, returning whether it passed
Test(doc any) (bool, error)
// Not returns whether the operation is a negation predicate
Not() bool
}
PredicateOp is the interface for all predicate (test-type) operations.
type RegexMatcher ¶
RegexMatcher is a function type that tests if a value matches a pattern.
type SecondOrderPredicateOp ¶
type SecondOrderPredicateOp interface {
PredicateOp
// Ops returns all sub-predicate operations
Ops() []PredicateOp
}
SecondOrderPredicateOp is the interface for second-order predicate operations that combine multiple predicates.