File: string.go

package info (click to toggle)
golang-github-aquasecurity-go-version 0.0~git20210121.637058c-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 256 kB
  • sloc: makefile: 5
file content (94 lines) | stat: -rw-r--r-- 1,367 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package part

import (
	"strings"
)

type String string

func NewString(s string) String {
	return String(s)
}

func (s String) Compare(other Part) int {
	if other == nil {
		return 1
	} else if s == other {
		return 0
	}

	switch o := other.(type) {
	case Uint64:
		return 1
	case String:
		return strings.Compare(string(s), string(o))
	case PreString:
		return strings.Compare(string(s), string(o))
	case Any:
		return 0
	case Empty:
		if o.IsAny() {
			return 0
		}
		return s.Compare(Uint64(0))
	}
	return 0
}

func (s String) IsNull() bool {
	return s == ""
}

func (s String) IsAny() bool {
	return false
}

func (s String) IsEmpty() bool {
	return false
}

// PreString is less than the number
// e.g. a < 1
type PreString string

func NewPreString(s string) PreString {
	return PreString(s)
}

func (s PreString) Compare(other Part) int {
	if other == nil {
		return 1
	} else if s == other {
		return 0
	}

	switch o := other.(type) {
	case Uint64:
		return -1
	case String:
		return strings.Compare(string(s), string(o))
	case PreString:
		return strings.Compare(string(s), string(o))
	case Any:
		return 0
	case Empty:
		if o.IsAny() {
			return 0
		}

		return s.Compare(Uint64(0))
	}
	return 0
}

func (s PreString) IsNull() bool {
	return s == ""
}

func (s PreString) IsAny() bool {
	return false
}

func (s PreString) IsEmpty() bool {
	return false
}