github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/types/querystring/map.go (about) 1 package string 2 3 import ( 4 "net/url" 5 6 "github.com/lmorg/murex/config" 7 "github.com/lmorg/murex/lang/stdio" 8 "github.com/lmorg/murex/lang/types" 9 ) 10 11 func readMap(read stdio.Io, _ *config.Config, callback func(*stdio.Map)) error { 12 b, err := read.ReadAll() 13 if err != nil { 14 return err 15 } 16 17 if len(b) == 0 { 18 return nil 19 } 20 21 if b[0] == '?' { 22 if len(b) == 1 { 23 return nil 24 } 25 b = b[1:] 26 } 27 28 values, err := url.ParseQuery(string(b)) 29 if err != nil { 30 return err 31 } 32 33 for k := range values { 34 for i := range values[k] { 35 callback(&stdio.Map{ 36 Key: k, 37 Value: values[k][i], 38 DataType: types.String, 39 Last: true, 40 }) 41 } 42 } 43 44 return nil 45 }