61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
|
// Copyright 2014 The Go Authors. All rights reserved.
|
|||
|
// Use of this source code is governed by a BSD-style
|
|||
|
// license that can be found in the LICENSE file.
|
|||
|
|
|||
|
package runes_test
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"unicode"
|
|||
|
|
|||
|
"golang.org/x/text/runes"
|
|||
|
"golang.org/x/text/transform"
|
|||
|
"golang.org/x/text/unicode/norm"
|
|||
|
"golang.org/x/text/width"
|
|||
|
)
|
|||
|
|
|||
|
func ExampleRemove() {
|
|||
|
t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)
|
|||
|
s, _, _ := transform.String(t, "résumé")
|
|||
|
fmt.Println(s)
|
|||
|
|
|||
|
// Output:
|
|||
|
// resume
|
|||
|
}
|
|||
|
|
|||
|
func ExampleMap() {
|
|||
|
replaceHyphens := runes.Map(func(r rune) rune {
|
|||
|
if unicode.Is(unicode.Hyphen, r) {
|
|||
|
return '|'
|
|||
|
}
|
|||
|
return r
|
|||
|
})
|
|||
|
s, _, _ := transform.String(replaceHyphens, "a-b‐c⸗d﹣e")
|
|||
|
fmt.Println(s)
|
|||
|
|
|||
|
// Output:
|
|||
|
// a|b|c|d|e
|
|||
|
}
|
|||
|
|
|||
|
func ExampleIn() {
|
|||
|
// Convert Latin characters to their canonical form, while keeping other
|
|||
|
// width distinctions.
|
|||
|
t := runes.If(runes.In(unicode.Latin), width.Fold, nil)
|
|||
|
s, _, _ := transform.String(t, "アルアノリウ tech / アルアノリウ tech")
|
|||
|
fmt.Println(s)
|
|||
|
|
|||
|
// Output:
|
|||
|
// アルアノリウ tech / アルアノリウ tech
|
|||
|
}
|
|||
|
|
|||
|
func ExampleIf() {
|
|||
|
// Widen everything but ASCII.
|
|||
|
isASCII := func(r rune) bool { return r <= unicode.MaxASCII }
|
|||
|
t := runes.If(runes.Predicate(isASCII), nil, width.Widen)
|
|||
|
s, _, _ := transform.String(t, "アルアノリウ tech / 中國 / 5₩")
|
|||
|
fmt.Println(s)
|
|||
|
|
|||
|
// Output:
|
|||
|
// アルアノリウ tech / 中國 / 5₩
|
|||
|
}
|