utils

package
v0.18.7 Latest Latest
Warning

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

Go to latest
Published: Nov 18, 2024 License: MIT Imports: 13 Imported by: 29

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ObjectLabel  = "object"
	IntegerLabel = "integer"
	NumberLabel  = "number"
	StringLabel  = "string"
	BinaryLabel  = "binary"
	ArrayLabel   = "array"
	BooleanLabel = "boolean"
	SchemaSource = "https://json-schema.org/draft/2020-12/schema"
	SchemaId     = "https://pb33f.io/openapi-changes/schema"
)

Functions

func AreValuesCorrectlyTyped added in v0.0.8

func AreValuesCorrectlyTyped(valType string, values interface{}) map[string]string

AreValuesCorrectlyTyped will look through an array of unknown values and check they match against the supplied type as a string. The return value is empty if everything is OK, or it contains failures in the form of a value as a key and a message as to why it's not valid

func BuildPath

func BuildPath(basePath string, segs []string) string

BuildPath will construct a JSONPath from a base and an array of strings.

func CheckEnumForDuplicates added in v0.0.8

func CheckEnumForDuplicates(seq []*yaml.Node) []*yaml.Node

CheckEnumForDuplicates will check an array of nodes to check if there are any duplicate values.

func CheckForMergeNodes added in v0.9.3

func CheckForMergeNodes(node *yaml.Node)

CheckForMergeNodes will check the top level of the schema for merge nodes. If any are found, then the merged nodes will be appended to the end of the rest of the nodes in the schema. Note: this is a destructive operation, so the in-memory node structure will be modified

func CheckPathOverlap added in v0.15.0

func CheckPathOverlap(pathA, pathB, sep string) string

func ConvertComponentIdIntoFriendlyPathSearch

func ConvertComponentIdIntoFriendlyPathSearch(id string) (string, string)

ConvertComponentIdIntoFriendlyPathSearch will convert a JSON Path into a friendly path search string. the friendliness comes from it being suitable for use with any JSON Path parser.

This function was re-written in v0.18.0 in order to fix a number of performance issues with the original implementation. Allocations were high and this function is used a lot, this new implementation is much lighter on string allocations by using a string builder.

func ConvertComponentIdIntoPath

func ConvertComponentIdIntoPath(id string) (string, string)

ConvertComponentIdIntoPath will convert a JSON Path into a component ID TODO: This function is named incorrectly and should be changed to reflect the correct function

func ConvertInterfaceArrayToStringArray

func ConvertInterfaceArrayToStringArray(raw interface{}) []string

ConvertInterfaceArrayToStringArray will convert an unknown interface array type, into a string slice

func ConvertInterfaceIntoStringMap

func ConvertInterfaceIntoStringMap(context interface{}) map[string]string

ConvertInterfaceIntoStringMap will convert an unknown input into a string map.

func ConvertInterfaceToStringArray

func ConvertInterfaceToStringArray(raw interface{}) []string

ConvertInterfaceToStringArray will convert an unknown input map type into a string array/slice

func ConvertYAMLtoJSON

func ConvertYAMLtoJSON(yamlData []byte) ([]byte, error)

ConvertYAMLtoJSON will do exactly what you think it will. It will deserialize YAML into serialized JSON.

func CreateBoolNode added in v0.7.0

func CreateBoolNode(str string) *yaml.Node

func CreateEmptyMapNode added in v0.7.0

func CreateEmptyMapNode() *yaml.Node

func CreateEmptyScalarNode added in v0.16.9

func CreateEmptyScalarNode() *yaml.Node

func CreateEmptySequenceNode added in v0.7.0

func CreateEmptySequenceNode() *yaml.Node

func CreateFloatNode added in v0.7.0

func CreateFloatNode(str string) *yaml.Node

func CreateIntNode added in v0.7.0

func CreateIntNode(str string) *yaml.Node

func CreateRefNode added in v0.7.0

func CreateRefNode(ref string) *yaml.Node

func CreateStringNode added in v0.7.0

func CreateStringNode(str string) *yaml.Node

func CreateYamlNode added in v0.14.0

func CreateYamlNode(a any) *yaml.Node

func DetermineWhitespaceLength added in v0.9.0

func DetermineWhitespaceLength(input string) int

DetermineWhitespaceLength will determine the length of the whitespace for a JSON or YAML file.

func ExtractValueFromInterfaceMap

func ExtractValueFromInterfaceMap(name string, raw interface{}) interface{}

ExtractValueFromInterfaceMap pulls out an unknown value from a map using a string key

func FindFirstKeyNode

func FindFirstKeyNode(key string, nodes []*yaml.Node, depth int) (keyNode *yaml.Node, valueNode *yaml.Node)

FindFirstKeyNode will locate the first key and value yaml.Node based on a key.

func FindKeyNode

func FindKeyNode(key string, nodes []*yaml.Node) (keyNode *yaml.Node, valueNode *yaml.Node)

FindKeyNode is a non-recursive search of a *yaml.Node Content for a child node with a key. Returns the key and value

func FindKeyNodeFull added in v0.0.5

func FindKeyNodeFull(key string, nodes []*yaml.Node) (keyNode *yaml.Node, labelNode *yaml.Node, valueNode *yaml.Node)

FindKeyNodeFull is an overloaded version of FindKeyNode. This version however returns keys, labels and values. generally different things are required from different node trees, so depending on what this function is looking at it will return different things.

func FindKeyNodeFullTop added in v0.1.4

func FindKeyNodeFullTop(key string, nodes []*yaml.Node) (keyNode *yaml.Node, labelNode *yaml.Node, valueNode *yaml.Node)

