token.go (767B)
1 package main 2 3 import ( 4 "bufio" 5 "io" 6 "strings" 7 ) 8 9 type token struct { 10 name string 11 token string 12 config config 13 } 14 15 type config struct { 16 onlyIncome bool 17 } 18 19 func parseTokens(tokens io.Reader) ([]token, error) { 20 var o []token 21 scanner := bufio.NewScanner(tokens) 22 for scanner.Scan() { 23 text := scanner.Text() 24 if strings.HasPrefix(text, "#") { 25 continue 26 } 27 split := strings.Split(text, " ") 28 token := token{name: split[1], token: split[0]} 29 // config 30 if len(split) > 2 { 31 configs := strings.Split(split[2], ",") 32 for _, c := range configs { 33 switch c { 34 case "onlyIncome": 35 token.config = config{onlyIncome: true} 36 } 37 } 38 } 39 o = append(o, token) 40 } 41 if err := scanner.Err(); err != nil { 42 return []token{}, err 43 } 44 return o, nil 45 }