constraints

package
v0.0.5-alpha Latest Latest
Warning

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

Go to latest
Published: Jun 13, 2025 License: AGPL-3.0 Imports: 11 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidConstraint            = errors.New("invalid Semantic Version")
	ErrEmptyConstraint              = errors.New("empty constraint")
	ErrIllegalCharacterInConstraint = errors.New("illegal character in constraint")
	ErrInvalidVersion               = errors.New("invalid Version")
)

Functions

func IsEqualityToken

func IsEqualityToken(token Token) bool

func IsJoinToken

func IsJoinToken(token Token) bool

func IsOperatorToken

func IsOperatorToken(token Token) bool

func IsRangeToken

func IsRangeToken(token Token) bool

Types

type Constraint

type Constraint struct {
	Original string
	Ranges   []Range
	Join     []JoinOp
}

func ParseConstraint

func ParseConstraint(constraintString string) (Constraint, error)

Parses a given node semver constraint string into a constraint object

func (*Constraint) String

func (c *Constraint) String() string

type JoinOp

type JoinOp string
const (
	CONJUNCTON  JoinOp = "and"
	DISJUNCTION JoinOp = "or"
)

type Lexer

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

func (Lexer) ScanOne

func (lexer Lexer) ScanOne() (token Token, literal string)

func (Lexer) ScanWhole

func (lexer Lexer) ScanWhole() (tokens []Token, literals []string)

type Range

type Range struct {
	StartOp      Token
	StartVersion version.Semver
	EndOp        Token
	EndVersion   version.Semver
}

func (Range) String

func (parsedRange Range) String() string

type SubConstraint

type SubConstraint struct {
	Ranges Range
}

type Token

type Token string
const (
	// Special tokens
	ILLEGAL Token = "ILLEGAL"
	EOF     Token = "EOF"
	SOF     Token = "SOF"
	WS      Token = "WS"

	// Keywords
	EQ                 Token = "EQ"                // =
	LT                 Token = "LT"                // <
	LE                 Token = "LE"                // <=
	GT                 Token = "GT"                // >
	GE                 Token = "GE"                // >=
	NOT                Token = "NOT"               // !
	TILDE              Token = "TILDE"             // ~
	CARET              Token = "CARET"             // ^
	OPEN_PARENTHESIS   Token = "OPEN_PARENTHESIS"  // (
	CLOSE_PARENTHESIS  Token = "CLOSE_PARENTHESIS" // )
	AND                Token = "AND"               // &&
	OR                 Token = "OR"                // ||
	HYPHEN             Token = "HYPHEN"            // -
	STAR               Token = "STAR"              // *
	ANY                Token = "ANY"               // ANY
	WILDCARD_X         Token = "WILDCARD_X"        // X
	CONSTRAINT         Token = "CONSTRAINT"
	UNKNOW_IDENTIFIER  Token = "UNKNOW_IDENTIFIER"
	VERSION_EXPRESSION Token = "VERSION_EXPRESSION"
)

func LexConstraint

func LexConstraint(constraint string) (tokens []Token, literals []string)

Jump to

Keyboard shortcuts

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