github.com/attic-labs/noms@v0.0.0-20210827224422-e5fa29d95e8b/samples/go/csv/common.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package csv 6 7 import ( 8 "fmt" 9 "unicode/utf8" 10 ) 11 12 // StringToRune returns the rune contained in delimiter or an error. 13 func StringToRune(delimiter string) (rune, error) { 14 dlimLen := len(delimiter) 15 if dlimLen == 0 { 16 return 0, fmt.Errorf("delimiter flag must contain exactly one character (rune), not an empty string") 17 } 18 19 d, runeSize := utf8.DecodeRuneInString(delimiter) 20 if d == utf8.RuneError { 21 return 0, fmt.Errorf("Invalid utf8 string in delimiter flag: %s", delimiter) 22 } 23 if dlimLen != runeSize { 24 return 0, fmt.Errorf("delimiter flag is too long. It must contain exactly one character (rune), but instead it is: %s", delimiter) 25 } 26 return d, nil 27 }