MCPcopy Create free account
hub / github.com/DNAProject/DNA / parseRawParamsString

Function parseRawParamsString

cmd/utils/params.go:67–132  ·  view source on GitHub ↗
(rawParamStr string)

Source from the content-addressed store, hash-verified

65}
66
67func parseRawParamsString(rawParamStr string) ([]interface{}, int, error) {
68 if len(rawParamStr) == 0 {
69 return nil, 0, nil
70 }
71 rawParamItems := make([]interface{}, 0)
72 curRawParam := ""
73 index := 0
74 totalSize := len(rawParamStr)
75 isEscMode := false
76 for i := 0; i < totalSize; i++ {
77 s := string(rawParamStr[i])
78 if s == PARAM_ESC_CHAR {
79 if isEscMode {
80 isEscMode = false
81 curRawParam += s
82 } else {
83 isEscMode = true
84 }
85 continue
86 } else {
87 if isEscMode {
88 isEscMode = false
89 curRawParam += s
90 continue
91 }
92 }
93
94 switch s {
95 case PARAM_TYPE_SPLIT:
96 curRawParam += PARAM_TYPE_SPLIT_INC
97 case PARAMS_SPLIT:
98 curRawParam = strings.TrimSpace(curRawParam)
99 if len(curRawParam) > 0 {
100 rawParamItems = append(rawParamItems, curRawParam)
101 curRawParam = ""
102 }
103 case PARAM_LEFT_BRACKET:
104 if index == totalSize-1 {
105 return rawParamItems, 0, nil
106 }
107 //clear current param as invalid input
108 curRawParam = ""
109 items, size, err := parseRawParamsString(string(rawParamStr[i+1:]))
110 if err != nil {
111 return nil, 0, fmt.Errorf("parse params error:%s", err)
112 }
113 if len(items) > 0 {
114 rawParamItems = append(rawParamItems, items)
115 }
116 i += size
117 case PARAM_RIGHT_BRACKET:
118 curRawParam = strings.TrimSpace(curRawParam)
119 if len(curRawParam) > 0 {
120 rawParamItems = append(rawParamItems, curRawParam)
121 }
122 return rawParamItems, i + 1, nil
123 default:
124 curRawParam += s

Callers 3

TestParseRawParamsArrayFunction · 0.85
ParseParamsFunction · 0.85
ParseReturnValueFunction · 0.85

Calls 1

ErrorfMethod · 0.80

Tested by 1

TestParseRawParamsArrayFunction · 0.68