| // 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₩ | |
| } |