summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go
blob: 87eb8369ddf91a82827186608075acad2b1fa149 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package plural

import "golang.org/x/text/language"

// Rules is a set of plural rules by language tag.
type Rules map[language.Tag]*Rule

// Rule returns the closest matching plural rule for the language tag
// or nil if no rule could be found.
func (r Rules) Rule(tag language.Tag) *Rule {
	t := tag
	for {
		if rule := r[t]; rule != nil {
			return rule
		}
		t = t.Parent()
		if t.IsRoot() {
			break
		}
	}
	base, _ := tag.Base()
	baseTag, _ := language.Parse(base.String())
	return r[baseTag]
}