github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/types/querystring/array.go (about) 1 package string 2 3 import ( 4 "bytes" 5 "context" 6 7 "github.com/lmorg/murex/lang/stdio" 8 "github.com/lmorg/murex/lang/types" 9 ) 10 11 func readArray(_ context.Context, read stdio.Io, callback func([]byte)) 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 split := bytes.Split(b, []byte{'&'}) 29 for i := range split { 30 callback(split[i]) 31 } 32 33 return nil 34 } 35 36 func readArrayWithType(_ context.Context, read stdio.Io, callback func(interface{}, string)) error { 37 b, err := read.ReadAll() 38 if err != nil { 39 return err 40 } 41 42 if len(b) == 0 { 43 return nil 44 } 45 46 if b[0] == '?' { 47 if len(b) == 1 { 48 return nil 49 } 50 b = b[1:] 51 } 52 53 split := bytes.Split(b, []byte{'&'}) 54 for i := range split { 55 callback(split[i], types.String) 56 } 57 58 return nil 59 }