60 lines
1.4 KiB
Go
60 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₩
|
||
}
|