func loadPatterns(reader io.Reader) (*Trie, os.Error) { trie := NewTrie() var s scanner.Scanner s.Init(reader) s.Mode = scanner.ScanIdents | scanner.ScanRawStrings | scanner.SkipComments var which string tok := s.Scan() for tok != scanner.EOF { switch tok { case scanner.Ident: // we handle two identifiers: 'patterns' and 'exceptions' switch ident := s.TokenText(); ident { case `patterns`, `exceptions`: which = ident default: return nil, os.ErrorString(fmt.Sprintf("Unrecognized identifier '%s' at position %v", ident, s.Pos())) } case scanner.String, scanner.RawString: // trim the quotes from around the string tokstr := s.TokenText() str := tokstr[1 : len(tokstr)-1] switch which { case `patterns`: trie.AddPatternString(str) } } tok = s.Scan() } return trie, nil }
func (h *Hyphenator) loadPatterns(reader io.Reader) os.Error { var s scanner.Scanner s.Init(reader) s.Mode = scanner.ScanIdents | scanner.ScanRawStrings | scanner.SkipComments var which string tok := s.Scan() for tok != scanner.EOF { switch tok { case scanner.Ident: // we handle two identifiers: 'patterns' and 'exceptions' switch ident := s.TokenText(); ident { case `patterns`, `exceptions`: which = ident default: return os.ErrorString(fmt.Sprintf("Unrecognized identifier '%s' at position %v", ident, s.Pos())) } case scanner.String, scanner.RawString: // trim the quotes from around the string tokstr := s.TokenText() str := tokstr[1 : len(tokstr)-1] switch which { case `patterns`: h.patterns.AddPatternString(str) case `exceptions`: key := strings.Replace(str, `-`, ``, -1) h.exceptions[key] = str } } tok = s.Scan() } return nil }