FindKeyNodeFullTop is an overloaded version of FindKeyNodeFull. This version only looks at the top level of the node and not the children.

func FindKeyNodeTop

func FindKeyNodeTop(key string, nodes []*yaml.Node) (keyNode *yaml.Node, valueNode *yaml.Node)

FindKeyNodeTop is a non-recursive search of top level nodes for a key, will not look at content. Returns the key and value

func FindLastChildNode

func FindLastChildNode(node *yaml.Node) *yaml.Node

FindLastChildNode will find the last node in a tree, based on a starting node. Deprecated: This function is deprecated, use FindLastChildNodeWithLevel instead. this has the potential to cause a stack overflow, so use with caution. It will be removed later.

func FindLastChildNodeWithLevel added in v0.8.1

func FindLastChildNodeWithLevel(node *yaml.Node, level int) *yaml.Node

FindLastChildNodeWithLevel will find the last node in a tree, based on a starting node. Will stop searching after 100 levels, because that's just silly, we probably have a loop.

func FindNodes

func FindNodes(yamlData []byte, jsonPath string) ([]*yaml.Node, error)

FindNodes will find a node based on JSONPath, it accepts raw yaml/json as input.

func FindNodesWithoutDeserializing

func FindNodesWithoutDeserializing(node *yaml.Node, jsonPath string) ([]*yaml.Node, error)

FindNodesWithoutDeserializing will find a node based on JSONPath, without deserializing from yaml/json

func FixContext

func FixContext(context string) string

FixContext will clean up a JSONpath string to be correctly traversable.

func IsHttpVerb

func IsHttpVerb(verb string) bool

IsHttpVerb will check if an operation is valid or not.

func IsJSON

func IsJSON(testString string) bool

IsJSON will tell you if a string is JSON or not.

func IsNodeAlias added in v0.9.3

func IsNodeAlias(node *yaml.Node) (*yaml.Node, bool)

IsNodeAlias checks if the node is an alias, and lifts out the anchor

func IsNodeArray

func IsNodeArray(node *yaml.Node) bool

IsNodeArray checks if a node is an array type

func IsNodeBoolValue

func IsNodeBoolValue(node *yaml.Node) bool

IsNodeBoolValue will check is a node is a bool

func IsNodeFloatValue

func IsNodeFloatValue(node *yaml.Node) bool

IsNodeFloatValue will check is a node is a float value.

func IsNodeIntValue

func IsNodeIntValue(node *yaml.Node) bool

IsNodeIntValue will check if a node is an int value

func IsNodeMap

func IsNodeMap(node *yaml.Node) bool

IsNodeMap checks if the node is a map type

func IsNodeNumberValue added in v0.9.0

func IsNodeNumberValue(node *yaml.Node) bool

IsNodeNumberValue will check if a node can be parsed as a float value.

func IsNodePolyMorphic

func IsNodePolyMorphic(node *yaml.Node) bool

IsNodePolyMorphic will return true if the node contains polymorphic keys.

func IsNodeRefValue added in v0.0.5

func IsNodeRefValue(node *yaml.Node) (bool, *yaml.Node, string)

func IsNodeStringValue

func IsNodeStringValue(node *yaml.Node) bool

IsNodeStringValue checks if a node is a string value

func IsYAML

func IsYAML(testString string) bool

func MakeTagReadable

func MakeTagReadable(node *yaml.Node) string

func NodeAlias added in v0.9.3

func NodeAlias(node *yaml.Node) *yaml.Node

NodeAlias checks if the node is an alias, and lifts out the anchor

func NodeMerge added in v0.16.9

func NodeMerge(nodes []*yaml.Node) *yaml.Node

func RenderCodeSnippet

func RenderCodeSnippet(startNode *yaml.Node, specData []string, before, after int) string

func ReplaceWindowsDriveWithLinuxPath added in v0.15.0

func ReplaceWindowsDriveWithLinuxPath(path string) string

func UnwrapErrors added in v0.13.0

func UnwrapErrors(err error) []error

Types

type Case added in v0.0.5

type Case int8
const (
	// OpenApi3 is used by all OpenAPI 3+ docs
	OpenApi3 = "openapi"

	// OpenApi2 is used by all OpenAPI 2 docs, formerly known as swagger.
	OpenApi2 = "swagger"

	// AsyncApi is used by akk AsyncAPI docs, all versions.
	AsyncApi = "asyncapi"

	PascalCase Case = iota
	CamelCase
	ScreamingSnakeCase
	SnakeCase
	KebabCase
	ScreamingKebabCase
	RegularCase
	UnknownCase
)

func DetectCase added in v0.0.5

func DetectCase(input string) Case

type ExtensionNode added in v0.0.5

type ExtensionNode struct {
	Key   *yaml.Node
	Value *yaml.Node
}

func FindExtensionNodes added in v0.0.5

func FindExtensionNodes(nodes []*yaml.Node) []*ExtensionNode

type KeyNodeResult

type KeyNodeResult struct {
	KeyNode   *yaml.Node
	ValueNode *yaml.Node
	Parent    *yaml.Node
	Path      []yaml.Node
}

KeyNodeResult is a result from a KeyNodeSearch performed by the FindAllKeyNodesWithPath

type KeyNodeSearch

type KeyNodeSearch struct {
	Key             string
	Ignore          []string
	Results         []*KeyNodeResult
	AllowExtensions bool
}

KeyNodeSearch keeps a track of everything we have found on our adventure down the trees.

type RemoteURLHandler added in v0.13.0

type RemoteURLHandler = func(url string) (*http.Response, error)

Jump to

Keyboard shortcuts

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