// NewTransformer creates a new transform.Transformer that performs the PRECIS // preparation and enforcement steps on the given UTF-8 encoded bytes. func (p Profile) NewTransformer() *Transformer { var ts []transform.Transformer if p.options.allowwidechars { ts = append(ts, width.Fold) } ts = append(ts, checker{p: p}) if p.options.width != nil { ts = append(ts, width.Fold) } for _, f := range p.options.additional { ts = append(ts, f()) } if p.options.cases { ts = append(ts, transform.Chain( cases.Upper(language.Und), cases.Lower(language.Und), )) } ts = append(ts, p.options.norm) // TODO: Apply directionality rule (blocking on the Bidi package) // TODO: Add the disallow empty rule with a dummy transformer? return &Transformer{transform.Chain(ts...)} }
func Example() { src := []string{ "hello world!", "i with dot", "'n ijsberg", "here comes O'Brian", } for _, c := range []cases.Caser{ cases.Lower(language.Und), cases.Upper(language.Turkish), cases.Title(language.Dutch), cases.Title(language.Und, cases.NoLower), } { fmt.Println() for _, s := range src { fmt.Println(c.String(s)) } } // Output: // hello world! // i with dot // 'n ijsberg // here comes o'brian // // HELLO WORLD! // İ WİTH DOT // 'N İJSBERG // HERE COMES O'BRİAN // // Hello World! // I With Dot // 'n IJsberg // Here Comes O'brian // // Hello World! // I With Dot // 'N Ijsberg // Here Comes O'Brian }
// license that can be found in the LICENSE file. package runes import ( "strings" "testing" "unicode" "golang.org/x/text/cases" "golang.org/x/text/language" "golang.org/x/text/transform" ) var ( toUpper = cases.Upper(language.Und) toLower = cases.Lower(language.Und) ) func TestPredicate(t *testing.T) { testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer { return If(Predicate(func(r rune) bool { return unicode.Is(rt, r) }), t, f) }) } func TestIn(t *testing.T) { testConditional(t, func(rt *unicode.RangeTable, t, f transform.Transformer) transform.Transformer { return If(In(rt), t, f) })