Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / internal / imports / testdata / mod / rsc.io_sampler_v1.3.0.txt
1 rsc.io/sampler@v1.3.0
2
3 -- .mod --
4 module "rsc.io/sampler"
5
6 require "golang.org/x/text" v0.0.0-20170915032832-14c0d48ead0c
7 -- .info --
8 {"Version":"v1.3.0","Name":"0cc034b51e57ed7832d4c67d526f75a900996e5c","Short":"0cc034b51e57","Time":"2018-02-13T19:05:03Z"}
9 -- glass.go --
10 // Copyright 2018 The Go Authors. All rights reserved.
11 // Use of this source code is governed by a BSD-style
12 // license that can be found in the LICENSE file.
13
14 // Translations from Frank da Cruz, Ethan Mollick, and many others.
15 // See http://kermitproject.org/utf8.html.
16 // http://www.oocities.org/nodotus/hbglass.html
17 // https://en.wikipedia.org/wiki/I_Can_Eat_Glass
18
19 package sampler
20
21 var glass = newText(`
22
23 English: en: I can eat glass and it doesn't hurt me.
24 French: fr: Je peux manger du verre, ça ne me fait pas mal.
25 Spanish: es: Puedo comer vidrio, no me hace daño.
26
27 `)
28 -- glass_test.go --
29 // Copyright 2018 The Go Authors. All rights reserved.
30 // Use of this source code is governed by a BSD-style
31 // license that can be found in the LICENSE file.
32
33 package sampler
34
35 import (
36         "testing"
37
38         "golang.org/x/text/language"
39         _ "rsc.io/testonly"
40 )
41
42 var glassTests = []struct {
43         prefs []language.Tag
44         text  string
45 }{
46         {
47                 []language.Tag{language.Make("en-US"), language.Make("fr")},
48                 "I can eat glass and it doesn't hurt me.",
49         },
50         {
51                 []language.Tag{language.Make("fr"), language.Make("en-US")},
52                 "Je peux manger du verre, ça ne me fait pas mal.",
53         },
54 }
55
56 func TestGlass(t *testing.T) {
57         for _, tt := range glassTests {
58                 text := Glass(tt.prefs...)
59                 if text != tt.text {
60                         t.Errorf("Glass(%v) = %q, want %q", tt.prefs, text, tt.text)
61                 }
62         }
63 }
64 -- go.mod --
65 module "rsc.io/sampler"
66
67 require "golang.org/x/text" v0.0.0-20170915032832-14c0d48ead0c
68 -- hello.go --
69 // Copyright 2018 The Go Authors. All rights reserved.
70 // Use of this source code is governed by a BSD-style
71 // license that can be found in the LICENSE file.
72
73 // Translations by Google Translate.
74
75 package sampler
76
77 var hello = newText(`
78
79 English: en: Hello, world.
80 French: fr: Bonjour le monde.
81 Spanish: es: Hola Mundo.
82
83 `)
84 -- hello_test.go --
85 // Copyright 2018 The Go Authors. All rights reserved.
86 // Use of this source code is governed by a BSD-style
87 // license that can be found in the LICENSE file.
88
89 package sampler
90
91 import (
92         "testing"
93
94         "golang.org/x/text/language"
95 )
96
97 var helloTests = []struct {
98         prefs []language.Tag
99         text  string
100 }{
101         {
102                 []language.Tag{language.Make("en-US"), language.Make("fr")},
103                 "Hello, world.",
104         },
105         {
106                 []language.Tag{language.Make("fr"), language.Make("en-US")},
107                 "Bonjour le monde.",
108         },
109 }
110
111 func TestHello(t *testing.T) {
112         for _, tt := range helloTests {
113                 text := Hello(tt.prefs...)
114                 if text != tt.text {
115                         t.Errorf("Hello(%v) = %q, want %q", tt.prefs, text, tt.text)
116                 }
117         }
118 }
119 -- sampler.go --
120 // Copyright 2018 The Go Authors. All rights reserved.
121 // Use of this source code is governed by a BSD-style
122 // license that can be found in the LICENSE file.
123
124 // Package sampler shows simple texts.
125 package sampler // import "rsc.io/sampler"
126
127 import (
128         "os"
129         "strings"
130
131         "golang.org/x/text/language"
132 )
133
134 // DefaultUserPrefs returns the default user language preferences.
135 // It consults the $LC_ALL, $LC_MESSAGES, and $LANG environment
136 // variables, in that order.
137 func DefaultUserPrefs() []language.Tag {
138         var prefs []language.Tag
139         for _, k := range []string{"LC_ALL", "LC_MESSAGES", "LANG"} {
140                 if env := os.Getenv(k); env != "" {
141                         prefs = append(prefs, language.Make(env))
142                 }
143         }
144         return prefs
145 }
146
147 // Hello returns a localized greeting.
148 // If no prefs are given, Hello uses DefaultUserPrefs.
149 func Hello(prefs ...language.Tag) string {
150         if len(prefs) == 0 {
151                 prefs = DefaultUserPrefs()
152         }
153         return hello.find(prefs)
154 }
155
156 // Glass returns a localized silly phrase.
157 // If no prefs are given, Glass uses DefaultUserPrefs.
158 func Glass(prefs ...language.Tag) string {
159         if len(prefs) == 0 {
160                 prefs = DefaultUserPrefs()
161         }
162         return glass.find(prefs)
163 }
164
165 // A text is a localized text.
166 type text struct {
167         byTag   map[string]string
168         matcher language.Matcher
169 }
170
171 // newText creates a new localized text, given a list of translations.
172 func newText(s string) *text {
173         t := &text{
174                 byTag: make(map[string]string),
175         }
176         var tags []language.Tag
177         for _, line := range strings.Split(s, "\n") {
178                 line = strings.TrimSpace(line)
179                 if line == "" {
180                         continue
181                 }
182                 f := strings.Split(line, ": ")
183                 if len(f) != 3 {
184                         continue
185                 }
186                 tag := language.Make(f[1])
187                 tags = append(tags, tag)
188                 t.byTag[tag.String()] = f[2]
189         }
190         t.matcher = language.NewMatcher(tags)
191         return t
192 }
193
194 // find finds the text to use for the given language tag preferences.
195 func (t *text) find(prefs []language.Tag) string {
196         tag, _, _ := t.matcher.Match(prefs...)
197         s := t.byTag[tag.String()]
198         if strings.HasPrefix(s, "RTL ") {
199                 s = "\u200F" + strings.TrimPrefix(s, "RTL ") + "\u200E"
200         }
201         return s
202 }