mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-06 09:47:54 +00:00
Travis seems to be having issues pulling deps, so we'll have to check in the vendor directory and prevent the makefile from trying to regenerate it normally.
105 lines
2.6 KiB
Go
105 lines
2.6 KiB
Go
// Copyright 2013 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.
|
|
|
|
package cldr
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"regexp"
|
|
"strconv"
|
|
)
|
|
|
|
// Elem is implemented by every XML element.
|
|
type Elem interface {
|
|
setEnclosing(Elem)
|
|
setName(string)
|
|
enclosing() Elem
|
|
|
|
GetCommon() *Common
|
|
}
|
|
|
|
type hidden struct {
|
|
CharData string `xml:",chardata"`
|
|
Alias *struct {
|
|
Common
|
|
Source string `xml:"source,attr"`
|
|
Path string `xml:"path,attr"`
|
|
} `xml:"alias"`
|
|
Def *struct {
|
|
Common
|
|
Choice string `xml:"choice,attr,omitempty"`
|
|
Type string `xml:"type,attr,omitempty"`
|
|
} `xml:"default"`
|
|
}
|
|
|
|
// Common holds several of the most common attributes and sub elements
|
|
// of an XML element.
|
|
type Common struct {
|
|
XMLName xml.Name
|
|
name string
|
|
enclElem Elem
|
|
Type string `xml:"type,attr,omitempty"`
|
|
Reference string `xml:"reference,attr,omitempty"`
|
|
Alt string `xml:"alt,attr,omitempty"`
|
|
ValidSubLocales string `xml:"validSubLocales,attr,omitempty"`
|
|
Draft string `xml:"draft,attr,omitempty"`
|
|
hidden
|
|
}
|
|
|
|
// Default returns the default type to select from the enclosed list
|
|
// or "" if no default value is specified.
|
|
func (e *Common) Default() string {
|
|
if e.Def == nil {
|
|
return ""
|
|
}
|
|
if e.Def.Choice != "" {
|
|
return e.Def.Choice
|
|
} else if e.Def.Type != "" {
|
|
// Type is still used by the default element in collation.
|
|
return e.Def.Type
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// Element returns the XML element name.
|
|
func (e *Common) Element() string {
|
|
return e.name
|
|
}
|
|
|
|
// GetCommon returns e. It is provided such that Common implements Elem.
|
|
func (e *Common) GetCommon() *Common {
|
|
return e
|
|
}
|
|
|
|
// Data returns the character data accumulated for this element.
|
|
func (e *Common) Data() string {
|
|
e.CharData = charRe.ReplaceAllStringFunc(e.CharData, replaceUnicode)
|
|
return e.CharData
|
|
}
|
|
|
|
func (e *Common) setName(s string) {
|
|
e.name = s
|
|
}
|
|
|
|
func (e *Common) enclosing() Elem {
|
|
return e.enclElem
|
|
}
|
|
|
|
func (e *Common) setEnclosing(en Elem) {
|
|
e.enclElem = en
|
|
}
|
|
|
|
// Escape characters that can be escaped without further escaping the string.
|
|
var charRe = regexp.MustCompile(`&#x[0-9a-fA-F]*;|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\x[0-9a-fA-F]{2}|\\[0-7]{3}|\\[abtnvfr]`)
|
|
|
|
// replaceUnicode converts hexadecimal Unicode codepoint notations to a one-rune string.
|
|
// It assumes the input string is correctly formatted.
|
|
func replaceUnicode(s string) string {
|
|
if s[1] == '#' {
|
|
r, _ := strconv.ParseInt(s[3:len(s)-1], 16, 32)
|
|
return string(r)
|
|
}
|
|
r, _, _, _ := strconv.UnquoteChar(s, 0)
|
|
return string(r)
|
|
}
|