MCPcopy Create free account
hub / github.com/EndlessCheng/codeforces-go / parseRawArg

Function parseRawArg

leetcode/testutil/leetcode.go:69–167  ·  view source on GitHub ↗
(tp reflect.Type, rawData string)

Source from the content-addressed store, hash-verified

67}
68
69func parseRawArg(tp reflect.Type, rawData string) (v reflect.Value, err error) {
70 rawData = strings.TrimSpace(rawData)
71 invalidErr := fmt.Errorf("invalid test data: %s", rawData)
72 switch tp.Kind() {
73 case reflect.String:
74 if len(rawData) <= 1 || rawData[0] != '"' && rawData[0] != '\'' || rawData[len(rawData)-1] != rawData[0] {
75 return reflect.Value{}, invalidErr
76 }
77 // remove " (or ') at leftmost and rightmost
78 v = reflect.ValueOf(rawData[1 : len(rawData)-1])
79 case reflect.Uint8: // byte
80 // rawData like "a" or 'a'
81 if len(rawData) != 3 || rawData[0] != '"' && rawData[0] != '\'' || rawData[2] != rawData[0] {
82 return reflect.Value{}, invalidErr
83 }
84 v = reflect.ValueOf(rawData[1])
85 case reflect.Int:
86 i, er := strconv.Atoi(rawData)
87 if er != nil {
88 return reflect.Value{}, invalidErr
89 }
90 v = reflect.ValueOf(i)
91 case reflect.Uint:
92 i, er := strconv.Atoi(rawData)
93 if er != nil {
94 return reflect.Value{}, invalidErr
95 }
96 v = reflect.ValueOf(uint(i))
97 case reflect.Int64:
98 i, er := strconv.Atoi(rawData)
99 if er != nil {
100 return reflect.Value{}, invalidErr
101 }
102 v = reflect.ValueOf(int64(i))
103 case reflect.Uint64:
104 i, er := strconv.Atoi(rawData)
105 if er != nil {
106 return reflect.Value{}, invalidErr
107 }
108 v = reflect.ValueOf(uint64(i))
109 case reflect.Float64:
110 f, er := strconv.ParseFloat(rawData, 64)
111 if er != nil {
112 return reflect.Value{}, invalidErr
113 }
114 v = reflect.ValueOf(f)
115 case reflect.Bool:
116 b, er := strconv.ParseBool(rawData)
117 if er != nil {
118 return reflect.Value{}, invalidErr
119 }
120 v = reflect.ValueOf(b)
121 case reflect.Slice:
122 splits, er := parseRawArray(rawData)
123 if er != nil {
124 return reflect.Value{}, er
125 }
126 v = reflect.New(tp).Elem()

Callers 2

Calls 6

parseRawArrayFunction · 0.85
buildTreeNodeFunction · 0.85
buildListNodeFunction · 0.85
buildPointFunction · 0.85
buildIntervalFunction · 0.85
AppendMethod · 0.80

Tested by

no test coverage detected