mirror of
https://github.com/golang/go
synced 2024-11-19 10:04:56 -07:00
48 lines
1.2 KiB
Plaintext
48 lines
1.2 KiB
Plaintext
|
written by hand - just enough to compile rsc.io/sampler, rsc.io/quote
|
||
|
|
||
|
-- .mod --
|
||
|
module golang.org/x/text
|
||
|
-- .info --
|
||
|
{"Version":"v0.0.0-20170915032832-14c0d48ead0c","Name":"v0.0.0-20170915032832-14c0d48ead0c","Short":"14c0d48ead0c","Time":"2017-09-15T03:28:32Z"}
|
||
|
-- go.mod --
|
||
|
module golang.org/x/text
|
||
|
-- unused/unused.go --
|
||
|
package unused
|
||
|
-- language/lang.go --
|
||
|
// Copyright 2018 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.
|
||
|
|
||
|
// This is a tiny version of golang.org/x/text.
|
||
|
|
||
|
package language
|
||
|
|
||
|
import "strings"
|
||
|
|
||
|
type Tag string
|
||
|
|
||
|
func Make(s string) Tag { return Tag(s) }
|
||
|
|
||
|
func (t Tag) String() string { return string(t) }
|
||
|
|
||
|
func NewMatcher(tags []Tag) Matcher { return &matcher{tags} }
|
||
|
|
||
|
type Matcher interface {
|
||
|
Match(...Tag) (Tag, int, int)
|
||
|
}
|
||
|
|
||
|
type matcher struct {
|
||
|
tags []Tag
|
||
|
}
|
||
|
|
||
|
func (m *matcher) Match(prefs ...Tag) (Tag, int, int) {
|
||
|
for _, pref := range prefs {
|
||
|
for _, tag := range m.tags {
|
||
|
if tag == pref || strings.HasPrefix(string(pref), string(tag+"-")) || strings.HasPrefix(string(tag), string(pref+"-")) {
|
||
|
return tag, 0, 0
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return m.tags[0], 0, 0
|
||
|
}
|