MCPcopy
hub / github.com/httprunner/httprunner / Parse

Method Parse

hrp/parser.go:99–142  ·  view source on GitHub ↗
(raw interface{}, variablesMapping map[string]interface{})

Source from the content-addressed store, hash-verified

97}
98
99func (p *Parser) Parse(raw interface{}, variablesMapping map[string]interface{}) (interface{}, error) {
100 rawValue := reflect.ValueOf(raw)
101 switch rawValue.Kind() {
102 case reflect.String:
103 // json.Number
104 if rawValue, ok := raw.(builtinJSON.Number); ok {
105 return parseJSONNumber(rawValue)
106 }
107 // other string
108 value := rawValue.String()
109 value = strings.TrimSpace(value)
110 return p.ParseString(value, variablesMapping)
111 case reflect.Slice:
112 parsedSlice := make([]interface{}, rawValue.Len())
113 for i := 0; i < rawValue.Len(); i++ {
114 parsedValue, err := p.Parse(rawValue.Index(i).Interface(), variablesMapping)
115 if err != nil {
116 return raw, err
117 }
118 parsedSlice[i] = parsedValue
119 }
120 return parsedSlice, nil
121 case reflect.Map: // convert any map to map[string]interface{}
122 parsedMap := make(map[string]interface{})
123 for _, k := range rawValue.MapKeys() {
124 parsedKey, err := p.ParseString(k.String(), variablesMapping)
125 if err != nil {
126 return raw, err
127 }
128 v := rawValue.MapIndex(k)
129 parsedValue, err := p.Parse(v.Interface(), variablesMapping)
130 if err != nil {
131 return raw, err
132 }
133
134 key := convertString(parsedKey)
135 parsedMap[key] = parsedValue
136 }
137 return parsedMap, nil
138 default:
139 // other types, e.g. nil, int, float, bool
140 return builtin.TypeNormalization(raw), nil
141 }
142}
143
144func parseJSONNumber(raw builtinJSON.Number) (value interface{}, err error) {
145 if strings.Contains(raw.String(), ".") {

Callers 15

ParseHeadersMethod · 0.95
ParseStringMethod · 0.95
ParseVariablesMethod · 0.95
buildURLFunction · 0.80
runStepWebSocketFunction · 0.80
writeWebSocketFunction · 0.80
generateMethod · 0.80

Calls 7

ParseStringMethod · 0.95
TypeNormalizationFunction · 0.92
parseJSONNumberFunction · 0.85
convertStringFunction · 0.85
LenMethod · 0.80
StringMethod · 0.65
IndexMethod · 0.45