MCPcopy
hub / github.com/pocketbase/pocketbase / writeRandomStringByRegex

Function writeRandomStringByRegex

tools/security/random_by_regex.go:52–100  ·  view source on GitHub ↗
(r *syntax.Regexp, sb *strings.Builder)

Source from the content-addressed store, hash-verified

50}
51
52func writeRandomStringByRegex(r *syntax.Regexp, sb *strings.Builder) error {
53 // https://pkg.go.dev/regexp/syntax#Op
54 switch r.Op {
55 case syntax.OpCharClass:
56 c, err := randomRuneFromPairs(r.Rune)
57 if err != nil {
58 return err
59 }
60 _, err = sb.WriteRune(c)
61 return err
62 case syntax.OpAnyChar, syntax.OpAnyCharNotNL:
63 c, err := randomRuneFromPairs(anyCharNotNLPairs)
64 if err != nil {
65 return err
66 }
67 _, err = sb.WriteRune(c)
68 return err
69 case syntax.OpAlternate:
70 idx, err := randomNumber(len(r.Sub))
71 if err != nil {
72 return err
73 }
74 return writeRandomStringByRegex(r.Sub[idx], sb)
75 case syntax.OpConcat:
76 var err error
77 for _, sub := range r.Sub {
78 err = writeRandomStringByRegex(sub, sb)
79 if err != nil {
80 break
81 }
82 }
83 return err
84 case syntax.OpRepeat:
85 return repeatRandomStringByRegex(r.Sub[0], sb, r.Min, r.Max)
86 case syntax.OpQuest:
87 return repeatRandomStringByRegex(r.Sub[0], sb, 0, 1)
88 case syntax.OpPlus:
89 return repeatRandomStringByRegex(r.Sub[0], sb, 1, -1)
90 case syntax.OpStar:
91 return repeatRandomStringByRegex(r.Sub[0], sb, 0, -1)
92 case syntax.OpCapture:
93 return writeRandomStringByRegex(r.Sub[0], sb)
94 case syntax.OpLiteral:
95 _, err := sb.WriteString(string(r.Rune))
96 return err
97 default:
98 return fmt.Errorf("unsupported pattern operator %d", r.Op)
99 }
100}
101
102func repeatRandomStringByRegex(r *syntax.Regexp, sb *strings.Builder, min int, max int) error {
103 if max < 0 {

Callers 2

RandomStringByRegexFunction · 0.85

Calls 3

randomRuneFromPairsFunction · 0.85
randomNumberFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…