Source File
match.go
Belonging Package
golang.org/x/text/internal/language
package language
import
type scriptRegionFlags uint8
const (
isList = 1 << iota
scriptInFrom
regionInFrom
)
func ( *Tag) ( Language) {
if .LangID == 0 {
.LangID =
}
}
func ( *Tag) ( Script) {
if .ScriptID == 0 {
.ScriptID =
}
}
func ( *Tag) ( Region) {
if .RegionID == 0 || .RegionID.Contains() {
.RegionID =
}
}
var ErrMissingLikelyTagsData = errors.New("missing likely tags data")
if .IsPrivateUse() {
return , nil
}
if .ScriptID != 0 && .RegionID != 0 {
specializeRegion(&)
return , nil
:= likelyRegion[.RegionID : .RegionID+1]
if := [0]; .flags&isList != 0 {
= likelyRegionList[.lang : .lang+uint16(.script)]
}
if .LangID < langNoIndexOffset {
:= likelyLang[.LangID]
if .flags&isList != 0 {
:= likelyLangList[.region : .region+uint16(.script)]
if .ScriptID != 0 {
for , := range {
if Script(.script) == .ScriptID && .flags&scriptInFrom != 0 {
.setUndefinedRegion(Region(.region))
return , nil
}
}
} else if .RegionID != 0 {
:= 0
:= true
:=
if .ScriptID != 0 {
:= likelyScript[.ScriptID]
if .region != 0 {
.setUndefinedRegion(Region(.region))
.setUndefinedLang(Language(.lang))
return , nil
}
if .RegionID != 0 {
if := regionInclusion[.RegionID]; < nRegionGroups {
:= likelyRegionGroup[]
if .region != 0 {
.setUndefinedLang(Language(.lang))
.setUndefinedScript(Script(.script))
.RegionID = Region(.region)
}
} else {
:= likelyRegion[.RegionID]
if .flags&isList != 0 {
= likelyRegionList[.lang]
}
if .script != 0 && .flags != scriptInFrom {
.setUndefinedLang(Language(.lang))
.setUndefinedScript(Script(.script))
return , nil
}
}
}
}
if .LangID < langNoIndexOffset {
:= likelyLang[.LangID]
if .flags&isList != 0 {
= likelyLangList[.region]
}
if .region != 0 {
.setUndefinedScript(Script(.script))
.setUndefinedRegion(Region(.region))
}
specializeRegion(&)
if .LangID == 0 {
.LangID = _en // default language
}
return , nil
}
return , ErrMissingLikelyTagsData
}
func ( *Tag) ( Tag) {
.LangID = .LangID
.ScriptID = .ScriptID
.RegionID = .RegionID
}
func ( Tag) () (Tag, error) {
, := minimizeTags()
if != nil {
return ,
}
.RemakeString()
return , nil
}
func ( Tag) (Tag, error) {
if .equalTags(Und) {
return , nil
}
, := addTags()
if != nil {
return ,
}
for , := range [...]Tag{
{LangID: .LangID},
{LangID: .LangID, RegionID: .RegionID},
{LangID: .LangID, ScriptID: .ScriptID},
} {
if , := addTags(); == nil && .equalTags() {
.setTagsFrom()
break
}
}
return , nil
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |