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  }