aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/text
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text')
-rw-r--r--vendor/golang.org/x/text/AUTHORS3
-rw-r--r--vendor/golang.org/x/text/CONTRIBUTORS3
-rw-r--r--vendor/golang.org/x/text/LICENSE27
-rw-r--r--vendor/golang.org/x/text/PATENTS22
-rw-r--r--vendor/golang.org/x/text/encoding/encoding.go335
-rw-r--r--vendor/golang.org/x/text/encoding/internal/identifier/gen.go137
-rw-r--r--vendor/golang.org/x/text/encoding/internal/identifier/identifier.go81
-rw-r--r--vendor/golang.org/x/text/encoding/internal/identifier/mib.go1621
-rw-r--r--vendor/golang.org/x/text/internal/gen/code.go369
-rw-r--r--vendor/golang.org/x/text/internal/gen/gen.go333
-rw-r--r--vendor/golang.org/x/text/transform/transform.go705
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/base.go105
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/cldr.go130
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/collate.go359
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/decode.go171
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/makexml.go400
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/resolve.go602
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/slice.go144
-rw-r--r--vendor/golang.org/x/text/unicode/cldr/xml.go1494
19 files changed, 0 insertions, 7041 deletions
diff --git a/vendor/golang.org/x/text/AUTHORS b/vendor/golang.org/x/text/AUTHORS
deleted file mode 100644
index 15167cd..0000000
--- a/vendor/golang.org/x/text/AUTHORS
+++ /dev/null
@@ -1,3 +0,0 @@
-# This source code refers to The Go Authors for copyright purposes.
-# The master list of authors is in the main Go distribution,
-# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/golang.org/x/text/CONTRIBUTORS b/vendor/golang.org/x/text/CONTRIBUTORS
deleted file mode 100644
index 1c4577e..0000000
--- a/vendor/golang.org/x/text/CONTRIBUTORS
+++ /dev/null
@@ -1,3 +0,0 @@
-# This source code was written by the Go contributors.
-# The master list of contributors is in the main Go distribution,
-# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE
deleted file mode 100644
index 6a66aea..0000000
--- a/vendor/golang.org/x/text/LICENSE
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/golang.org/x/text/PATENTS b/vendor/golang.org/x/text/PATENTS
deleted file mode 100644
index 7330990..0000000
--- a/vendor/golang.org/x/text/PATENTS
+++ /dev/null
@@ -1,22 +0,0 @@
-Additional IP Rights Grant (Patents)
-
-"This implementation" means the copyrightable works distributed by
-Google as part of the Go project.
-
-Google hereby grants to You a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this section)
-patent license to make, have made, use, offer to sell, sell, import,
-transfer and otherwise run, modify and propagate the contents of this
-implementation of Go, where such license applies only to those patent
-claims, both currently owned or controlled by Google and acquired in
-the future, licensable by Google that are necessarily infringed by this
-implementation of Go. This grant does not include claims that would be
-infringed only as a consequence of further modification of this
-implementation. If you or your agent or exclusive licensee institute or
-order or agree to the institution of patent litigation against any
-entity (including a cross-claim or counterclaim in a lawsuit) alleging
-that this implementation of Go or any code incorporated within this
-implementation of Go constitutes direct or contributory patent
-infringement, or inducement of patent infringement, then any patent
-rights granted to you under this License for this implementation of Go
-shall terminate as of the date such litigation is filed.
diff --git a/vendor/golang.org/x/text/encoding/encoding.go b/vendor/golang.org/x/text/encoding/encoding.go
deleted file mode 100644
index 221f175..0000000
--- a/vendor/golang.org/x/text/encoding/encoding.go
+++ /dev/null
@@ -1,335 +0,0 @@
-// 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 encoding defines an interface for character encodings, such as Shift
-// JIS and Windows 1252, that can convert to and from UTF-8.
-//
-// Encoding implementations are provided in other packages, such as
-// golang.org/x/text/encoding/charmap and
-// golang.org/x/text/encoding/japanese.
-package encoding // import "golang.org/x/text/encoding"
-
-import (
- "errors"
- "io"
- "strconv"
- "unicode/utf8"
-
- "golang.org/x/text/encoding/internal/identifier"
- "golang.org/x/text/transform"
-)
-
-// TODO:
-// - There seems to be some inconsistency in when decoders return errors
-// and when not. Also documentation seems to suggest they shouldn't return
-// errors at all (except for UTF-16).
-// - Encoders seem to rely on or at least benefit from the input being in NFC
-// normal form. Perhaps add an example how users could prepare their output.
-
-// Encoding is a character set encoding that can be transformed to and from
-// UTF-8.
-type Encoding interface {
- // NewDecoder returns a Decoder.
- NewDecoder() *Decoder
-
- // NewEncoder returns an Encoder.
- NewEncoder() *Encoder
-}
-
-// A Decoder converts bytes to UTF-8. It implements transform.Transformer.
-//
-// Transforming source bytes that are not of that encoding will not result in an
-// error per se. Each byte that cannot be transcoded will be represented in the
-// output by the UTF-8 encoding of '\uFFFD', the replacement rune.
-type Decoder struct {
- transform.Transformer
-
- // This forces external creators of Decoders to use names in struct
- // initializers, allowing for future extendibility without having to break
- // code.
- _ struct{}
-}
-
-// Bytes converts the given encoded bytes to UTF-8. It returns the converted
-// bytes or nil, err if any error occurred.
-func (d *Decoder) Bytes(b []byte) ([]byte, error) {
- b, _, err := transform.Bytes(d, b)
- if err != nil {
- return nil, err
- }
- return b, nil
-}
-
-// String converts the given encoded string to UTF-8. It returns the converted
-// string or "", err if any error occurred.
-func (d *Decoder) String(s string) (string, error) {
- s, _, err := transform.String(d, s)
- if err != nil {
- return "", err
- }
- return s, nil
-}
-
-// Reader wraps another Reader to decode its bytes.
-//
-// The Decoder may not be used for any other operation as long as the returned
-// Reader is in use.
-func (d *Decoder) Reader(r io.Reader) io.Reader {
- return transform.NewReader(r, d)
-}
-
-// An Encoder converts bytes from UTF-8. It implements transform.Transformer.
-//
-// Each rune that cannot be transcoded will result in an error. In this case,
-// the transform will consume all source byte up to, not including the offending
-// rune. Transforming source bytes that are not valid UTF-8 will be replaced by
-// `\uFFFD`. To return early with an error instead, use transform.Chain to
-// preprocess the data with a UTF8Validator.
-type Encoder struct {
- transform.Transformer
-
- // This forces external creators of Encoders to use names in struct
- // initializers, allowing for future extendibility without having to break
- // code.
- _ struct{}
-}
-
-// Bytes converts bytes from UTF-8. It returns the converted bytes or nil, err if
-// any error occurred.
-func (e *Encoder) Bytes(b []byte) ([]byte, error) {
- b, _, err := transform.Bytes(e, b)
- if err != nil {
- return nil, err
- }
- return b, nil
-}
-
-// String converts a string from UTF-8. It returns the converted string or
-// "", err if any error occurred.
-func (e *Encoder) String(s string) (string, error) {
- s, _, err := transform.String(e, s)
- if err != nil {
- return "", err
- }
- return s, nil
-}
-
-// Writer wraps another Writer to encode its UTF-8 output.
-//
-// The Encoder may not be used for any other operation as long as the returned
-// Writer is in use.
-func (e *Encoder) Writer(w io.Writer) io.Writer {
- return transform.NewWriter(w, e)
-}
-
-// ASCIISub is the ASCII substitute character, as recommended by
-// http://unicode.org/reports/tr36/#Text_Comparison
-const ASCIISub = '\x1a'
-
-// Nop is the nop encoding. Its transformed bytes are the same as the source
-// bytes; it does not replace invalid UTF-8 sequences.
-var Nop Encoding = nop{}
-
-type nop struct{}
-
-func (nop) NewDecoder() *Decoder {
- return &Decoder{Transformer: transform.Nop}
-}
-func (nop) NewEncoder() *Encoder {
- return &Encoder{Transformer: transform.Nop}
-}
-
-// Replacement is the replacement encoding. Decoding from the replacement
-// encoding yields a single '\uFFFD' replacement rune. Encoding from UTF-8 to
-// the replacement encoding yields the same as the source bytes except that
-// invalid UTF-8 is converted to '\uFFFD'.
-//
-// It is defined at http://encoding.spec.whatwg.org/#replacement
-var Replacement Encoding = replacement{}
-
-type replacement struct{}
-
-func (replacement) NewDecoder() *Decoder {
- return &Decoder{Transformer: replacementDecoder{}}
-}
-
-func (replacement) NewEncoder() *Encoder {
- return &Encoder{Transformer: replacementEncoder{}}
-}
-
-func (replacement) ID() (mib identifier.MIB, other string) {
- return identifier.Replacement, ""
-}
-
-type replacementDecoder struct{ transform.NopResetter }
-
-func (replacementDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- if len(dst) < 3 {
- return 0, 0, transform.ErrShortDst
- }
- if atEOF {
- const fffd = "\ufffd"
- dst[0] = fffd[0]
- dst[1] = fffd[1]
- dst[2] = fffd[2]
- nDst = 3
- }
- return nDst, len(src), nil
-}
-
-type replacementEncoder struct{ transform.NopResetter }
-
-func (replacementEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- r, size := rune(0), 0
-
- for ; nSrc < len(src); nSrc += size {
- r = rune(src[nSrc])
-
- // Decode a 1-byte rune.
- if r < utf8.RuneSelf {
- size = 1
-
- } else {
- // Decode a multi-byte rune.
- r, size = utf8.DecodeRune(src[nSrc:])
- if size == 1 {
- // All valid runes of size 1 (those below utf8.RuneSelf) were
- // handled above. We have invalid UTF-8 or we haven't seen the
- // full character yet.
- if !atEOF && !utf8.FullRune(src[nSrc:]) {
- err = transform.ErrShortSrc
- break
- }
- r = '\ufffd'
- }
- }
-
- if nDst+utf8.RuneLen(r) > len(dst) {
- err = transform.ErrShortDst
- break
- }
- nDst += utf8.EncodeRune(dst[nDst:], r)
- }
- return nDst, nSrc, err
-}
-
-// HTMLEscapeUnsupported wraps encoders to replace source runes outside the
-// repertoire of the destination encoding with HTML escape sequences.
-//
-// This wrapper exists to comply to URL and HTML forms requiring a
-// non-terminating legacy encoder. The produced sequences may lead to data
-// loss as they are indistinguishable from legitimate input. To avoid this
-// issue, use UTF-8 encodings whenever possible.
-func HTMLEscapeUnsupported(e *Encoder) *Encoder {
- return &Encoder{Transformer: &errorHandler{e, errorToHTML}}
-}
-
-// ReplaceUnsupported wraps encoders to replace source runes outside the
-// repertoire of the destination encoding with an encoding-specific
-// replacement.
-//
-// This wrapper is only provided for backwards compatibility and legacy
-// handling. Its use is strongly discouraged. Use UTF-8 whenever possible.
-func ReplaceUnsupported(e *Encoder) *Encoder {
- return &Encoder{Transformer: &errorHandler{e, errorToReplacement}}
-}
-
-type errorHandler struct {
- *Encoder
- handler func(dst []byte, r rune, err repertoireError) (n int, ok bool)
-}
-
-// TODO: consider making this error public in some form.
-type repertoireError interface {
- Replacement() byte
-}
-
-func (h errorHandler) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- nDst, nSrc, err = h.Transformer.Transform(dst, src, atEOF)
- for err != nil {
- rerr, ok := err.(repertoireError)
- if !ok {
- return nDst, nSrc, err
- }
- r, sz := utf8.DecodeRune(src[nSrc:])
- n, ok := h.handler(dst[nDst:], r, rerr)
- if !ok {
- return nDst, nSrc, transform.ErrShortDst
- }
- err = nil
- nDst += n
- if nSrc += sz; nSrc < len(src) {
- var dn, sn int
- dn, sn, err = h.Transformer.Transform(dst[nDst:], src[nSrc:], atEOF)
- nDst += dn
- nSrc += sn
- }
- }
- return nDst, nSrc, err
-}
-
-func errorToHTML(dst []byte, r rune, err repertoireError) (n int, ok bool) {
- buf := [8]byte{}
- b := strconv.AppendUint(buf[:0], uint64(r), 10)
- if n = len(b) + len("&#;"); n >= len(dst) {
- return 0, false
- }
- dst[0] = '&'
- dst[1] = '#'
- dst[copy(dst[2:], b)+2] = ';'
- return n, true
-}
-
-func errorToReplacement(dst []byte, r rune, err repertoireError) (n int, ok bool) {
- if len(dst) == 0 {
- return 0, false
- }
- dst[0] = err.Replacement()
- return 1, true
-}
-
-// ErrInvalidUTF8 means that a transformer encountered invalid UTF-8.
-var ErrInvalidUTF8 = errors.New("encoding: invalid UTF-8")
-
-// UTF8Validator is a transformer that returns ErrInvalidUTF8 on the first
-// input byte that is not valid UTF-8.
-var UTF8Validator transform.Transformer = utf8Validator{}
-
-type utf8Validator struct{ transform.NopResetter }
-
-func (utf8Validator) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- n := len(src)
- if n > len(dst) {
- n = len(dst)
- }
- for i := 0; i < n; {
- if c := src[i]; c < utf8.RuneSelf {
- dst[i] = c
- i++
- continue
- }
- _, size := utf8.DecodeRune(src[i:])
- if size == 1 {
- // All valid runes of size 1 (those below utf8.RuneSelf) were
- // handled above. We have invalid UTF-8 or we haven't seen the
- // full character yet.
- err = ErrInvalidUTF8
- if !atEOF && !utf8.FullRune(src[i:]) {
- err = transform.ErrShortSrc
- }
- return i, i, err
- }
- if i+size > len(dst) {
- return i, i, transform.ErrShortDst
- }
- for ; size > 0; size-- {
- dst[i] = src[i]
- i++
- }
- }
- if len(src) > len(dst) {
- err = transform.ErrShortDst
- }
- return n, n, err
-}
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go b/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
deleted file mode 100644
index 0c8eba7..0000000
--- a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2015 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.
-
-// +build ignore
-
-package main
-
-import (
- "bytes"
- "encoding/xml"
- "fmt"
- "io"
- "log"
- "strings"
-
- "golang.org/x/text/internal/gen"
-)
-
-type registry struct {
- XMLName xml.Name `xml:"registry"`
- Updated string `xml:"updated"`
- Registry []struct {
- ID string `xml:"id,attr"`
- Record []struct {
- Name string `xml:"name"`
- Xref []struct {
- Type string `xml:"type,attr"`
- Data string `xml:"data,attr"`
- } `xml:"xref"`
- Desc struct {
- Data string `xml:",innerxml"`
- // Any []struct {
- // Data string `xml:",chardata"`
- // } `xml:",any"`
- // Data string `xml:",chardata"`
- } `xml:"description,"`
- MIB string `xml:"value"`
- Alias []string `xml:"alias"`
- MIME string `xml:"preferred_alias"`
- } `xml:"record"`
- } `xml:"registry"`
-}
-
-func main() {
- r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml")
- reg := &registry{}
- if err := xml.NewDecoder(r).Decode(&reg); err != nil && err != io.EOF {
- log.Fatalf("Error decoding charset registry: %v", err)
- }
- if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" {
- log.Fatalf("Unexpected ID %s", reg.Registry[0].ID)
- }
-
- w := &bytes.Buffer{}
- fmt.Fprintf(w, "const (\n")
- for _, rec := range reg.Registry[0].Record {
- constName := ""
- for _, a := range rec.Alias {
- if strings.HasPrefix(a, "cs") && strings.IndexByte(a, '-') == -1 {
- // Some of the constant definitions have comments in them. Strip those.
- constName = strings.Title(strings.SplitN(a[2:], "\n", 2)[0])
- }
- }
- if constName == "" {
- switch rec.MIB {
- case "2085":
- constName = "HZGB2312" // Not listed as alias for some reason.
- default:
- log.Fatalf("No cs alias defined for %s.", rec.MIB)
- }
- }
- if rec.MIME != "" {
- rec.MIME = fmt.Sprintf(" (MIME: %s)", rec.MIME)
- }
- fmt.Fprintf(w, "// %s is the MIB identifier with IANA name %s%s.\n//\n", constName, rec.Name, rec.MIME)
- if len(rec.Desc.Data) > 0 {
- fmt.Fprint(w, "// ")
- d := xml.NewDecoder(strings.NewReader(rec.Desc.Data))
- inElem := true
- attr := ""
- for {
- t, err := d.Token()
- if err != nil {
- if err != io.EOF {
- log.Fatal(err)
- }
- break
- }
- switch x := t.(type) {
- case xml.CharData:
- attr = "" // Don't need attribute info.
- a := bytes.Split([]byte(x), []byte("\n"))
- for i, b := range a {
- if b = bytes.TrimSpace(b); len(b) != 0 {
- if !inElem && i > 0 {
- fmt.Fprint(w, "\n// ")
- }
- inElem = false
- fmt.Fprintf(w, "%s ", string(b))
- }
- }
- case xml.StartElement:
- if x.Name.Local == "xref" {
- inElem = true
- use := false
- for _, a := range x.Attr {
- if a.Name.Local == "type" {
- use = use || a.Value != "person"
- }
- if a.Name.Local == "data" && use {
- attr = a.Value + " "
- }
- }
- }
- case xml.EndElement:
- inElem = false
- fmt.Fprint(w, attr)
- }
- }
- fmt.Fprint(w, "\n")
- }
- for _, x := range rec.Xref {
- switch x.Type {
- case "rfc":
- fmt.Fprintf(w, "// Reference: %s\n", strings.ToUpper(x.Data))
- case "uri":
- fmt.Fprintf(w, "// Reference: %s\n", x.Data)
- }
- }
- fmt.Fprintf(w, "%s MIB = %s\n", constName, rec.MIB)
- fmt.Fprintln(w)
- }
- fmt.Fprintln(w, ")")
-
- gen.WriteGoFile("mib.go", "identifier", w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go
deleted file mode 100644
index 7351b4e..0000000
--- a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2015 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.
-
-//go:generate go run gen.go
-
-// Package identifier defines the contract between implementations of Encoding
-// and Index by defining identifiers that uniquely identify standardized coded
-// character sets (CCS) and character encoding schemes (CES), which we will
-// together refer to as encodings, for which Encoding implementations provide
-// converters to and from UTF-8. This package is typically only of concern to
-// implementers of Indexes and Encodings.
-//
-// One part of the identifier is the MIB code, which is defined by IANA and
-// uniquely identifies a CCS or CES. Each code is associated with data that
-// references authorities, official documentation as well as aliases and MIME
-// names.
-//
-// Not all CESs are covered by the IANA registry. The "other" string that is
-// returned by ID can be used to identify other character sets or versions of
-// existing ones.
-//
-// It is recommended that each package that provides a set of Encodings provide
-// the All and Common variables to reference all supported encodings and
-// commonly used subset. This allows Index implementations to include all
-// available encodings without explicitly referencing or knowing about them.
-package identifier
-
-// Note: this package is internal, but could be made public if there is a need
-// for writing third-party Indexes and Encodings.
-
-// References:
-// - http://source.icu-project.org/repos/icu/icu/trunk/source/data/mappings/convrtrs.txt
-// - http://www.iana.org/assignments/character-sets/character-sets.xhtml
-// - http://www.iana.org/assignments/ianacharset-mib/ianacharset-mib
-// - http://www.ietf.org/rfc/rfc2978.txt
-// - http://www.unicode.org/reports/tr22/
-// - http://www.w3.org/TR/encoding/
-// - https://encoding.spec.whatwg.org/
-// - https://encoding.spec.whatwg.org/encodings.json
-// - https://tools.ietf.org/html/rfc6657#section-5
-
-// Interface can be implemented by Encodings to define the CCS or CES for which
-// it implements conversions.
-type Interface interface {
- // ID returns an encoding identifier. Exactly one of the mib and other
- // values should be non-zero.
- //
- // In the usual case it is only necessary to indicate the MIB code. The
- // other string can be used to specify encodings for which there is no MIB,
- // such as "x-mac-dingbat".
- //
- // The other string may only contain the characters a-z, A-Z, 0-9, - and _.
- ID() (mib MIB, other string)
-
- // NOTE: the restrictions on the encoding are to allow extending the syntax
- // with additional information such as versions, vendors and other variants.
-}
-
-// A MIB identifies an encoding. It is derived from the IANA MIB codes and adds
-// some identifiers for some encodings that are not covered by the IANA
-// standard.
-//
-// See http://www.iana.org/assignments/ianacharset-mib.
-type MIB uint16
-
-// These additional MIB types are not defined in IANA. They are added because
-// they are common and defined within the text repo.
-const (
- // Unofficial marks the start of encodings not registered by IANA.
- Unofficial MIB = 10000 + iota
-
- // Replacement is the WhatWG replacement encoding.
- Replacement
-
- // XUserDefined is the code for x-user-defined.
- XUserDefined
-
- // MacintoshCyrillic is the code for x-mac-cyrillic.
- MacintoshCyrillic
-)
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go
deleted file mode 100644
index 768842b..0000000
--- a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go
+++ /dev/null
@@ -1,1621 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package identifier
-
-const (
- // ASCII is the MIB identifier with IANA name US-ASCII (MIME: US-ASCII).
- //
- // ANSI X3.4-1986
- // Reference: RFC2046
- ASCII MIB = 3
-
- // ISOLatin1 is the MIB identifier with IANA name ISO_8859-1:1987 (MIME: ISO-8859-1).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin1 MIB = 4
-
- // ISOLatin2 is the MIB identifier with IANA name ISO_8859-2:1987 (MIME: ISO-8859-2).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin2 MIB = 5
-
- // ISOLatin3 is the MIB identifier with IANA name ISO_8859-3:1988 (MIME: ISO-8859-3).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin3 MIB = 6
-
- // ISOLatin4 is the MIB identifier with IANA name ISO_8859-4:1988 (MIME: ISO-8859-4).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin4 MIB = 7
-
- // ISOLatinCyrillic is the MIB identifier with IANA name ISO_8859-5:1988 (MIME: ISO-8859-5).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatinCyrillic MIB = 8
-
- // ISOLatinArabic is the MIB identifier with IANA name ISO_8859-6:1987 (MIME: ISO-8859-6).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatinArabic MIB = 9
-
- // ISOLatinGreek is the MIB identifier with IANA name ISO_8859-7:1987 (MIME: ISO-8859-7).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1947
- // Reference: RFC1345
- ISOLatinGreek MIB = 10
-
- // ISOLatinHebrew is the MIB identifier with IANA name ISO_8859-8:1988 (MIME: ISO-8859-8).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatinHebrew MIB = 11
-
- // ISOLatin5 is the MIB identifier with IANA name ISO_8859-9:1989 (MIME: ISO-8859-9).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin5 MIB = 12
-
- // ISOLatin6 is the MIB identifier with IANA name ISO-8859-10 (MIME: ISO-8859-10).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOLatin6 MIB = 13
-
- // ISOTextComm is the MIB identifier with IANA name ISO_6937-2-add.
- //
- // ISO-IR: International Register of Escape Sequences and ISO 6937-2:1983
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISOTextComm MIB = 14
-
- // HalfWidthKatakana is the MIB identifier with IANA name JIS_X0201.
- //
- // JIS X 0201-1976. One byte only, this is equivalent to
- // JIS/Roman (similar to ASCII) plus eight-bit half-width
- // Katakana
- // Reference: RFC1345
- HalfWidthKatakana MIB = 15
-
- // JISEncoding is the MIB identifier with IANA name JIS_Encoding.
- //
- // JIS X 0202-1991. Uses ISO 2022 escape sequences to
- // shift code sets as documented in JIS X 0202-1991.
- JISEncoding MIB = 16
-
- // ShiftJIS is the MIB identifier with IANA name Shift_JIS (MIME: Shift_JIS).
- //
- // This charset is an extension of csHalfWidthKatakana by
- // adding graphic characters in JIS X 0208. The CCS's are
- // JIS X0201:1997 and JIS X0208:1997. The
- // complete definition is shown in Appendix 1 of JIS
- // X0208:1997.
- // This charset can be used for the top-level media type "text".
- ShiftJIS MIB = 17
-
- // EUCPkdFmtJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Packed_Format_for_Japanese (MIME: EUC-JP).
- //
- // Standardized by OSF, UNIX International, and UNIX Systems
- // Laboratories Pacific. Uses ISO 2022 rules to select
- // code set 0: US-ASCII (a single 7-bit byte set)
- // code set 1: JIS X0208-1990 (a double 8-bit byte set)
- // restricted to A0-FF in both bytes
- // code set 2: Half Width Katakana (a single 7-bit byte set)
- // requiring SS2 as the character prefix
- // code set 3: JIS X0212-1990 (a double 7-bit byte set)
- // restricted to A0-FF in both bytes
- // requiring SS3 as the character prefix
- EUCPkdFmtJapanese MIB = 18
-
- // EUCFixWidJapanese is the MIB identifier with IANA name Extended_UNIX_Code_Fixed_Width_for_Japanese.
- //
- // Used in Japan. Each character is 2 octets.
- // code set 0: US-ASCII (a single 7-bit byte set)
- // 1st byte = 00
- // 2nd byte = 20-7E
- // code set 1: JIS X0208-1990 (a double 7-bit byte set)
- // restricted to A0-FF in both bytes
- // code set 2: Half Width Katakana (a single 7-bit byte set)
- // 1st byte = 00
- // 2nd byte = A0-FF
- // code set 3: JIS X0212-1990 (a double 7-bit byte set)
- // restricted to A0-FF in
- // the first byte
- // and 21-7E in the second byte
- EUCFixWidJapanese MIB = 19
-
- // ISO4UnitedKingdom is the MIB identifier with IANA name BS_4730.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO4UnitedKingdom MIB = 20
-
- // ISO11SwedishForNames is the MIB identifier with IANA name SEN_850200_C.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO11SwedishForNames MIB = 21
-
- // ISO15Italian is the MIB identifier with IANA name IT.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO15Italian MIB = 22
-
- // ISO17Spanish is the MIB identifier with IANA name ES.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO17Spanish MIB = 23
-
- // ISO21German is the MIB identifier with IANA name DIN_66003.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO21German MIB = 24
-
- // ISO60Norwegian1 is the MIB identifier with IANA name NS_4551-1.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO60Norwegian1 MIB = 25
-
- // ISO69French is the MIB identifier with IANA name NF_Z_62-010.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO69French MIB = 26
-
- // ISO10646UTF1 is the MIB identifier with IANA name ISO-10646-UTF-1.
- //
- // Universal Transfer Format (1), this is the multibyte
- // encoding, that subsets ASCII-7. It does not have byte
- // ordering issues.
- ISO10646UTF1 MIB = 27
-
- // ISO646basic1983 is the MIB identifier with IANA name ISO_646.basic:1983.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO646basic1983 MIB = 28
-
- // INVARIANT is the MIB identifier with IANA name INVARIANT.
- //
- // Reference: RFC1345
- INVARIANT MIB = 29
-
- // ISO2IntlRefVersion is the MIB identifier with IANA name ISO_646.irv:1983.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO2IntlRefVersion MIB = 30
-
- // NATSSEFI is the MIB identifier with IANA name NATS-SEFI.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- NATSSEFI MIB = 31
-
- // NATSSEFIADD is the MIB identifier with IANA name NATS-SEFI-ADD.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- NATSSEFIADD MIB = 32
-
- // NATSDANO is the MIB identifier with IANA name NATS-DANO.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- NATSDANO MIB = 33
-
- // NATSDANOADD is the MIB identifier with IANA name NATS-DANO-ADD.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- NATSDANOADD MIB = 34
-
- // ISO10Swedish is the MIB identifier with IANA name SEN_850200_B.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO10Swedish MIB = 35
-
- // KSC56011987 is the MIB identifier with IANA name KS_C_5601-1987.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- KSC56011987 MIB = 36
-
- // ISO2022KR is the MIB identifier with IANA name ISO-2022-KR (MIME: ISO-2022-KR).
- //
- // rfc1557 (see also KS_C_5601-1987)
- // Reference: RFC1557
- ISO2022KR MIB = 37
-
- // EUCKR is the MIB identifier with IANA name EUC-KR (MIME: EUC-KR).
- //
- // rfc1557 (see also KS_C_5861-1992)
- // Reference: RFC1557
- EUCKR MIB = 38
-
- // ISO2022JP is the MIB identifier with IANA name ISO-2022-JP (MIME: ISO-2022-JP).
- //
- // rfc1468 (see also rfc2237 )
- // Reference: RFC1468
- ISO2022JP MIB = 39
-
- // ISO2022JP2 is the MIB identifier with IANA name ISO-2022-JP-2 (MIME: ISO-2022-JP-2).
- //
- // rfc1554
- // Reference: RFC1554
- ISO2022JP2 MIB = 40
-
- // ISO13JISC6220jp is the MIB identifier with IANA name JIS_C6220-1969-jp.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO13JISC6220jp MIB = 41
-
- // ISO14JISC6220ro is the MIB identifier with IANA name JIS_C6220-1969-ro.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO14JISC6220ro MIB = 42
-
- // ISO16Portuguese is the MIB identifier with IANA name PT.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO16Portuguese MIB = 43
-
- // ISO18Greek7Old is the MIB identifier with IANA name greek7-old.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO18Greek7Old MIB = 44
-
- // ISO19LatinGreek is the MIB identifier with IANA name latin-greek.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO19LatinGreek MIB = 45
-
- // ISO25French is the MIB identifier with IANA name NF_Z_62-010_(1973).
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO25French MIB = 46
-
- // ISO27LatinGreek1 is the MIB identifier with IANA name Latin-greek-1.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO27LatinGreek1 MIB = 47
-
- // ISO5427Cyrillic is the MIB identifier with IANA name ISO_5427.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO5427Cyrillic MIB = 48
-
- // ISO42JISC62261978 is the MIB identifier with IANA name JIS_C6226-1978.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO42JISC62261978 MIB = 49
-
- // ISO47BSViewdata is the MIB identifier with IANA name BS_viewdata.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO47BSViewdata MIB = 50
-
- // ISO49INIS is the MIB identifier with IANA name INIS.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO49INIS MIB = 51
-
- // ISO50INIS8 is the MIB identifier with IANA name INIS-8.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO50INIS8 MIB = 52
-
- // ISO51INISCyrillic is the MIB identifier with IANA name INIS-cyrillic.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO51INISCyrillic MIB = 53
-
- // ISO54271981 is the MIB identifier with IANA name ISO_5427:1981.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO54271981 MIB = 54
-
- // ISO5428Greek is the MIB identifier with IANA name ISO_5428:1980.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO5428Greek MIB = 55
-
- // ISO57GB1988 is the MIB identifier with IANA name GB_1988-80.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO57GB1988 MIB = 56
-
- // ISO58GB231280 is the MIB identifier with IANA name GB_2312-80.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO58GB231280 MIB = 57
-
- // ISO61Norwegian2 is the MIB identifier with IANA name NS_4551-2.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO61Norwegian2 MIB = 58
-
- // ISO70VideotexSupp1 is the MIB identifier with IANA name videotex-suppl.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO70VideotexSupp1 MIB = 59
-
- // ISO84Portuguese2 is the MIB identifier with IANA name PT2.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO84Portuguese2 MIB = 60
-
- // ISO85Spanish2 is the MIB identifier with IANA name ES2.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO85Spanish2 MIB = 61
-
- // ISO86Hungarian is the MIB identifier with IANA name MSZ_7795.3.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO86Hungarian MIB = 62
-
- // ISO87JISX0208 is the MIB identifier with IANA name JIS_C6226-1983.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO87JISX0208 MIB = 63
-
- // ISO88Greek7 is the MIB identifier with IANA name greek7.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO88Greek7 MIB = 64
-
- // ISO89ASMO449 is the MIB identifier with IANA name ASMO_449.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO89ASMO449 MIB = 65
-
- // ISO90 is the MIB identifier with IANA name iso-ir-90.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO90 MIB = 66
-
- // ISO91JISC62291984a is the MIB identifier with IANA name JIS_C6229-1984-a.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO91JISC62291984a MIB = 67
-
- // ISO92JISC62991984b is the MIB identifier with IANA name JIS_C6229-1984-b.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO92JISC62991984b MIB = 68
-
- // ISO93JIS62291984badd is the MIB identifier with IANA name JIS_C6229-1984-b-add.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO93JIS62291984badd MIB = 69
-
- // ISO94JIS62291984hand is the MIB identifier with IANA name JIS_C6229-1984-hand.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO94JIS62291984hand MIB = 70
-
- // ISO95JIS62291984handadd is the MIB identifier with IANA name JIS_C6229-1984-hand-add.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO95JIS62291984handadd MIB = 71
-
- // ISO96JISC62291984kana is the MIB identifier with IANA name JIS_C6229-1984-kana.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO96JISC62291984kana MIB = 72
-
- // ISO2033 is the MIB identifier with IANA name ISO_2033-1983.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO2033 MIB = 73
-
- // ISO99NAPLPS is the MIB identifier with IANA name ANSI_X3.110-1983.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO99NAPLPS MIB = 74
-
- // ISO102T617bit is the MIB identifier with IANA name T.61-7bit.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO102T617bit MIB = 75
-
- // ISO103T618bit is the MIB identifier with IANA name T.61-8bit.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO103T618bit MIB = 76
-
- // ISO111ECMACyrillic is the MIB identifier with IANA name ECMA-cyrillic.
- //
- // ISO registry
- // (formerly ECMA
- // registry )
- ISO111ECMACyrillic MIB = 77
-
- // ISO121Canadian1 is the MIB identifier with IANA name CSA_Z243.4-1985-1.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO121Canadian1 MIB = 78
-
- // ISO122Canadian2 is the MIB identifier with IANA name CSA_Z243.4-1985-2.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO122Canadian2 MIB = 79
-
- // ISO123CSAZ24341985gr is the MIB identifier with IANA name CSA_Z243.4-1985-gr.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO123CSAZ24341985gr MIB = 80
-
- // ISO88596E is the MIB identifier with IANA name ISO_8859-6-E (MIME: ISO-8859-6-E).
- //
- // rfc1556
- // Reference: RFC1556
- ISO88596E MIB = 81
-
- // ISO88596I is the MIB identifier with IANA name ISO_8859-6-I (MIME: ISO-8859-6-I).
- //
- // rfc1556
- // Reference: RFC1556
- ISO88596I MIB = 82
-
- // ISO128T101G2 is the MIB identifier with IANA name T.101-G2.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO128T101G2 MIB = 83
-
- // ISO88598E is the MIB identifier with IANA name ISO_8859-8-E (MIME: ISO-8859-8-E).
- //
- // rfc1556
- // Reference: RFC1556
- ISO88598E MIB = 84
-
- // ISO88598I is the MIB identifier with IANA name ISO_8859-8-I (MIME: ISO-8859-8-I).
- //
- // rfc1556
- // Reference: RFC1556
- ISO88598I MIB = 85
-
- // ISO139CSN369103 is the MIB identifier with IANA name CSN_369103.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO139CSN369103 MIB = 86
-
- // ISO141JUSIB1002 is the MIB identifier with IANA name JUS_I.B1.002.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO141JUSIB1002 MIB = 87
-
- // ISO143IECP271 is the MIB identifier with IANA name IEC_P27-1.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO143IECP271 MIB = 88
-
- // ISO146Serbian is the MIB identifier with IANA name JUS_I.B1.003-serb.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO146Serbian MIB = 89
-
- // ISO147Macedonian is the MIB identifier with IANA name JUS_I.B1.003-mac.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO147Macedonian MIB = 90
-
- // ISO150GreekCCITT is the MIB identifier with IANA name greek-ccitt.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO150GreekCCITT MIB = 91
-
- // ISO151Cuba is the MIB identifier with IANA name NC_NC00-10:81.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO151Cuba MIB = 92
-
- // ISO6937Add is the MIB identifier with IANA name ISO_6937-2-25.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO6937Add MIB = 93
-
- // ISO153GOST1976874 is the MIB identifier with IANA name GOST_19768-74.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO153GOST1976874 MIB = 94
-
- // ISO8859Supp is the MIB identifier with IANA name ISO_8859-supp.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO8859Supp MIB = 95
-
- // ISO10367Box is the MIB identifier with IANA name ISO_10367-box.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO10367Box MIB = 96
-
- // ISO158Lap is the MIB identifier with IANA name latin-lap.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO158Lap MIB = 97
-
- // ISO159JISX02121990 is the MIB identifier with IANA name JIS_X0212-1990.
- //
- // ISO-IR: International Register of Escape Sequences
- // Note: The current registration authority is IPSJ/ITSCJ, Japan.
- // Reference: RFC1345
- ISO159JISX02121990 MIB = 98
-
- // ISO646Danish is the MIB identifier with IANA name DS_2089.
- //
- // Danish Standard, DS 2089, February 1974
- // Reference: RFC1345
- ISO646Danish MIB = 99
-
- // USDK is the MIB identifier with IANA name us-dk.
- //
- // Reference: RFC1345
- USDK MIB = 100
-
- // DKUS is the MIB identifier with IANA name dk-us.
- //
- // Reference: RFC1345
- DKUS MIB = 101
-
- // KSC5636 is the MIB identifier with IANA name KSC5636.
- //
- // Reference: RFC1345
- KSC5636 MIB = 102
-
- // Unicode11UTF7 is the MIB identifier with IANA name UNICODE-1-1-UTF-7.
- //
- // rfc1642
- // Reference: RFC1642
- Unicode11UTF7 MIB = 103
-
- // ISO2022CN is the MIB identifier with IANA name ISO-2022-CN.
- //
- // rfc1922
- // Reference: RFC1922
- ISO2022CN MIB = 104
-
- // ISO2022CNEXT is the MIB identifier with IANA name ISO-2022-CN-EXT.
- //
- // rfc1922
- // Reference: RFC1922
- ISO2022CNEXT MIB = 105
-
- // UTF8 is the MIB identifier with IANA name UTF-8.
- //
- // rfc3629
- // Reference: RFC3629
- UTF8 MIB = 106
-
- // ISO885913 is the MIB identifier with IANA name ISO-8859-13.
- //
- // ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-13 http://www.iana.org/assignments/charset-reg/ISO-8859-13
- ISO885913 MIB = 109
-
- // ISO885914 is the MIB identifier with IANA name ISO-8859-14.
- //
- // ISO See http://www.iana.org/assignments/charset-reg/ISO-8859-14
- ISO885914 MIB = 110
-
- // ISO885915 is the MIB identifier with IANA name ISO-8859-15.
- //
- // ISO
- // Please see: http://www.iana.org/assignments/charset-reg/ISO-8859-15
- ISO885915 MIB = 111
-
- // ISO885916 is the MIB identifier with IANA name ISO-8859-16.
- //
- // ISO
- ISO885916 MIB = 112
-
- // GBK is the MIB identifier with IANA name GBK.
- //
- // Chinese IT Standardization Technical Committee
- // Please see: http://www.iana.org/assignments/charset-reg/GBK
- GBK MIB = 113
-
- // GB18030 is the MIB identifier with IANA name GB18030.
- //
- // Chinese IT Standardization Technical Committee
- // Please see: http://www.iana.org/assignments/charset-reg/GB18030
- GB18030 MIB = 114
-
- // OSDEBCDICDF0415 is the MIB identifier with IANA name OSD_EBCDIC_DF04_15.
- //
- // Fujitsu-Siemens standard mainframe EBCDIC encoding
- // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-15
- OSDEBCDICDF0415 MIB = 115
-
- // OSDEBCDICDF03IRV is the MIB identifier with IANA name OSD_EBCDIC_DF03_IRV.
- //
- // Fujitsu-Siemens standard mainframe EBCDIC encoding
- // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF03-IRV
- OSDEBCDICDF03IRV MIB = 116
-
- // OSDEBCDICDF041 is the MIB identifier with IANA name OSD_EBCDIC_DF04_1.
- //
- // Fujitsu-Siemens standard mainframe EBCDIC encoding
- // Please see: http://www.iana.org/assignments/charset-reg/OSD-EBCDIC-DF04-1
- OSDEBCDICDF041 MIB = 117
-
- // ISO115481 is the MIB identifier with IANA name ISO-11548-1.
- //
- // See http://www.iana.org/assignments/charset-reg/ISO-11548-1
- ISO115481 MIB = 118
-
- // KZ1048 is the MIB identifier with IANA name KZ-1048.
- //
- // See http://www.iana.org/assignments/charset-reg/KZ-1048
- KZ1048 MIB = 119
-
- // Unicode is the MIB identifier with IANA name ISO-10646-UCS-2.
- //
- // the 2-octet Basic Multilingual Plane, aka Unicode
- // this needs to specify network byte order: the standard
- // does not specify (it is a 16-bit integer space)
- Unicode MIB = 1000
-
- // UCS4 is the MIB identifier with IANA name ISO-10646-UCS-4.
- //
- // the full code space. (same comment about byte order,
- // these are 31-bit numbers.
- UCS4 MIB = 1001
-
- // UnicodeASCII is the MIB identifier with IANA name ISO-10646-UCS-Basic.
- //
- // ASCII subset of Unicode. Basic Latin = collection 1
- // See ISO 10646, Appendix A
- UnicodeASCII MIB = 1002
-
- // UnicodeLatin1 is the MIB identifier with IANA name ISO-10646-Unicode-Latin1.
- //
- // ISO Latin-1 subset of Unicode. Basic Latin and Latin-1
- // Supplement = collections 1 and 2. See ISO 10646,
- // Appendix A. See rfc1815 .
- UnicodeLatin1 MIB = 1003
-
- // UnicodeJapanese is the MIB identifier with IANA name ISO-10646-J-1.
- //
- // ISO 10646 Japanese, see rfc1815 .
- UnicodeJapanese MIB = 1004
-
- // UnicodeIBM1261 is the MIB identifier with IANA name ISO-Unicode-IBM-1261.
- //
- // IBM Latin-2, -3, -5, Extended Presentation Set, GCSGID: 1261
- UnicodeIBM1261 MIB = 1005
-
- // UnicodeIBM1268 is the MIB identifier with IANA name ISO-Unicode-IBM-1268.
- //
- // IBM Latin-4 Extended Presentation Set, GCSGID: 1268
- UnicodeIBM1268 MIB = 1006
-
- // UnicodeIBM1276 is the MIB identifier with IANA name ISO-Unicode-IBM-1276.
- //
- // IBM Cyrillic Greek Extended Presentation Set, GCSGID: 1276
- UnicodeIBM1276 MIB = 1007
-
- // UnicodeIBM1264 is the MIB identifier with IANA name ISO-Unicode-IBM-1264.
- //
- // IBM Arabic Presentation Set, GCSGID: 1264
- UnicodeIBM1264 MIB = 1008
-
- // UnicodeIBM1265 is the MIB identifier with IANA name ISO-Unicode-IBM-1265.
- //
- // IBM Hebrew Presentation Set, GCSGID: 1265
- UnicodeIBM1265 MIB = 1009
-
- // Unicode11 is the MIB identifier with IANA name UNICODE-1-1.
- //
- // rfc1641
- // Reference: RFC1641
- Unicode11 MIB = 1010
-
- // SCSU is the MIB identifier with IANA name SCSU.
- //
- // SCSU See http://www.iana.org/assignments/charset-reg/SCSU
- SCSU MIB = 1011
-
- // UTF7 is the MIB identifier with IANA name UTF-7.
- //
- // rfc2152
- // Reference: RFC2152
- UTF7 MIB = 1012
-
- // UTF16BE is the MIB identifier with IANA name UTF-16BE.
- //
- // rfc2781
- // Reference: RFC2781
- UTF16BE MIB = 1013
-
- // UTF16LE is the MIB identifier with IANA name UTF-16LE.
- //
- // rfc2781
- // Reference: RFC2781
- UTF16LE MIB = 1014
-
- // UTF16 is the MIB identifier with IANA name UTF-16.
- //
- // rfc2781
- // Reference: RFC2781
- UTF16 MIB = 1015
-
- // CESU8 is the MIB identifier with IANA name CESU-8.
- //
- // http://www.unicode.org/unicode/reports/tr26
- CESU8 MIB = 1016
-
- // UTF32 is the MIB identifier with IANA name UTF-32.
- //
- // http://www.unicode.org/unicode/reports/tr19/
- UTF32 MIB = 1017
-
- // UTF32BE is the MIB identifier with IANA name UTF-32BE.
- //
- // http://www.unicode.org/unicode/reports/tr19/
- UTF32BE MIB = 1018
-
- // UTF32LE is the MIB identifier with IANA name UTF-32LE.
- //
- // http://www.unicode.org/unicode/reports/tr19/
- UTF32LE MIB = 1019
-
- // BOCU1 is the MIB identifier with IANA name BOCU-1.
- //
- // http://www.unicode.org/notes/tn6/
- BOCU1 MIB = 1020
-
- // Windows30Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.0-Latin-1.
- //
- // Extended ISO 8859-1 Latin-1 for Windows 3.0.
- // PCL Symbol Set id: 9U
- Windows30Latin1 MIB = 2000
-
- // Windows31Latin1 is the MIB identifier with IANA name ISO-8859-1-Windows-3.1-Latin-1.
- //
- // Extended ISO 8859-1 Latin-1 for Windows 3.1.
- // PCL Symbol Set id: 19U
- Windows31Latin1 MIB = 2001
-
- // Windows31Latin2 is the MIB identifier with IANA name ISO-8859-2-Windows-Latin-2.
- //
- // Extended ISO 8859-2. Latin-2 for Windows 3.1.
- // PCL Symbol Set id: 9E
- Windows31Latin2 MIB = 2002
-
- // Windows31Latin5 is the MIB identifier with IANA name ISO-8859-9-Windows-Latin-5.
- //
- // Extended ISO 8859-9. Latin-5 for Windows 3.1
- // PCL Symbol Set id: 5T
- Windows31Latin5 MIB = 2003
-
- // HPRoman8 is the MIB identifier with IANA name hp-roman8.
- //
- // LaserJet IIP Printer User's Manual,
- // HP part no 33471-90901, Hewlet-Packard, June 1989.
- // Reference: RFC1345
- HPRoman8 MIB = 2004
-
- // AdobeStandardEncoding is the MIB identifier with IANA name Adobe-Standard-Encoding.
- //
- // PostScript Language Reference Manual
- // PCL Symbol Set id: 10J
- AdobeStandardEncoding MIB = 2005
-
- // VenturaUS is the MIB identifier with IANA name Ventura-US.
- //
- // Ventura US. ASCII plus characters typically used in
- // publishing, like pilcrow, copyright, registered, trade mark,
- // section, dagger, and double dagger in the range A0 (hex)
- // to FF (hex).
- // PCL Symbol Set id: 14J
- VenturaUS MIB = 2006
-
- // VenturaInternational is the MIB identifier with IANA name Ventura-International.
- //
- // Ventura International. ASCII plus coded characters similar
- // to Roman8.
- // PCL Symbol Set id: 13J
- VenturaInternational MIB = 2007
-
- // DECMCS is the MIB identifier with IANA name DEC-MCS.
- //
- // VAX/VMS User's Manual,
- // Order Number: AI-Y517A-TE, April 1986.
- // Reference: RFC1345
- DECMCS MIB = 2008
-
- // PC850Multilingual is the MIB identifier with IANA name IBM850.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- PC850Multilingual MIB = 2009
-
- // PC8DanishNorwegian is the MIB identifier with IANA name PC8-Danish-Norwegian.
- //
- // PC Danish Norwegian
- // 8-bit PC set for Danish Norwegian
- // PCL Symbol Set id: 11U
- PC8DanishNorwegian MIB = 2012
-
- // PC862LatinHebrew is the MIB identifier with IANA name IBM862.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- PC862LatinHebrew MIB = 2013
-
- // PC8Turkish is the MIB identifier with IANA name PC8-Turkish.
- //
- // PC Latin Turkish. PCL Symbol Set id: 9T
- PC8Turkish MIB = 2014
-
- // IBMSymbols is the MIB identifier with IANA name IBM-Symbols.
- //
- // Presentation Set, CPGID: 259
- IBMSymbols MIB = 2015
-
- // IBMThai is the MIB identifier with IANA name IBM-Thai.
- //
- // Presentation Set, CPGID: 838
- IBMThai MIB = 2016
-
- // HPLegal is the MIB identifier with IANA name HP-Legal.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 1U
- HPLegal MIB = 2017
-
- // HPPiFont is the MIB identifier with IANA name HP-Pi-font.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 15U
- HPPiFont MIB = 2018
-
- // HPMath8 is the MIB identifier with IANA name HP-Math8.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 8M
- HPMath8 MIB = 2019
-
- // HPPSMath is the MIB identifier with IANA name Adobe-Symbol-Encoding.
- //
- // PostScript Language Reference Manual
- // PCL Symbol Set id: 5M
- HPPSMath MIB = 2020
-
- // HPDesktop is the MIB identifier with IANA name HP-DeskTop.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 7J
- HPDesktop MIB = 2021
-
- // VenturaMath is the MIB identifier with IANA name Ventura-Math.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 6M
- VenturaMath MIB = 2022
-
- // MicrosoftPublishing is the MIB identifier with IANA name Microsoft-Publishing.
- //
- // PCL 5 Comparison Guide, Hewlett-Packard,
- // HP part number 5961-0510, October 1992
- // PCL Symbol Set id: 6J
- MicrosoftPublishing MIB = 2023
-
- // Windows31J is the MIB identifier with IANA name Windows-31J.
- //
- // Windows Japanese. A further extension of Shift_JIS
- // to include NEC special characters (Row 13), NEC
- // selection of IBM extensions (Rows 89 to 92), and IBM
- // extensions (Rows 115 to 119). The CCS's are
- // JIS X0201:1997, JIS X0208:1997, and these extensions.
- // This charset can be used for the top-level media type "text",
- // but it is of limited or specialized use (see rfc2278 ).
- // PCL Symbol Set id: 19K
- Windows31J MIB = 2024
-
- // GB2312 is the MIB identifier with IANA name GB2312 (MIME: GB2312).
- //
- // Chinese for People's Republic of China (PRC) mixed one byte,
- // two byte set:
- // 20-7E = one byte ASCII
- // A1-FE = two byte PRC Kanji
- // See GB 2312-80
- // PCL Symbol Set Id: 18C
- GB2312 MIB = 2025
-
- // Big5 is the MIB identifier with IANA name Big5 (MIME: Big5).
- //
- // Chinese for Taiwan Multi-byte set.
- // PCL Symbol Set Id: 18T
- Big5 MIB = 2026
-
- // Macintosh is the MIB identifier with IANA name macintosh.
- //
- // The Unicode Standard ver1.0, ISBN 0-201-56788-1, Oct 1991
- // Reference: RFC1345
- Macintosh MIB = 2027
-
- // IBM037 is the MIB identifier with IANA name IBM037.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM037 MIB = 2028
-
- // IBM038 is the MIB identifier with IANA name IBM038.
- //
- // IBM 3174 Character Set Ref, GA27-3831-02, March 1990
- // Reference: RFC1345
- IBM038 MIB = 2029
-
- // IBM273 is the MIB identifier with IANA name IBM273.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM273 MIB = 2030
-
- // IBM274 is the MIB identifier with IANA name IBM274.
- //
- // IBM 3174 Character Set Ref, GA27-3831-02, March 1990
- // Reference: RFC1345
- IBM274 MIB = 2031
-
- // IBM275 is the MIB identifier with IANA name IBM275.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM275 MIB = 2032
-
- // IBM277 is the MIB identifier with IANA name IBM277.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM277 MIB = 2033
-
- // IBM278 is the MIB identifier with IANA name IBM278.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM278 MIB = 2034
-
- // IBM280 is the MIB identifier with IANA name IBM280.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM280 MIB = 2035
-
- // IBM281 is the MIB identifier with IANA name IBM281.
- //
- // IBM 3174 Character Set Ref, GA27-3831-02, March 1990
- // Reference: RFC1345
- IBM281 MIB = 2036
-
- // IBM284 is the MIB identifier with IANA name IBM284.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM284 MIB = 2037
-
- // IBM285 is the MIB identifier with IANA name IBM285.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM285 MIB = 2038
-
- // IBM290 is the MIB identifier with IANA name IBM290.
- //
- // IBM 3174 Character Set Ref, GA27-3831-02, March 1990
- // Reference: RFC1345
- IBM290 MIB = 2039
-
- // IBM297 is the MIB identifier with IANA name IBM297.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM297 MIB = 2040
-
- // IBM420 is the MIB identifier with IANA name IBM420.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990,
- // IBM NLS RM p 11-11
- // Reference: RFC1345
- IBM420 MIB = 2041
-
- // IBM423 is the MIB identifier with IANA name IBM423.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM423 MIB = 2042
-
- // IBM424 is the MIB identifier with IANA name IBM424.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM424 MIB = 2043
-
- // PC8CodePage437 is the MIB identifier with IANA name IBM437.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- PC8CodePage437 MIB = 2011
-
- // IBM500 is the MIB identifier with IANA name IBM500.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM500 MIB = 2044
-
- // IBM851 is the MIB identifier with IANA name IBM851.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM851 MIB = 2045
-
- // PCp852 is the MIB identifier with IANA name IBM852.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- PCp852 MIB = 2010
-
- // IBM855 is the MIB identifier with IANA name IBM855.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM855 MIB = 2046
-
- // IBM857 is the MIB identifier with IANA name IBM857.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM857 MIB = 2047
-
- // IBM860 is the MIB identifier with IANA name IBM860.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM860 MIB = 2048
-
- // IBM861 is the MIB identifier with IANA name IBM861.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM861 MIB = 2049
-
- // IBM863 is the MIB identifier with IANA name IBM863.
- //
- // IBM Keyboard layouts and code pages, PN 07G4586 June 1991
- // Reference: RFC1345
- IBM863 MIB = 2050
-
- // IBM864 is the MIB identifier with IANA name IBM864.
- //
- // IBM Keyboard layouts and code pages, PN 07G4586 June 1991
- // Reference: RFC1345
- IBM864 MIB = 2051
-
- // IBM865 is the MIB identifier with IANA name IBM865.
- //
- // IBM DOS 3.3 Ref (Abridged), 94X9575 (Feb 1987)
- // Reference: RFC1345
- IBM865 MIB = 2052
-
- // IBM868 is the MIB identifier with IANA name IBM868.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM868 MIB = 2053
-
- // IBM869 is the MIB identifier with IANA name IBM869.
- //
- // IBM Keyboard layouts and code pages, PN 07G4586 June 1991
- // Reference: RFC1345
- IBM869 MIB = 2054
-
- // IBM870 is the MIB identifier with IANA name IBM870.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM870 MIB = 2055
-
- // IBM871 is the MIB identifier with IANA name IBM871.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM871 MIB = 2056
-
- // IBM880 is the MIB identifier with IANA name IBM880.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM880 MIB = 2057
-
- // IBM891 is the MIB identifier with IANA name IBM891.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM891 MIB = 2058
-
- // IBM903 is the MIB identifier with IANA name IBM903.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM903 MIB = 2059
-
- // IBBM904 is the MIB identifier with IANA name IBM904.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBBM904 MIB = 2060
-
- // IBM905 is the MIB identifier with IANA name IBM905.
- //
- // IBM 3174 Character Set Ref, GA27-3831-02, March 1990
- // Reference: RFC1345
- IBM905 MIB = 2061
-
- // IBM918 is the MIB identifier with IANA name IBM918.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM918 MIB = 2062
-
- // IBM1026 is the MIB identifier with IANA name IBM1026.
- //
- // IBM NLS RM Vol2 SE09-8002-01, March 1990
- // Reference: RFC1345
- IBM1026 MIB = 2063
-
- // IBMEBCDICATDE is the MIB identifier with IANA name EBCDIC-AT-DE.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- IBMEBCDICATDE MIB = 2064
-
- // EBCDICATDEA is the MIB identifier with IANA name EBCDIC-AT-DE-A.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICATDEA MIB = 2065
-
- // EBCDICCAFR is the MIB identifier with IANA name EBCDIC-CA-FR.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICCAFR MIB = 2066
-
- // EBCDICDKNO is the MIB identifier with IANA name EBCDIC-DK-NO.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICDKNO MIB = 2067
-
- // EBCDICDKNOA is the MIB identifier with IANA name EBCDIC-DK-NO-A.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICDKNOA MIB = 2068
-
- // EBCDICFISE is the MIB identifier with IANA name EBCDIC-FI-SE.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICFISE MIB = 2069
-
- // EBCDICFISEA is the MIB identifier with IANA name EBCDIC-FI-SE-A.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICFISEA MIB = 2070
-
- // EBCDICFR is the MIB identifier with IANA name EBCDIC-FR.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICFR MIB = 2071
-
- // EBCDICIT is the MIB identifier with IANA name EBCDIC-IT.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICIT MIB = 2072
-
- // EBCDICPT is the MIB identifier with IANA name EBCDIC-PT.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICPT MIB = 2073
-
- // EBCDICES is the MIB identifier with IANA name EBCDIC-ES.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICES MIB = 2074
-
- // EBCDICESA is the MIB identifier with IANA name EBCDIC-ES-A.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICESA MIB = 2075
-
- // EBCDICESS is the MIB identifier with IANA name EBCDIC-ES-S.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICESS MIB = 2076
-
- // EBCDICUK is the MIB identifier with IANA name EBCDIC-UK.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICUK MIB = 2077
-
- // EBCDICUS is the MIB identifier with IANA name EBCDIC-US.
- //
- // IBM 3270 Char Set Ref Ch 10, GA27-2837-9, April 1987
- // Reference: RFC1345
- EBCDICUS MIB = 2078
-
- // Unknown8BiT is the MIB identifier with IANA name UNKNOWN-8BIT.
- //
- // Reference: RFC1428
- Unknown8BiT MIB = 2079
-
- // Mnemonic is the MIB identifier with IANA name MNEMONIC.
- //
- // rfc1345 , also known as "mnemonic+ascii+38"
- // Reference: RFC1345
- Mnemonic MIB = 2080
-
- // Mnem is the MIB identifier with IANA name MNEM.
- //
- // rfc1345 , also known as "mnemonic+ascii+8200"
- // Reference: RFC1345
- Mnem MIB = 2081
-
- // VISCII is the MIB identifier with IANA name VISCII.
- //
- // rfc1456
- // Reference: RFC1456
- VISCII MIB = 2082
-
- // VIQR is the MIB identifier with IANA name VIQR.
- //
- // rfc1456
- // Reference: RFC1456
- VIQR MIB = 2083
-
- // KOI8R is the MIB identifier with IANA name KOI8-R (MIME: KOI8-R).
- //
- // rfc1489 , based on GOST-19768-74, ISO-6937/8,
- // INIS-Cyrillic, ISO-5427.
- // Reference: RFC1489
- KOI8R MIB = 2084
-
- // HZGB2312 is the MIB identifier with IANA name HZ-GB-2312.
- //
- // rfc1842 , rfc1843 rfc1843 rfc1842
- HZGB2312 MIB = 2085
-
- // IBM866 is the MIB identifier with IANA name IBM866.
- //
- // IBM NLDG Volume 2 (SE09-8002-03) August 1994
- IBM866 MIB = 2086
-
- // PC775Baltic is the MIB identifier with IANA name IBM775.
- //
- // HP PCL 5 Comparison Guide (P/N 5021-0329) pp B-13, 1996
- PC775Baltic MIB = 2087
-
- // KOI8U is the MIB identifier with IANA name KOI8-U.
- //
- // rfc2319
- // Reference: RFC2319
- KOI8U MIB = 2088
-
- // IBM00858 is the MIB identifier with IANA name IBM00858.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM00858
- IBM00858 MIB = 2089
-
- // IBM00924 is the MIB identifier with IANA name IBM00924.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM00924
- IBM00924 MIB = 2090
-
- // IBM01140 is the MIB identifier with IANA name IBM01140.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01140
- IBM01140 MIB = 2091
-
- // IBM01141 is the MIB identifier with IANA name IBM01141.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01141
- IBM01141 MIB = 2092
-
- // IBM01142 is the MIB identifier with IANA name IBM01142.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01142
- IBM01142 MIB = 2093
-
- // IBM01143 is the MIB identifier with IANA name IBM01143.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01143
- IBM01143 MIB = 2094
-
- // IBM01144 is the MIB identifier with IANA name IBM01144.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01144
- IBM01144 MIB = 2095
-
- // IBM01145 is the MIB identifier with IANA name IBM01145.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01145
- IBM01145 MIB = 2096
-
- // IBM01146 is the MIB identifier with IANA name IBM01146.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01146
- IBM01146 MIB = 2097
-
- // IBM01147 is the MIB identifier with IANA name IBM01147.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01147
- IBM01147 MIB = 2098
-
- // IBM01148 is the MIB identifier with IANA name IBM01148.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01148
- IBM01148 MIB = 2099
-
- // IBM01149 is the MIB identifier with IANA name IBM01149.
- //
- // IBM See http://www.iana.org/assignments/charset-reg/IBM01149
- IBM01149 MIB = 2100
-
- // Big5HKSCS is the MIB identifier with IANA name Big5-HKSCS.
- //
- // See http://www.iana.org/assignments/charset-reg/Big5-HKSCS
- Big5HKSCS MIB = 2101
-
- // IBM1047 is the MIB identifier with IANA name IBM1047.
- //
- // IBM1047 (EBCDIC Latin 1/Open Systems) http://www-1.ibm.com/servers/eserver/iseries/software/globalization/pdf/cp01047z.pdf
- IBM1047 MIB = 2102
-
- // PTCP154 is the MIB identifier with IANA name PTCP154.
- //
- // See http://www.iana.org/assignments/charset-reg/PTCP154
- PTCP154 MIB = 2103
-
- // Amiga1251 is the MIB identifier with IANA name Amiga-1251.
- //
- // See http://www.amiga.ultranet.ru/Amiga-1251.html
- Amiga1251 MIB = 2104
-
- // KOI7switched is the MIB identifier with IANA name KOI7-switched.
- //
- // See http://www.iana.org/assignments/charset-reg/KOI7-switched
- KOI7switched MIB = 2105
-
- // BRF is the MIB identifier with IANA name BRF.
- //
- // See http://www.iana.org/assignments/charset-reg/BRF
- BRF MIB = 2106
-
- // TSCII is the MIB identifier with IANA name TSCII.
- //
- // See http://www.iana.org/assignments/charset-reg/TSCII
- TSCII MIB = 2107
-
- // CP51932 is the MIB identifier with IANA name CP51932.
- //
- // See http://www.iana.org/assignments/charset-reg/CP51932
- CP51932 MIB = 2108
-
- // Windows874 is the MIB identifier with IANA name windows-874.
- //
- // See http://www.iana.org/assignments/charset-reg/windows-874
- Windows874 MIB = 2109
-
- // Windows1250 is the MIB identifier with IANA name windows-1250.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1250
- Windows1250 MIB = 2250
-
- // Windows1251 is the MIB identifier with IANA name windows-1251.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1251
- Windows1251 MIB = 2251
-
- // Windows1252 is the MIB identifier with IANA name windows-1252.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1252
- Windows1252 MIB = 2252
-
- // Windows1253 is the MIB identifier with IANA name windows-1253.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1253
- Windows1253 MIB = 2253
-
- // Windows1254 is the MIB identifier with IANA name windows-1254.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1254
- Windows1254 MIB = 2254
-
- // Windows1255 is the MIB identifier with IANA name windows-1255.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1255
- Windows1255 MIB = 2255
-
- // Windows1256 is the MIB identifier with IANA name windows-1256.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1256
- Windows1256 MIB = 2256
-
- // Windows1257 is the MIB identifier with IANA name windows-1257.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1257
- Windows1257 MIB = 2257
-
- // Windows1258 is the MIB identifier with IANA name windows-1258.
- //
- // Microsoft http://www.iana.org/assignments/charset-reg/windows-1258
- Windows1258 MIB = 2258
-
- // TIS620 is the MIB identifier with IANA name TIS-620.
- //
- // Thai Industrial Standards Institute (TISI)
- TIS620 MIB = 2259
-
- // CP50220 is the MIB identifier with IANA name CP50220.
- //
- // See http://www.iana.org/assignments/charset-reg/CP50220
- CP50220 MIB = 2260
-)
diff --git a/vendor/golang.org/x/text/internal/gen/code.go b/vendor/golang.org/x/text/internal/gen/code.go
deleted file mode 100644
index 0389509..0000000
--- a/vendor/golang.org/x/text/internal/gen/code.go
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2015 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 gen
-
-import (
- "bytes"
- "encoding/gob"
- "fmt"
- "hash"
- "hash/fnv"
- "io"
- "log"
- "os"
- "reflect"
- "strings"
- "unicode"
- "unicode/utf8"
-)
-
-// This file contains utilities for generating code.
-
-// TODO: other write methods like:
-// - slices, maps, types, etc.
-
-// CodeWriter is a utility for writing structured code. It computes the content
-// hash and size of written content. It ensures there are newlines between
-// written code blocks.
-type CodeWriter struct {
- buf bytes.Buffer
- Size int
- Hash hash.Hash32 // content hash
- gob *gob.Encoder
- // For comments we skip the usual one-line separator if they are followed by
- // a code block.
- skipSep bool
-}
-
-func (w *CodeWriter) Write(p []byte) (n int, err error) {
- return w.buf.Write(p)
-}
-
-// NewCodeWriter returns a new CodeWriter.
-func NewCodeWriter() *CodeWriter {
- h := fnv.New32()
- return &CodeWriter{Hash: h, gob: gob.NewEncoder(h)}
-}
-
-// WriteGoFile appends the buffer with the total size of all created structures
-// and writes it as a Go file to the the given file with the given package name.
-func (w *CodeWriter) WriteGoFile(filename, pkg string) {
- f, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer f.Close()
- if _, err = w.WriteGo(f, pkg, ""); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteVersionedGoFile appends the buffer with the total size of all created
-// structures and writes it as a Go file to the the given file with the given
-// package name and build tags for the current Unicode version,
-func (w *CodeWriter) WriteVersionedGoFile(filename, pkg string) {
- tags := buildTags()
- if tags != "" {
- filename = insertVersion(filename, UnicodeVersion())
- }
- f, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer f.Close()
- if _, err = w.WriteGo(f, pkg, tags); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteGo appends the buffer with the total size of all created structures and
-// writes it as a Go file to the the given writer with the given package name.
-func (w *CodeWriter) WriteGo(out io.Writer, pkg, tags string) (n int, err error) {
- sz := w.Size
- w.WriteComment("Total table size %d bytes (%dKiB); checksum: %X\n", sz, sz/1024, w.Hash.Sum32())
- defer w.buf.Reset()
- return WriteGo(out, pkg, tags, w.buf.Bytes())
-}
-
-func (w *CodeWriter) printf(f string, x ...interface{}) {
- fmt.Fprintf(w, f, x...)
-}
-
-func (w *CodeWriter) insertSep() {
- if w.skipSep {
- w.skipSep = false
- return
- }
- // Use at least two newlines to ensure a blank space between the previous
- // block. WriteGoFile will remove extraneous newlines.
- w.printf("\n\n")
-}
-
-// WriteComment writes a comment block. All line starts are prefixed with "//".
-// Initial empty lines are gobbled. The indentation for the first line is
-// stripped from consecutive lines.
-func (w *CodeWriter) WriteComment(comment string, args ...interface{}) {
- s := fmt.Sprintf(comment, args...)
- s = strings.Trim(s, "\n")
-
- // Use at least two newlines to ensure a blank space between the previous
- // block. WriteGoFile will remove extraneous newlines.
- w.printf("\n\n// ")
- w.skipSep = true
-
- // strip first indent level.
- sep := "\n"
- for ; len(s) > 0 && (s[0] == '\t' || s[0] == ' '); s = s[1:] {
- sep += s[:1]
- }
-
- strings.NewReplacer(sep, "\n// ", "\n", "\n// ").WriteString(w, s)
-
- w.printf("\n")
-}
-
-func (w *CodeWriter) writeSizeInfo(size int) {
- w.printf("// Size: %d bytes\n", size)
-}
-
-// WriteConst writes a constant of the given name and value.
-func (w *CodeWriter) WriteConst(name string, x interface{}) {
- w.insertSep()
- v := reflect.ValueOf(x)
-
- switch v.Type().Kind() {
- case reflect.String:
- w.printf("const %s %s = ", name, typeName(x))
- w.WriteString(v.String())
- w.printf("\n")
- default:
- w.printf("const %s = %#v\n", name, x)
- }
-}
-
-// WriteVar writes a variable of the given name and value.
-func (w *CodeWriter) WriteVar(name string, x interface{}) {
- w.insertSep()
- v := reflect.ValueOf(x)
- oldSize := w.Size
- sz := int(v.Type().Size())
- w.Size += sz
-
- switch v.Type().Kind() {
- case reflect.String:
- w.printf("var %s %s = ", name, typeName(x))
- w.WriteString(v.String())
- case reflect.Struct:
- w.gob.Encode(x)
- fallthrough
- case reflect.Slice, reflect.Array:
- w.printf("var %s = ", name)
- w.writeValue(v)
- w.writeSizeInfo(w.Size - oldSize)
- default:
- w.printf("var %s %s = ", name, typeName(x))
- w.gob.Encode(x)
- w.writeValue(v)
- w.writeSizeInfo(w.Size - oldSize)
- }
- w.printf("\n")
-}
-
-func (w *CodeWriter) writeValue(v reflect.Value) {
- x := v.Interface()
- switch v.Kind() {
- case reflect.String:
- w.WriteString(v.String())
- case reflect.Array:
- // Don't double count: callers of WriteArray count on the size being
- // added, so we need to discount it here.
- w.Size -= int(v.Type().Size())
- w.writeSlice(x, true)
- case reflect.Slice:
- w.writeSlice(x, false)
- case reflect.Struct:
- w.printf("%s{\n", typeName(v.Interface()))
- t := v.Type()
- for i := 0; i < v.NumField(); i++ {
- w.printf("%s: ", t.Field(i).Name)
- w.writeValue(v.Field(i))
- w.printf(",\n")
- }
- w.printf("}")
- default:
- w.printf("%#v", x)
- }
-}
-
-// WriteString writes a string literal.
-func (w *CodeWriter) WriteString(s string) {
- s = strings.Replace(s, `\`, `\\`, -1)
- io.WriteString(w.Hash, s) // content hash
- w.Size += len(s)
-
- const maxInline = 40
- if len(s) <= maxInline {
- w.printf("%q", s)
- return
- }
-
- // We will render the string as a multi-line string.
- const maxWidth = 80 - 4 - len(`"`) - len(`" +`)
-
- // When starting on its own line, go fmt indents line 2+ an extra level.
- n, max := maxWidth, maxWidth-4
-
- // As per https://golang.org/issue/18078, the compiler has trouble
- // compiling the concatenation of many strings, s0 + s1 + s2 + ... + sN,
- // for large N. We insert redundant, explicit parentheses to work around
- // that, lowering the N at any given step: (s0 + s1 + ... + s63) + (s64 +
- // ... + s127) + etc + (etc + ... + sN).
- explicitParens, extraComment := len(s) > 128*1024, ""
- if explicitParens {
- w.printf(`(`)
- extraComment = "; the redundant, explicit parens are for https://golang.org/issue/18078"
- }
-
- // Print "" +\n, if a string does not start on its own line.
- b := w.buf.Bytes()
- if p := len(bytes.TrimRight(b, " \t")); p > 0 && b[p-1] != '\n' {
- w.printf("\"\" + // Size: %d bytes%s\n", len(s), extraComment)
- n, max = maxWidth, maxWidth
- }
-
- w.printf(`"`)
-
- for sz, p, nLines := 0, 0, 0; p < len(s); {
- var r rune
- r, sz = utf8.DecodeRuneInString(s[p:])
- out := s[p : p+sz]
- chars := 1
- if !unicode.IsPrint(r) || r == utf8.RuneError || r == '"' {
- switch sz {
- case 1:
- out = fmt.Sprintf("\\x%02x", s[p])
- case 2, 3:
- out = fmt.Sprintf("\\u%04x", r)
- case 4:
- out = fmt.Sprintf("\\U%08x", r)
- }
- chars = len(out)
- }
- if n -= chars; n < 0 {
- nLines++
- if explicitParens && nLines&63 == 63 {
- w.printf("\") + (\"")
- }
- w.printf("\" +\n\"")
- n = max - len(out)
- }
- w.printf("%s", out)
- p += sz
- }
- w.printf(`"`)
- if explicitParens {
- w.printf(`)`)
- }
-}
-
-// WriteSlice writes a slice value.
-func (w *CodeWriter) WriteSlice(x interface{}) {
- w.writeSlice(x, false)
-}
-
-// WriteArray writes an array value.
-func (w *CodeWriter) WriteArray(x interface{}) {
- w.writeSlice(x, true)
-}
-
-func (w *CodeWriter) writeSlice(x interface{}, isArray bool) {
- v := reflect.ValueOf(x)
- w.gob.Encode(v.Len())
- w.Size += v.Len() * int(v.Type().Elem().Size())
- name := typeName(x)
- if isArray {
- name = fmt.Sprintf("[%d]%s", v.Len(), name[strings.Index(name, "]")+1:])
- }
- if isArray {
- w.printf("%s{\n", name)
- } else {
- w.printf("%s{ // %d elements\n", name, v.Len())
- }
-
- switch kind := v.Type().Elem().Kind(); kind {
- case reflect.String:
- for _, s := range x.([]string) {
- w.WriteString(s)
- w.printf(",\n")
- }
- case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
- reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
- // nLine and nBlock are the number of elements per line and block.
- nLine, nBlock, format := 8, 64, "%d,"
- switch kind {
- case reflect.Uint8:
- format = "%#02x,"
- case reflect.Uint16:
- format = "%#04x,"
- case reflect.Uint32:
- nLine, nBlock, format = 4, 32, "%#08x,"
- case reflect.Uint, reflect.Uint64:
- nLine, nBlock, format = 4, 32, "%#016x,"
- case reflect.Int8:
- nLine = 16
- }
- n := nLine
- for i := 0; i < v.Len(); i++ {
- if i%nBlock == 0 && v.Len() > nBlock {
- w.printf("// Entry %X - %X\n", i, i+nBlock-1)
- }
- x := v.Index(i).Interface()
- w.gob.Encode(x)
- w.printf(format, x)
- if n--; n == 0 {
- n = nLine
- w.printf("\n")
- }
- }
- w.printf("\n")
- case reflect.Struct:
- zero := reflect.Zero(v.Type().Elem()).Interface()
- for i := 0; i < v.Len(); i++ {
- x := v.Index(i).Interface()
- w.gob.EncodeValue(v)
- if !reflect.DeepEqual(zero, x) {
- line := fmt.Sprintf("%#v,\n", x)
- line = line[strings.IndexByte(line, '{'):]
- w.printf("%d: ", i)
- w.printf(line)
- }
- }
- case reflect.Array:
- for i := 0; i < v.Len(); i++ {
- w.printf("%d: %#v,\n", i, v.Index(i).Interface())
- }
- default:
- panic("gen: slice elem type not supported")
- }
- w.printf("}")
-}
-
-// WriteType writes a definition of the type of the given value and returns the
-// type name.
-func (w *CodeWriter) WriteType(x interface{}) string {
- t := reflect.TypeOf(x)
- w.printf("type %s struct {\n", t.Name())
- for i := 0; i < t.NumField(); i++ {
- w.printf("\t%s %s\n", t.Field(i).Name, t.Field(i).Type)
- }
- w.printf("}\n")
- return t.Name()
-}
-
-// typeName returns the name of the go type of x.
-func typeName(x interface{}) string {
- t := reflect.ValueOf(x).Type()
- return strings.Replace(fmt.Sprint(t), "main.", "", 1)
-}
diff --git a/vendor/golang.org/x/text/internal/gen/gen.go b/vendor/golang.org/x/text/internal/gen/gen.go
deleted file mode 100644
index 4c3f760..0000000
--- a/vendor/golang.org/x/text/internal/gen/gen.go
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2015 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 gen contains common code for the various code generation tools in the
-// text repository. Its usage ensures consistency between tools.
-//
-// This package defines command line flags that are common to most generation
-// tools. The flags allow for specifying specific Unicode and CLDR versions
-// in the public Unicode data repository (http://www.unicode.org/Public).
-//
-// A local Unicode data mirror can be set through the flag -local or the
-// environment variable UNICODE_DIR. The former takes precedence. The local
-// directory should follow the same structure as the public repository.
-//
-// IANA data can also optionally be mirrored by putting it in the iana directory
-// rooted at the top of the local mirror. Beware, though, that IANA data is not
-// versioned. So it is up to the developer to use the right version.
-package gen // import "golang.org/x/text/internal/gen"
-
-import (
- "bytes"
- "flag"
- "fmt"
- "go/build"
- "go/format"
- "io"
- "io/ioutil"
- "log"
- "net/http"
- "os"
- "path"
- "path/filepath"
- "strings"
- "sync"
- "unicode"
-
- "golang.org/x/text/unicode/cldr"
-)
-
-var (
- url = flag.String("url",
- "http://www.unicode.org/Public",
- "URL of Unicode database directory")
- iana = flag.String("iana",
- "http://www.iana.org",
- "URL of the IANA repository")
- unicodeVersion = flag.String("unicode",
- getEnv("UNICODE_VERSION", unicode.Version),
- "unicode version to use")
- cldrVersion = flag.String("cldr",
- getEnv("CLDR_VERSION", cldr.Version),
- "cldr version to use")
-)
-
-func getEnv(name, def string) string {
- if v := os.Getenv(name); v != "" {
- return v
- }
- return def
-}
-
-// Init performs common initialization for a gen command. It parses the flags
-// and sets up the standard logging parameters.
-func Init() {
- log.SetPrefix("")
- log.SetFlags(log.Lshortfile)
- flag.Parse()
-}
-
-const header = `// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-`
-
-// UnicodeVersion reports the requested Unicode version.
-func UnicodeVersion() string {
- return *unicodeVersion
-}
-
-// CLDRVersion reports the requested CLDR version.
-func CLDRVersion() string {
- return *cldrVersion
-}
-
-var tags = []struct{ version, buildTags string }{
- {"10.0.0", "go1.10"},
- {"", "!go1.10"},
-}
-
-// buildTags reports the build tags used for the current Unicode version.
-func buildTags() string {
- v := UnicodeVersion()
- for _, x := range tags {
- // We should do a numeric comparison, but including the collate package
- // would create an import cycle. We approximate it by assuming that
- // longer version strings are later.
- if len(x.version) <= len(v) {
- return x.buildTags
- }
- if len(x.version) == len(v) && x.version <= v {
- return x.buildTags
- }
- }
- return tags[0].buildTags
-}
-
-// IsLocal reports whether data files are available locally.
-func IsLocal() bool {
- dir, err := localReadmeFile()
- if err != nil {
- return false
- }
- if _, err = os.Stat(dir); err != nil {
- return false
- }
- return true
-}
-
-// OpenUCDFile opens the requested UCD file. The file is specified relative to
-// the public Unicode root directory. It will call log.Fatal if there are any
-// errors.
-func OpenUCDFile(file string) io.ReadCloser {
- return openUnicode(path.Join(*unicodeVersion, "ucd", file))
-}
-
-// OpenCLDRCoreZip opens the CLDR core zip file. It will call log.Fatal if there
-// are any errors.
-func OpenCLDRCoreZip() io.ReadCloser {
- return OpenUnicodeFile("cldr", *cldrVersion, "core.zip")
-}
-
-// OpenUnicodeFile opens the requested file of the requested category from the
-// root of the Unicode data archive. The file is specified relative to the
-// public Unicode root directory. If version is "", it will use the default
-// Unicode version. It will call log.Fatal if there are any errors.
-func OpenUnicodeFile(category, version, file string) io.ReadCloser {
- if version == "" {
- version = UnicodeVersion()
- }
- return openUnicode(path.Join(category, version, file))
-}
-
-// OpenIANAFile opens the requested IANA file. The file is specified relative
-// to the IANA root, which is typically either http://www.iana.org or the
-// iana directory in the local mirror. It will call log.Fatal if there are any
-// errors.
-func OpenIANAFile(path string) io.ReadCloser {
- return Open(*iana, "iana", path)
-}
-
-var (
- dirMutex sync.Mutex
- localDir string
-)
-
-const permissions = 0755
-
-func localReadmeFile() (string, error) {
- p, err := build.Import("golang.org/x/text", "", build.FindOnly)
- if err != nil {
- return "", fmt.Errorf("Could not locate package: %v", err)
- }
- return filepath.Join(p.Dir, "DATA", "README"), nil
-}
-
-func getLocalDir() string {
- dirMutex.Lock()
- defer dirMutex.Unlock()
-
- readme, err := localReadmeFile()
- if err != nil {
- log.Fatal(err)
- }
- dir := filepath.Dir(readme)
- if _, err := os.Stat(readme); err != nil {
- if err := os.MkdirAll(dir, permissions); err != nil {
- log.Fatalf("Could not create directory: %v", err)
- }
- ioutil.WriteFile(readme, []byte(readmeTxt), permissions)
- }
- return dir
-}
-
-const readmeTxt = `Generated by golang.org/x/text/internal/gen. DO NOT EDIT.
-
-This directory contains downloaded files used to generate the various tables
-in the golang.org/x/text subrepo.
-
-Note that the language subtag repo (iana/assignments/language-subtag-registry)
-and all other times in the iana subdirectory are not versioned and will need
-to be periodically manually updated. The easiest way to do this is to remove
-the entire iana directory. This is mostly of concern when updating the language
-package.
-`
-
-// Open opens subdir/path if a local directory is specified and the file exists,
-// where subdir is a directory relative to the local root, or fetches it from
-// urlRoot/path otherwise. It will call log.Fatal if there are any errors.
-func Open(urlRoot, subdir, path string) io.ReadCloser {
- file := filepath.Join(getLocalDir(), subdir, filepath.FromSlash(path))
- return open(file, urlRoot, path)
-}
-
-func openUnicode(path string) io.ReadCloser {
- file := filepath.Join(getLocalDir(), filepath.FromSlash(path))
- return open(file, *url, path)
-}
-
-// TODO: automatically periodically update non-versioned files.
-
-func open(file, urlRoot, path string) io.ReadCloser {
- if f, err := os.Open(file); err == nil {
- return f
- }
- r := get(urlRoot, path)
- defer r.Close()
- b, err := ioutil.ReadAll(r)
- if err != nil {
- log.Fatalf("Could not download file: %v", err)
- }
- os.MkdirAll(filepath.Dir(file), permissions)
- if err := ioutil.WriteFile(file, b, permissions); err != nil {
- log.Fatalf("Could not create file: %v", err)
- }
- return ioutil.NopCloser(bytes.NewReader(b))
-}
-
-func get(root, path string) io.ReadCloser {
- url := root + "/" + path
- fmt.Printf("Fetching %s...", url)
- defer fmt.Println(" done.")
- resp, err := http.Get(url)
- if err != nil {
- log.Fatalf("HTTP GET: %v", err)
- }
- if resp.StatusCode != 200 {
- log.Fatalf("Bad GET status for %q: %q", url, resp.Status)
- }
- return resp.Body
-}
-
-// TODO: use Write*Version in all applicable packages.
-
-// WriteUnicodeVersion writes a constant for the Unicode version from which the
-// tables are generated.
-func WriteUnicodeVersion(w io.Writer) {
- fmt.Fprintf(w, "// UnicodeVersion is the Unicode version from which the tables in this package are derived.\n")
- fmt.Fprintf(w, "const UnicodeVersion = %q\n\n", UnicodeVersion())
-}
-
-// WriteCLDRVersion writes a constant for the CLDR version from which the
-// tables are generated.
-func WriteCLDRVersion(w io.Writer) {
- fmt.Fprintf(w, "// CLDRVersion is the CLDR version from which the tables in this package are derived.\n")
- fmt.Fprintf(w, "const CLDRVersion = %q\n\n", CLDRVersion())
-}
-
-// WriteGoFile prepends a standard file comment and package statement to the
-// given bytes, applies gofmt, and writes them to a file with the given name.
-// It will call log.Fatal if there are any errors.
-func WriteGoFile(filename, pkg string, b []byte) {
- w, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer w.Close()
- if _, err = WriteGo(w, pkg, "", b); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-func insertVersion(filename, version string) string {
- suffix := ".go"
- if strings.HasSuffix(filename, "_test.go") {
- suffix = "_test.go"
- }
- return fmt.Sprint(filename[:len(filename)-len(suffix)], version, suffix)
-}
-
-// WriteVersionedGoFile prepends a standard file comment, adds build tags to
-// version the file for the current Unicode version, and package statement to
-// the given bytes, applies gofmt, and writes them to a file with the given
-// name. It will call log.Fatal if there are any errors.
-func WriteVersionedGoFile(filename, pkg string, b []byte) {
- tags := buildTags()
- if tags != "" {
- filename = insertVersion(filename, UnicodeVersion())
- }
- w, err := os.Create(filename)
- if err != nil {
- log.Fatalf("Could not create file %s: %v", filename, err)
- }
- defer w.Close()
- if _, err = WriteGo(w, pkg, tags, b); err != nil {
- log.Fatalf("Error writing file %s: %v", filename, err)
- }
-}
-
-// WriteGo prepends a standard file comment and package statement to the given
-// bytes, applies gofmt, and writes them to w.
-func WriteGo(w io.Writer, pkg, tags string, b []byte) (n int, err error) {
- src := []byte(header)
- if tags != "" {
- src = append(src, fmt.Sprintf("// +build %s\n\n", tags)...)
- }
- src = append(src, fmt.Sprintf("package %s\n\n", pkg)...)
- src = append(src, b...)
- formatted, err := format.Source(src)
- if err != nil {
- // Print the generated code even in case of an error so that the
- // returned error can be meaningfully interpreted.
- n, _ = w.Write(src)
- return n, err
- }
- return w.Write(formatted)
-}
-
-// Repackage rewrites a Go file from belonging to package main to belonging to
-// the given package.
-func Repackage(inFile, outFile, pkg string) {
- src, err := ioutil.ReadFile(inFile)
- if err != nil {
- log.Fatalf("reading %s: %v", inFile, err)
- }
- const toDelete = "package main\n\n"
- i := bytes.Index(src, []byte(toDelete))
- if i < 0 {
- log.Fatalf("Could not find %q in %s.", toDelete, inFile)
- }
- w := &bytes.Buffer{}
- w.Write(src[i+len(toDelete):])
- WriteGoFile(outFile, pkg, w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go
deleted file mode 100644
index fe47b9b..0000000
--- a/vendor/golang.org/x/text/transform/transform.go
+++ /dev/null
@@ -1,705 +0,0 @@
-// 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 transform provides reader and writer wrappers that transform the
-// bytes passing through as well as various transformations. Example
-// transformations provided by other packages include normalization and
-// conversion between character sets.
-package transform // import "golang.org/x/text/transform"
-
-import (
- "bytes"
- "errors"
- "io"
- "unicode/utf8"
-)
-
-var (
- // ErrShortDst means that the destination buffer was too short to
- // receive all of the transformed bytes.
- ErrShortDst = errors.New("transform: short destination buffer")
-
- // ErrShortSrc means that the source buffer has insufficient data to
- // complete the transformation.
- ErrShortSrc = errors.New("transform: short source buffer")
-
- // ErrEndOfSpan means that the input and output (the transformed input)
- // are not identical.
- ErrEndOfSpan = errors.New("transform: input and output are not identical")
-
- // errInconsistentByteCount means that Transform returned success (nil
- // error) but also returned nSrc inconsistent with the src argument.
- errInconsistentByteCount = errors.New("transform: inconsistent byte count returned")
-
- // errShortInternal means that an internal buffer is not large enough
- // to make progress and the Transform operation must be aborted.
- errShortInternal = errors.New("transform: short internal buffer")
-)
-
-// Transformer transforms bytes.
-type Transformer interface {
- // Transform writes to dst the transformed bytes read from src, and
- // returns the number of dst bytes written and src bytes read. The
- // atEOF argument tells whether src represents the last bytes of the
- // input.
- //
- // Callers should always process the nDst bytes produced and account
- // for the nSrc bytes consumed before considering the error err.
- //
- // A nil error means that all of the transformed bytes (whether freshly
- // transformed from src or left over from previous Transform calls)
- // were written to dst. A nil error can be returned regardless of
- // whether atEOF is true. If err is nil then nSrc must equal len(src);
- // the converse is not necessarily true.
- //
- // ErrShortDst means that dst was too short to receive all of the
- // transformed bytes. ErrShortSrc means that src had insufficient data
- // to complete the transformation. If both conditions apply, then
- // either error may be returned. Other than the error conditions listed
- // here, implementations are free to report other errors that arise.
- Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error)
-
- // Reset resets the state and allows a Transformer to be reused.
- Reset()
-}
-
-// SpanningTransformer extends the Transformer interface with a Span method
-// that determines how much of the input already conforms to the Transformer.
-type SpanningTransformer interface {
- Transformer
-
- // Span returns a position in src such that transforming src[:n] results in
- // identical output src[:n] for these bytes. It does not necessarily return
- // the largest such n. The atEOF argument tells whether src represents the
- // last bytes of the input.
- //
- // Callers should always account for the n bytes consumed before
- // considering the error err.
- //
- // A nil error means that all input bytes are known to be identical to the
- // output produced by the Transformer. A nil error can be be returned
- // regardless of whether atEOF is true. If err is nil, then then n must
- // equal len(src); the converse is not necessarily true.
- //
- // ErrEndOfSpan means that the Transformer output may differ from the
- // input after n bytes. Note that n may be len(src), meaning that the output
- // would contain additional bytes after otherwise identical output.
- // ErrShortSrc means that src had insufficient data to determine whether the
- // remaining bytes would change. Other than the error conditions listed
- // here, implementations are free to report other errors that arise.
- //
- // Calling Span can modify the Transformer state as a side effect. In
- // effect, it does the transformation just as calling Transform would, only
- // without copying to a destination buffer and only up to a point it can
- // determine the input and output bytes are the same. This is obviously more
- // limited than calling Transform, but can be more efficient in terms of
- // copying and allocating buffers. Calls to Span and Transform may be
- // interleaved.
- Span(src []byte, atEOF bool) (n int, err error)
-}
-
-// NopResetter can be embedded by implementations of Transformer to add a nop
-// Reset method.
-type NopResetter struct{}
-
-// Reset implements the Reset method of the Transformer interface.
-func (NopResetter) Reset() {}
-
-// Reader wraps another io.Reader by transforming the bytes read.
-type Reader struct {
- r io.Reader
- t Transformer
- err error
-
- // dst[dst0:dst1] contains bytes that have been transformed by t but
- // not yet copied out via Read.
- dst []byte
- dst0, dst1 int
-
- // src[src0:src1] contains bytes that have been read from r but not
- // yet transformed through t.
- src []byte
- src0, src1 int
-
- // transformComplete is whether the transformation is complete,
- // regardless of whether or not it was successful.
- transformComplete bool
-}
-
-const defaultBufSize = 4096
-
-// NewReader returns a new Reader that wraps r by transforming the bytes read
-// via t. It calls Reset on t.
-func NewReader(r io.Reader, t Transformer) *Reader {
- t.Reset()
- return &Reader{
- r: r,
- t: t,
- dst: make([]byte, defaultBufSize),
- src: make([]byte, defaultBufSize),
- }
-}
-
-// Read implements the io.Reader interface.
-func (r *Reader) Read(p []byte) (int, error) {
- n, err := 0, error(nil)
- for {
- // Copy out any transformed bytes and return the final error if we are done.
- if r.dst0 != r.dst1 {
- n = copy(p, r.dst[r.dst0:r.dst1])
- r.dst0 += n
- if r.dst0 == r.dst1 && r.transformComplete {
- return n, r.err
- }
- return n, nil
- } else if r.transformComplete {
- return 0, r.err
- }
-
- // Try to transform some source bytes, or to flush the transformer if we
- // are out of source bytes. We do this even if r.r.Read returned an error.
- // As the io.Reader documentation says, "process the n > 0 bytes returned
- // before considering the error".
- if r.src0 != r.src1 || r.err != nil {
- r.dst0 = 0
- r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF)
- r.src0 += n
-
- switch {
- case err == nil:
- if r.src0 != r.src1 {
- r.err = errInconsistentByteCount
- }
- // The Transform call was successful; we are complete if we
- // cannot read more bytes into src.
- r.transformComplete = r.err != nil
- continue
- case err == ErrShortDst && (r.dst1 != 0 || n != 0):
- // Make room in dst by copying out, and try again.
- continue
- case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil:
- // Read more bytes into src via the code below, and try again.
- default:
- r.transformComplete = true
- // The reader error (r.err) takes precedence over the
- // transformer error (err) unless r.err is nil or io.EOF.
- if r.err == nil || r.err == io.EOF {
- r.err = err
- }
- continue
- }
- }
-
- // Move any untransformed source bytes to the start of the buffer
- // and read more bytes.
- if r.src0 != 0 {
- r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1])
- }
- n, r.err = r.r.Read(r.src[r.src1:])
- r.src1 += n
- }
-}
-
-// TODO: implement ReadByte (and ReadRune??).
-
-// Writer wraps another io.Writer by transforming the bytes read.
-// The user needs to call Close to flush unwritten bytes that may
-// be buffered.
-type Writer struct {
- w io.Writer
- t Transformer
- dst []byte
-
- // src[:n] contains bytes that have not yet passed through t.
- src []byte
- n int
-}
-
-// NewWriter returns a new Writer that wraps w by transforming the bytes written
-// via t. It calls Reset on t.
-func NewWriter(w io.Writer, t Transformer) *Writer {
- t.Reset()
- return &Writer{
- w: w,
- t: t,
- dst: make([]byte, defaultBufSize),
- src: make([]byte, defaultBufSize),
- }
-}
-
-// Write implements the io.Writer interface. If there are not enough
-// bytes available to complete a Transform, the bytes will be buffered
-// for the next write. Call Close to convert the remaining bytes.
-func (w *Writer) Write(data []byte) (n int, err error) {
- src := data
- if w.n > 0 {
- // Append bytes from data to the last remainder.
- // TODO: limit the amount copied on first try.
- n = copy(w.src[w.n:], data)
- w.n += n
- src = w.src[:w.n]
- }
- for {
- nDst, nSrc, err := w.t.Transform(w.dst, src, false)
- if _, werr := w.w.Write(w.dst[:nDst]); werr != nil {
- return n, werr
- }
- src = src[nSrc:]
- if w.n == 0 {
- n += nSrc
- } else if len(src) <= n {
- // Enough bytes from w.src have been consumed. We make src point
- // to data instead to reduce the copying.
- w.n = 0
- n -= len(src)
- src = data[n:]
- if n < len(data) && (err == nil || err == ErrShortSrc) {
- continue
- }
- }
- switch err {
- case ErrShortDst:
- // This error is okay as long as we are making progress.
- if nDst > 0 || nSrc > 0 {
- continue
- }
- case ErrShortSrc:
- if len(src) < len(w.src) {
- m := copy(w.src, src)
- // If w.n > 0, bytes from data were already copied to w.src and n
- // was already set to the number of bytes consumed.
- if w.n == 0 {
- n += m
- }
- w.n = m
- err = nil
- } else if nDst > 0 || nSrc > 0 {
- // Not enough buffer to store the remainder. Keep processing as
- // long as there is progress. Without this case, transforms that
- // require a lookahead larger than the buffer may result in an
- // error. This is not something one may expect to be common in
- // practice, but it may occur when buffers are set to small
- // sizes during testing.
- continue
- }
- case nil:
- if w.n > 0 {
- err = errInconsistentByteCount
- }
- }
- return n, err
- }
-}
-
-// Close implements the io.Closer interface.
-func (w *Writer) Close() error {
- src := w.src[:w.n]
- for {
- nDst, nSrc, err := w.t.Transform(w.dst, src, true)
- if _, werr := w.w.Write(w.dst[:nDst]); werr != nil {
- return werr
- }
- if err != ErrShortDst {
- return err
- }
- src = src[nSrc:]
- }
-}
-
-type nop struct{ NopResetter }
-
-func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- n := copy(dst, src)
- if n < len(src) {
- err = ErrShortDst
- }
- return n, n, err
-}
-
-func (nop) Span(src []byte, atEOF bool) (n int, err error) {
- return len(src), nil
-}
-
-type discard struct{ NopResetter }
-
-func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- return 0, len(src), nil
-}
-
-var (
- // Discard is a Transformer for which all Transform calls succeed
- // by consuming all bytes and writing nothing.
- Discard Transformer = discard{}
-
- // Nop is a SpanningTransformer that copies src to dst.
- Nop SpanningTransformer = nop{}
-)
-
-// chain is a sequence of links. A chain with N Transformers has N+1 links and
-// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst
-// buffers given to chain.Transform and the middle N-1 buffers are intermediate
-// buffers owned by the chain. The i'th link transforms bytes from the i'th
-// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer
-// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N).
-type chain struct {
- link []link
- err error
- // errStart is the index at which the error occurred plus 1. Processing
- // errStart at this level at the next call to Transform. As long as
- // errStart > 0, chain will not consume any more source bytes.
- errStart int
-}
-
-func (c *chain) fatalError(errIndex int, err error) {
- if i := errIndex + 1; i > c.errStart {
- c.errStart = i
- c.err = err
- }
-}
-
-type link struct {
- t Transformer
- // b[p:n] holds the bytes to be transformed by t.
- b []byte
- p int
- n int
-}
-
-func (l *link) src() []byte {
- return l.b[l.p:l.n]
-}
-
-func (l *link) dst() []byte {
- return l.b[l.n:]
-}
-
-// Chain returns a Transformer that applies t in sequence.
-func Chain(t ...Transformer) Transformer {
- if len(t) == 0 {
- return nop{}
- }
- c := &chain{link: make([]link, len(t)+1)}
- for i, tt := range t {
- c.link[i].t = tt
- }
- // Allocate intermediate buffers.
- b := make([][defaultBufSize]byte, len(t)-1)
- for i := range b {
- c.link[i+1].b = b[i][:]
- }
- return c
-}
-
-// Reset resets the state of Chain. It calls Reset on all the Transformers.
-func (c *chain) Reset() {
- for i, l := range c.link {
- if l.t != nil {
- l.t.Reset()
- }
- c.link[i].p, c.link[i].n = 0, 0
- }
-}
-
-// TODO: make chain use Span (is going to be fun to implement!)
-
-// Transform applies the transformers of c in sequence.
-func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- // Set up src and dst in the chain.
- srcL := &c.link[0]
- dstL := &c.link[len(c.link)-1]
- srcL.b, srcL.p, srcL.n = src, 0, len(src)
- dstL.b, dstL.n = dst, 0
- var lastFull, needProgress bool // for detecting progress
-
- // i is the index of the next Transformer to apply, for i in [low, high].
- // low is the lowest index for which c.link[low] may still produce bytes.
- // high is the highest index for which c.link[high] has a Transformer.
- // The error returned by Transform determines whether to increase or
- // decrease i. We try to completely fill a buffer before converting it.
- for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; {
- in, out := &c.link[i], &c.link[i+1]
- nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i)
- out.n += nDst
- in.p += nSrc
- if i > 0 && in.p == in.n {
- in.p, in.n = 0, 0
- }
- needProgress, lastFull = lastFull, false
- switch err0 {
- case ErrShortDst:
- // Process the destination buffer next. Return if we are already
- // at the high index.
- if i == high {
- return dstL.n, srcL.p, ErrShortDst
- }
- if out.n != 0 {
- i++
- // If the Transformer at the next index is not able to process any
- // source bytes there is nothing that can be done to make progress
- // and the bytes will remain unprocessed. lastFull is used to
- // detect this and break out of the loop with a fatal error.
- lastFull = true
- continue
- }
- // The destination buffer was too small, but is completely empty.
- // Return a fatal error as this transformation can never complete.
- c.fatalError(i, errShortInternal)
- case ErrShortSrc:
- if i == 0 {
- // Save ErrShortSrc in err. All other errors take precedence.
- err = ErrShortSrc
- break
- }
- // Source bytes were depleted before filling up the destination buffer.
- // Verify we made some progress, move the remaining bytes to the errStart
- // and try to get more source bytes.
- if needProgress && nSrc == 0 || in.n-in.p == len(in.b) {
- // There were not enough source bytes to proceed while the source
- // buffer cannot hold any more bytes. Return a fatal error as this
- // transformation can never complete.
- c.fatalError(i, errShortInternal)
- break
- }
- // in.b is an internal buffer and we can make progress.
- in.p, in.n = 0, copy(in.b, in.src())
- fallthrough
- case nil:
- // if i == low, we have depleted the bytes at index i or any lower levels.
- // In that case we increase low and i. In all other cases we decrease i to
- // fetch more bytes before proceeding to the next index.
- if i > low {
- i--
- continue
- }
- default:
- c.fatalError(i, err0)
- }
- // Exhausted level low or fatal error: increase low and continue
- // to process the bytes accepted so far.
- i++
- low = i
- }
-
- // If c.errStart > 0, this means we found a fatal error. We will clear
- // all upstream buffers. At this point, no more progress can be made
- // downstream, as Transform would have bailed while handling ErrShortDst.
- if c.errStart > 0 {
- for i := 1; i < c.errStart; i++ {
- c.link[i].p, c.link[i].n = 0, 0
- }
- err, c.errStart, c.err = c.err, 0, nil
- }
- return dstL.n, srcL.p, err
-}
-
-// Deprecated: use runes.Remove instead.
-func RemoveFunc(f func(r rune) bool) Transformer {
- return removeF(f)
-}
-
-type removeF func(r rune) bool
-
-func (removeF) Reset() {}
-
-// Transform implements the Transformer interface.
-func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
- for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] {
-
- if r = rune(src[0]); r < utf8.RuneSelf {
- sz = 1
- } else {
- r, sz = utf8.DecodeRune(src)
-
- if sz == 1 {
- // Invalid rune.
- if !atEOF && !utf8.FullRune(src) {
- err = ErrShortSrc
- break
- }
- // We replace illegal bytes with RuneError. Not doing so might
- // otherwise turn a sequence of invalid UTF-8 into valid UTF-8.
- // The resulting byte sequence may subsequently contain runes
- // for which t(r) is true that were passed unnoticed.
- if !t(r) {
- if nDst+3 > len(dst) {
- err = ErrShortDst
- break
- }
- nDst += copy(dst[nDst:], "\uFFFD")
- }
- nSrc++
- continue
- }
- }
-
- if !t(r) {
- if nDst+sz > len(dst) {
- err = ErrShortDst
- break
- }
- nDst += copy(dst[nDst:], src[:sz])
- }
- nSrc += sz
- }
- return
-}
-
-// grow returns a new []byte that is longer than b, and copies the first n bytes
-// of b to the start of the new slice.
-func grow(b []byte, n int) []byte {
- m := len(b)
- if m <= 32 {
- m = 64
- } else if m <= 256 {
- m *= 2
- } else {
- m += m >> 1
- }
- buf := make([]byte, m)
- copy(buf, b[:n])
- return buf
-}
-
-const initialBufSize = 128
-
-// String returns a string with the result of converting s[:n] using t, where
-// n <= len(s). If err == nil, n will be len(s). It calls Reset on t.
-func String(t Transformer, s string) (result string, n int, err error) {
- t.Reset()
- if s == "" {
- // Fast path for the common case for empty input. Results in about a
- // 86% reduction of running time for BenchmarkStringLowerEmpty.
- if _, _, err := t.Transform(nil, nil, true); err == nil {
- return "", 0, nil
- }
- }
-
- // Allocate only once. Note that both dst and src escape when passed to
- // Transform.
- buf := [2 * initialBufSize]byte{}
- dst := buf[:initialBufSize:initialBufSize]
- src := buf[initialBufSize : 2*initialBufSize]
-
- // The input string s is transformed in multiple chunks (starting with a
- // chunk size of initialBufSize). nDst and nSrc are per-chunk (or
- // per-Transform-call) indexes, pDst and pSrc are overall indexes.
- nDst, nSrc := 0, 0
- pDst, pSrc := 0, 0
-
- // pPrefix is the length of a common prefix: the first pPrefix bytes of the
- // result will equal the first pPrefix bytes of s. It is not guaranteed to
- // be the largest such value, but if pPrefix, len(result) and len(s) are
- // all equal after the final transform (i.e. calling Transform with atEOF
- // being true returned nil error) then we don't need to allocate a new
- // result string.
- pPrefix := 0
- for {
- // Invariant: pDst == pPrefix && pSrc == pPrefix.
-
- n := copy(src, s[pSrc:])
- nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s))
- pDst += nDst
- pSrc += nSrc
-
- // TODO: let transformers implement an optional Spanner interface, akin
- // to norm's QuickSpan. This would even allow us to avoid any allocation.
- if !bytes.Equal(dst[:nDst], src[:nSrc]) {
- break
- }
- pPrefix = pSrc
- if err == ErrShortDst {
- // A buffer can only be short if a transformer modifies its input.
- break
- } else if err == ErrShortSrc {
- if nSrc == 0 {
- // No progress was made.
- break
- }
- // Equal so far and !atEOF, so continue checking.
- } else if err != nil || pPrefix == len(s) {
- return string(s[:pPrefix]), pPrefix, err
- }
- }
- // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc.
-
- // We have transformed the first pSrc bytes of the input s to become pDst
- // transformed bytes. Those transformed bytes are discontiguous: the first
- // pPrefix of them equal s[:pPrefix] and the last nDst of them equal
- // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so
- // that they become one contiguous slice: dst[:pDst].
- if pPrefix != 0 {
- newDst := dst
- if pDst > len(newDst) {
- newDst = make([]byte, len(s)+nDst-nSrc)
- }
- copy(newDst[pPrefix:pDst], dst[:nDst])
- copy(newDst[:pPrefix], s[:pPrefix])
- dst = newDst
- }
-
- // Prevent duplicate Transform calls with atEOF being true at the end of
- // the input. Also return if we have an unrecoverable error.
- if (err == nil && pSrc == len(s)) ||
- (err != nil && err != ErrShortDst && err != ErrShortSrc) {
- return string(dst[:pDst]), pSrc, err
- }
-
- // Transform the remaining input, growing dst and src buffers as necessary.
- for {
- n := copy(src, s[pSrc:])
- nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], pSrc+n == len(s))
- pDst += nDst
- pSrc += nSrc
-
- // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can
- // make progress. This may avoid excessive allocations.
- if err == ErrShortDst {
- if nDst == 0 {
- dst = grow(dst, pDst)
- }
- } else if err == ErrShortSrc {
- if nSrc == 0 {
- src = grow(src, 0)
- }
- } else if err != nil || pSrc == len(s) {
- return string(dst[:pDst]), pSrc, err
- }
- }
-}
-
-// Bytes returns a new byte slice with the result of converting b[:n] using t,
-// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t.
-func Bytes(t Transformer, b []byte) (result []byte, n int, err error) {
- return doAppend(t, 0, make([]byte, len(b)), b)
-}
-
-// Append appends the result of converting src[:n] using t to dst, where
-// n <= len(src), If err == nil, n will be len(src). It calls Reset on t.
-func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) {
- if len(dst) == cap(dst) {
- n := len(src) + len(dst) // It is okay for this to be 0.
- b := make([]byte, n)
- dst = b[:copy(b, dst)]
- }
- return doAppend(t, len(dst), dst[:cap(dst)], src)
-}
-
-func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) {
- t.Reset()
- pSrc := 0
- for {
- nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true)
- pDst += nDst
- pSrc += nSrc
- if err != ErrShortDst {
- return dst[:pDst], pSrc, err
- }
-
- // Grow the destination buffer, but do not grow as long as we can make
- // progress. This may avoid excessive allocations.
- if nDst == 0 {
- dst = grow(dst, pDst)
- }
- }
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/base.go b/vendor/golang.org/x/text/unicode/cldr/base.go
deleted file mode 100644
index 63cdc16..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/base.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// 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)
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/cldr.go b/vendor/golang.org/x/text/unicode/cldr/cldr.go
deleted file mode 100644
index 2197f8a..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/cldr.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// 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.
-
-//go:generate go run makexml.go -output xml.go
-
-// Package cldr provides a parser for LDML and related XML formats.
-// This package is intended to be used by the table generation tools
-// for the various internationalization-related packages.
-// As the XML types are generated from the CLDR DTD, and as the CLDR standard
-// is periodically amended, this package may change considerably over time.
-// This mostly means that data may appear and disappear between versions.
-// That is, old code should keep compiling for newer versions, but data
-// may have moved or changed.
-// CLDR version 22 is the first version supported by this package.
-// Older versions may not work.
-package cldr // import "golang.org/x/text/unicode/cldr"
-
-import (
- "fmt"
- "sort"
-)
-
-// CLDR provides access to parsed data of the Unicode Common Locale Data Repository.
-type CLDR struct {
- parent map[string][]string
- locale map[string]*LDML
- resolved map[string]*LDML
- bcp47 *LDMLBCP47
- supp *SupplementalData
-}
-
-func makeCLDR() *CLDR {
- return &CLDR{
- parent: make(map[string][]string),
- locale: make(map[string]*LDML),
- resolved: make(map[string]*LDML),
- bcp47: &LDMLBCP47{},
- supp: &SupplementalData{},
- }
-}
-
-// BCP47 returns the parsed BCP47 LDML data. If no such data was parsed, nil is returned.
-func (cldr *CLDR) BCP47() *LDMLBCP47 {
- return nil
-}
-
-// Draft indicates the draft level of an element.
-type Draft int
-
-const (
- Approved Draft = iota
- Contributed
- Provisional
- Unconfirmed
-)
-
-var drafts = []string{"unconfirmed", "provisional", "contributed", "approved", ""}
-
-// ParseDraft returns the Draft value corresponding to the given string. The
-// empty string corresponds to Approved.
-func ParseDraft(level string) (Draft, error) {
- if level == "" {
- return Approved, nil
- }
- for i, s := range drafts {
- if level == s {
- return Unconfirmed - Draft(i), nil
- }
- }
- return Approved, fmt.Errorf("cldr: unknown draft level %q", level)
-}
-
-func (d Draft) String() string {
- return drafts[len(drafts)-1-int(d)]
-}
-
-// SetDraftLevel sets which draft levels to include in the evaluated LDML.
-// Any draft element for which the draft level is higher than lev will be excluded.
-// If multiple draft levels are available for a single element, the one with the
-// lowest draft level will be selected, unless preferDraft is true, in which case
-// the highest draft will be chosen.
-// It is assumed that the underlying LDML is canonicalized.
-func (cldr *CLDR) SetDraftLevel(lev Draft, preferDraft bool) {
- // TODO: implement
- cldr.resolved = make(map[string]*LDML)
-}
-
-// RawLDML returns the LDML XML for id in unresolved form.
-// id must be one of the strings returned by Locales.
-func (cldr *CLDR) RawLDML(loc string) *LDML {
- return cldr.locale[loc]
-}
-
-// LDML returns the fully resolved LDML XML for loc, which must be one of
-// the strings returned by Locales.
-func (cldr *CLDR) LDML(loc string) (*LDML, error) {
- return cldr.resolve(loc)
-}
-
-// Supplemental returns the parsed supplemental data. If no such data was parsed,
-// nil is returned.
-func (cldr *CLDR) Supplemental() *SupplementalData {
- return cldr.supp
-}
-
-// Locales returns the locales for which there exist files.
-// Valid sublocales for which there is no file are not included.
-// The root locale is always sorted first.
-func (cldr *CLDR) Locales() []string {
- loc := []string{"root"}
- hasRoot := false
- for l, _ := range cldr.locale {
- if l == "root" {
- hasRoot = true
- continue
- }
- loc = append(loc, l)
- }
- sort.Strings(loc[1:])
- if !hasRoot {
- return loc[1:]
- }
- return loc
-}
-
-// Get fills in the fields of x based on the XPath path.
-func Get(e Elem, path string) (res Elem, err error) {
- return walkXPath(e, path)
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/collate.go b/vendor/golang.org/x/text/unicode/cldr/collate.go
deleted file mode 100644
index 80ee28d..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/collate.go
+++ /dev/null
@@ -1,359 +0,0 @@
-// 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 (
- "bufio"
- "encoding/xml"
- "errors"
- "fmt"
- "strconv"
- "strings"
- "unicode"
- "unicode/utf8"
-)
-
-// RuleProcessor can be passed to Collator's Process method, which
-// parses the rules and calls the respective method for each rule found.
-type RuleProcessor interface {
- Reset(anchor string, before int) error
- Insert(level int, str, context, extend string) error
- Index(id string)
-}
-
-const (
- // cldrIndex is a Unicode-reserved sentinel value used to mark the start
- // of a grouping within an index.
- // We ignore any rule that starts with this rune.
- // See http://unicode.org/reports/tr35/#Collation_Elements for details.
- cldrIndex = "\uFDD0"
-
- // specialAnchor is the format in which to represent logical reset positions,
- // such as "first tertiary ignorable".
- specialAnchor = "<%s/>"
-)
-
-// Process parses the rules for the tailorings of this collation
-// and calls the respective methods of p for each rule found.
-func (c Collation) Process(p RuleProcessor) (err error) {
- if len(c.Cr) > 0 {
- if len(c.Cr) > 1 {
- return fmt.Errorf("multiple cr elements, want 0 or 1")
- }
- return processRules(p, c.Cr[0].Data())
- }
- if c.Rules.Any != nil {
- return c.processXML(p)
- }
- return errors.New("no tailoring data")
-}
-
-// processRules parses rules in the Collation Rule Syntax defined in
-// http://www.unicode.org/reports/tr35/tr35-collation.html#Collation_Tailorings.
-func processRules(p RuleProcessor, s string) (err error) {
- chk := func(s string, e error) string {
- if err == nil {
- err = e
- }
- return s
- }
- i := 0 // Save the line number for use after the loop.
- scanner := bufio.NewScanner(strings.NewReader(s))
- for ; scanner.Scan() && err == nil; i++ {
- for s := skipSpace(scanner.Text()); s != "" && s[0] != '#'; s = skipSpace(s) {
- level := 5
- var ch byte
- switch ch, s = s[0], s[1:]; ch {
- case '&': // followed by <anchor> or '[' <key> ']'
- if s = skipSpace(s); consume(&s, '[') {
- s = chk(parseSpecialAnchor(p, s))
- } else {
- s = chk(parseAnchor(p, 0, s))
- }
- case '<': // sort relation '<'{1,4}, optionally followed by '*'.
- for level = 1; consume(&s, '<'); level++ {
- }
- if level > 4 {
- err = fmt.Errorf("level %d > 4", level)
- }
- fallthrough
- case '=': // identity relation, optionally followed by *.
- if consume(&s, '*') {
- s = chk(parseSequence(p, level, s))
- } else {
- s = chk(parseOrder(p, level, s))
- }
- default:
- chk("", fmt.Errorf("illegal operator %q", ch))
- break
- }
- }
- }
- if chk("", scanner.Err()); err != nil {
- return fmt.Errorf("%d: %v", i, err)
- }
- return nil
-}
-
-// parseSpecialAnchor parses the anchor syntax which is either of the form
-// ['before' <level>] <anchor>
-// or
-// [<label>]
-// The starting should already be consumed.
-func parseSpecialAnchor(p RuleProcessor, s string) (tail string, err error) {
- i := strings.IndexByte(s, ']')
- if i == -1 {
- return "", errors.New("unmatched bracket")
- }
- a := strings.TrimSpace(s[:i])
- s = s[i+1:]
- if strings.HasPrefix(a, "before ") {
- l, err := strconv.ParseUint(skipSpace(a[len("before "):]), 10, 3)
- if err != nil {
- return s, err
- }
- return parseAnchor(p, int(l), s)
- }
- return s, p.Reset(fmt.Sprintf(specialAnchor, a), 0)
-}
-
-func parseAnchor(p RuleProcessor, level int, s string) (tail string, err error) {
- anchor, s, err := scanString(s)
- if err != nil {
- return s, err
- }
- return s, p.Reset(anchor, level)
-}
-
-func parseOrder(p RuleProcessor, level int, s string) (tail string, err error) {
- var value, context, extend string
- if value, s, err = scanString(s); err != nil {
- return s, err
- }
- if strings.HasPrefix(value, cldrIndex) {
- p.Index(value[len(cldrIndex):])
- return
- }
- if consume(&s, '|') {
- if context, s, err = scanString(s); err != nil {
- return s, errors.New("missing string after context")
- }
- }
- if consume(&s, '/') {
- if extend, s, err = scanString(s); err != nil {
- return s, errors.New("missing string after extension")
- }
- }
- return s, p.Insert(level, value, context, extend)
-}
-
-// scanString scans a single input string.
-func scanString(s string) (str, tail string, err error) {
- if s = skipSpace(s); s == "" {
- return s, s, errors.New("missing string")
- }
- buf := [16]byte{} // small but enough to hold most cases.
- value := buf[:0]
- for s != "" {
- if consume(&s, '\'') {
- i := strings.IndexByte(s, '\'')
- if i == -1 {
- return "", "", errors.New(`unmatched single quote`)
- }
- if i == 0 {
- value = append(value, '\'')
- } else {
- value = append(value, s[:i]...)
- }
- s = s[i+1:]
- continue
- }
- r, sz := utf8.DecodeRuneInString(s)
- if unicode.IsSpace(r) || strings.ContainsRune("&<=#", r) {
- break
- }
- value = append(value, s[:sz]...)
- s = s[sz:]
- }
- return string(value), skipSpace(s), nil
-}
-
-func parseSequence(p RuleProcessor, level int, s string) (tail string, err error) {
- if s = skipSpace(s); s == "" {
- return s, errors.New("empty sequence")
- }
- last := rune(0)
- for s != "" {
- r, sz := utf8.DecodeRuneInString(s)
- s = s[sz:]
-
- if r == '-' {
- // We have a range. The first element was already written.
- if last == 0 {
- return s, errors.New("range without starter value")
- }
- r, sz = utf8.DecodeRuneInString(s)
- s = s[sz:]
- if r == utf8.RuneError || r < last {
- return s, fmt.Errorf("invalid range %q-%q", last, r)
- }
- for i := last + 1; i <= r; i++ {
- if err := p.Insert(level, string(i), "", ""); err != nil {
- return s, err
- }
- }
- last = 0
- continue
- }
-
- if unicode.IsSpace(r) || unicode.IsPunct(r) {
- break
- }
-
- // normal case
- if err := p.Insert(level, string(r), "", ""); err != nil {
- return s, err
- }
- last = r
- }
- return s, nil
-}
-
-func skipSpace(s string) string {
- return strings.TrimLeftFunc(s, unicode.IsSpace)
-}
-
-// consumes returns whether the next byte is ch. If so, it gobbles it by
-// updating s.
-func consume(s *string, ch byte) (ok bool) {
- if *s == "" || (*s)[0] != ch {
- return false
- }
- *s = (*s)[1:]
- return true
-}
-
-// The following code parses Collation rules of CLDR version 24 and before.
-
-var lmap = map[byte]int{
- 'p': 1,
- 's': 2,
- 't': 3,
- 'i': 5,
-}
-
-type rulesElem struct {
- Rules struct {
- Common
- Any []*struct {
- XMLName xml.Name
- rule
- } `xml:",any"`
- } `xml:"rules"`
-}
-
-type rule struct {
- Value string `xml:",chardata"`
- Before string `xml:"before,attr"`
- Any []*struct {
- XMLName xml.Name
- rule
- } `xml:",any"`
-}
-
-var emptyValueError = errors.New("cldr: empty rule value")
-
-func (r *rule) value() (string, error) {
- // Convert hexadecimal Unicode codepoint notation to a string.
- s := charRe.ReplaceAllStringFunc(r.Value, replaceUnicode)
- r.Value = s
- if s == "" {
- if len(r.Any) != 1 {
- return "", emptyValueError
- }
- r.Value = fmt.Sprintf(specialAnchor, r.Any[0].XMLName.Local)
- r.Any = nil
- } else if len(r.Any) != 0 {
- return "", fmt.Errorf("cldr: XML elements found in collation rule: %v", r.Any)
- }
- return r.Value, nil
-}
-
-func (r rule) process(p RuleProcessor, name, context, extend string) error {
- v, err := r.value()
- if err != nil {
- return err
- }
- switch name {
- case "p", "s", "t", "i":
- if strings.HasPrefix(v, cldrIndex) {
- p.Index(v[len(cldrIndex):])
- return nil
- }
- if err := p.Insert(lmap[name[0]], v, context, extend); err != nil {
- return err
- }
- case "pc", "sc", "tc", "ic":
- level := lmap[name[0]]
- for _, s := range v {
- if err := p.Insert(level, string(s), context, extend); err != nil {
- return err
- }
- }
- default:
- return fmt.Errorf("cldr: unsupported tag: %q", name)
- }
- return nil
-}
-
-// processXML parses the format of CLDR versions 24 and older.
-func (c Collation) processXML(p RuleProcessor) (err error) {
- // Collation is generated and defined in xml.go.
- var v string
- for _, r := range c.Rules.Any {
- switch r.XMLName.Local {
- case "reset":
- level := 0
- switch r.Before {
- case "primary", "1":
- level = 1
- case "secondary", "2":
- level = 2
- case "tertiary", "3":
- level = 3
- case "":
- default:
- return fmt.Errorf("cldr: unknown level %q", r.Before)
- }
- v, err = r.value()
- if err == nil {
- err = p.Reset(v, level)
- }
- case "x":
- var context, extend string
- for _, r1 := range r.Any {
- v, err = r1.value()
- switch r1.XMLName.Local {
- case "context":
- context = v
- case "extend":
- extend = v
- }
- }
- for _, r1 := range r.Any {
- if t := r1.XMLName.Local; t == "context" || t == "extend" {
- continue
- }
- r1.rule.process(p, r1.XMLName.Local, context, extend)
- }
- default:
- err = r.rule.process(p, r.XMLName.Local, "", "")
- }
- if err != nil {
- return err
- }
- }
- return nil
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/decode.go b/vendor/golang.org/x/text/unicode/cldr/decode.go
deleted file mode 100644
index 094d431..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/decode.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// 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 (
- "archive/zip"
- "bytes"
- "encoding/xml"
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "os"
- "path/filepath"
- "regexp"
-)
-
-// A Decoder loads an archive of CLDR data.
-type Decoder struct {
- dirFilter []string
- sectionFilter []string
- loader Loader
- cldr *CLDR
- curLocale string
-}
-
-// SetSectionFilter takes a list top-level LDML element names to which
-// evaluation of LDML should be limited. It automatically calls SetDirFilter.
-func (d *Decoder) SetSectionFilter(filter ...string) {
- d.sectionFilter = filter
- // TODO: automatically set dir filter
-}
-
-// SetDirFilter limits the loading of LDML XML files of the specied directories.
-// Note that sections may be split across directories differently for different CLDR versions.
-// For more robust code, use SetSectionFilter.
-func (d *Decoder) SetDirFilter(dir ...string) {
- d.dirFilter = dir
-}
-
-// A Loader provides access to the files of a CLDR archive.
-type Loader interface {
- Len() int
- Path(i int) string
- Reader(i int) (io.ReadCloser, error)
-}
-
-var fileRe = regexp.MustCompile(`.*[/\\](.*)[/\\](.*)\.xml`)
-
-// Decode loads and decodes the files represented by l.
-func (d *Decoder) Decode(l Loader) (cldr *CLDR, err error) {
- d.cldr = makeCLDR()
- for i := 0; i < l.Len(); i++ {
- fname := l.Path(i)
- if m := fileRe.FindStringSubmatch(fname); m != nil {
- if len(d.dirFilter) > 0 && !in(d.dirFilter, m[1]) {
- continue
- }
- var r io.Reader
- if r, err = l.Reader(i); err == nil {
- err = d.decode(m[1], m[2], r)
- }
- if err != nil {
- return nil, err
- }
- }
- }
- d.cldr.finalize(d.sectionFilter)
- return d.cldr, nil
-}
-
-func (d *Decoder) decode(dir, id string, r io.Reader) error {
- var v interface{}
- var l *LDML
- cldr := d.cldr
- switch {
- case dir == "supplemental":
- v = cldr.supp
- case dir == "transforms":
- return nil
- case dir == "bcp47":
- v = cldr.bcp47
- case dir == "validity":
- return nil
- default:
- ok := false
- if v, ok = cldr.locale[id]; !ok {
- l = &LDML{}
- v, cldr.locale[id] = l, l
- }
- }
- x := xml.NewDecoder(r)
- if err := x.Decode(v); err != nil {
- log.Printf("%s/%s: %v", dir, id, err)
- return err
- }
- if l != nil {
- if l.Identity == nil {
- return fmt.Errorf("%s/%s: missing identity element", dir, id)
- }
- // TODO: verify when CLDR bug http://unicode.org/cldr/trac/ticket/8970
- // is resolved.
- // path := strings.Split(id, "_")
- // if lang := l.Identity.Language.Type; lang != path[0] {
- // return fmt.Errorf("%s/%s: language was %s; want %s", dir, id, lang, path[0])
- // }
- }
- return nil
-}
-
-type pathLoader []string
-
-func makePathLoader(path string) (pl pathLoader, err error) {
- err = filepath.Walk(path, func(path string, _ os.FileInfo, err error) error {
- pl = append(pl, path)
- return err
- })
- return pl, err
-}
-
-func (pl pathLoader) Len() int {
- return len(pl)
-}
-
-func (pl pathLoader) Path(i int) string {
- return pl[i]
-}
-
-func (pl pathLoader) Reader(i int) (io.ReadCloser, error) {
- return os.Open(pl[i])
-}
-
-// DecodePath loads CLDR data from the given path.
-func (d *Decoder) DecodePath(path string) (cldr *CLDR, err error) {
- loader, err := makePathLoader(path)
- if err != nil {
- return nil, err
- }
- return d.Decode(loader)
-}
-
-type zipLoader struct {
- r *zip.Reader
-}
-
-func (zl zipLoader) Len() int {
- return len(zl.r.File)
-}
-
-func (zl zipLoader) Path(i int) string {
- return zl.r.File[i].Name
-}
-
-func (zl zipLoader) Reader(i int) (io.ReadCloser, error) {
- return zl.r.File[i].Open()
-}
-
-// DecodeZip loads CLDR data from the zip archive for which r is the source.
-func (d *Decoder) DecodeZip(r io.Reader) (cldr *CLDR, err error) {
- buffer, err := ioutil.ReadAll(r)
- if err != nil {
- return nil, err
- }
- archive, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
- if err != nil {
- return nil, err
- }
- return d.Decode(zipLoader{archive})
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/makexml.go b/vendor/golang.org/x/text/unicode/cldr/makexml.go
deleted file mode 100644
index 6114d01..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/makexml.go
+++ /dev/null
@@ -1,400 +0,0 @@
-// 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.
-
-// +build ignore
-
-// This tool generates types for the various XML formats of CLDR.
-package main
-
-import (
- "archive/zip"
- "bytes"
- "encoding/xml"
- "flag"
- "fmt"
- "io"
- "io/ioutil"
- "log"
- "os"
- "regexp"
- "strings"
-
- "golang.org/x/text/internal/gen"
-)
-
-var outputFile = flag.String("output", "xml.go", "output file name")
-
-func main() {
- flag.Parse()
-
- r := gen.OpenCLDRCoreZip()
- buffer, err := ioutil.ReadAll(r)
- if err != nil {
- log.Fatal("Could not read zip file")
- }
- r.Close()
- z, err := zip.NewReader(bytes.NewReader(buffer), int64(len(buffer)))
- if err != nil {
- log.Fatalf("Could not read zip archive: %v", err)
- }
-
- var buf bytes.Buffer
-
- version := gen.CLDRVersion()
-
- for _, dtd := range files {
- for _, f := range z.File {
- if strings.HasSuffix(f.Name, dtd.file+".dtd") {
- r, err := f.Open()
- failOnError(err)
-
- b := makeBuilder(&buf, dtd)
- b.parseDTD(r)
- b.resolve(b.index[dtd.top[0]])
- b.write()
- if b.version != "" && version != b.version {
- println(f.Name)
- log.Fatalf("main: inconsistent versions: found %s; want %s", b.version, version)
- }
- break
- }
- }
- }
- fmt.Fprintln(&buf, "// Version is the version of CLDR from which the XML definitions are generated.")
- fmt.Fprintf(&buf, "const Version = %q\n", version)
-
- gen.WriteGoFile(*outputFile, "cldr", buf.Bytes())
-}
-
-func failOnError(err error) {
- if err != nil {
- log.New(os.Stderr, "", log.Lshortfile).Output(2, err.Error())
- os.Exit(1)
- }
-}
-
-// configuration data per DTD type
-type dtd struct {
- file string // base file name
- root string // Go name of the root XML element
- top []string // create a different type for this section
-
- skipElem []string // hard-coded or deprecated elements
- skipAttr []string // attributes to exclude
- predefined []string // hard-coded elements exist of the form <name>Elem
- forceRepeat []string // elements to make slices despite DTD
-}
-
-var files = []dtd{
- {
- file: "ldmlBCP47",
- root: "LDMLBCP47",
- top: []string{"ldmlBCP47"},
- skipElem: []string{
- "cldrVersion", // deprecated, not used
- },
- },
- {
- file: "ldmlSupplemental",
- root: "SupplementalData",
- top: []string{"supplementalData"},
- skipElem: []string{
- "cldrVersion", // deprecated, not used
- },
- forceRepeat: []string{
- "plurals", // data defined in plurals.xml and ordinals.xml
- },
- },
- {
- file: "ldml",
- root: "LDML",
- top: []string{
- "ldml", "collation", "calendar", "timeZoneNames", "localeDisplayNames", "numbers",
- },
- skipElem: []string{
- "cp", // not used anywhere
- "special", // not used anywhere
- "fallback", // deprecated, not used
- "alias", // in Common
- "default", // in Common
- },
- skipAttr: []string{
- "hiraganaQuarternary", // typo in DTD, correct version included as well
- },
- predefined: []string{"rules"},
- },
-}
-
-var comments = map[string]string{
- "ldmlBCP47": `
-// LDMLBCP47 holds information on allowable values for various variables in LDML.
-`,
- "supplementalData": `
-// SupplementalData holds information relevant for internationalization
-// and proper use of CLDR, but that is not contained in the locale hierarchy.
-`,
- "ldml": `
-// LDML is the top-level type for locale-specific data.
-`,
- "collation": `
-// Collation contains rules that specify a certain sort-order,
-// as a tailoring of the root order.
-// The parsed rules are obtained by passing a RuleProcessor to Collation's
-// Process method.
-`,
- "calendar": `
-// Calendar specifies the fields used for formatting and parsing dates and times.
-// The month and quarter names are identified numerically, starting at 1.
-// The day (of the week) names are identified with short strings, since there is
-// no universally-accepted numeric designation.
-`,
- "dates": `
-// Dates contains information regarding the format and parsing of dates and times.
-`,
- "localeDisplayNames": `
-// LocaleDisplayNames specifies localized display names for for scripts, languages,
-// countries, currencies, and variants.
-`,
- "numbers": `
-// Numbers supplies information for formatting and parsing numbers and currencies.
-`,
-}
-
-type element struct {
- name string // XML element name
- category string // elements contained by this element
- signature string // category + attrKey*
-
- attr []*attribute // attributes supported by this element.
- sub []struct { // parsed and evaluated sub elements of this element.
- e *element
- repeat bool // true if the element needs to be a slice
- }
-
- resolved bool // prevent multiple resolutions of this element.
-}
-
-type attribute struct {
- name string
- key string
- list []string
-
- tag string // Go tag
-}
-
-var (
- reHead = regexp.MustCompile(` *(\w+) +([\w\-]+)`)
- reAttr = regexp.MustCompile(` *(\w+) *(?:(\w+)|\(([\w\- \|]+)\)) *(?:#([A-Z]*) *(?:\"([\.\d+])\")?)? *("[\w\-:]*")?`)
- reElem = regexp.MustCompile(`^ *(EMPTY|ANY|\(.*\)[\*\+\?]?) *$`)
- reToken = regexp.MustCompile(`\w\-`)
-)
-
-// builder is used to read in the DTD files from CLDR and generate Go code
-// to be used with the encoding/xml package.
-type builder struct {
- w io.Writer
- index map[string]*element
- elem []*element
- info dtd
- version string
-}
-
-func makeBuilder(w io.Writer, d dtd) builder {
- return builder{
- w: w,
- index: make(map[string]*element),
- elem: []*element{},
- info: d,
- }
-}
-
-// parseDTD parses a DTD file.
-func (b *builder) parseDTD(r io.Reader) {
- for d := xml.NewDecoder(r); ; {
- t, err := d.Token()
- if t == nil {
- break
- }
- failOnError(err)
- dir, ok := t.(xml.Directive)
- if !ok {
- continue
- }
- m := reHead.FindSubmatch(dir)
- dir = dir[len(m[0]):]
- ename := string(m[2])
- el, elementFound := b.index[ename]
- switch string(m[1]) {
- case "ELEMENT":
- if elementFound {
- log.Fatal("parseDTD: duplicate entry for element %q", ename)
- }
- m := reElem.FindSubmatch(dir)
- if m == nil {
- log.Fatalf("parseDTD: invalid element %q", string(dir))
- }
- if len(m[0]) != len(dir) {
- log.Fatal("parseDTD: invalid element %q", string(dir), len(dir), len(m[0]), string(m[0]))
- }
- s := string(m[1])
- el = &element{
- name: ename,
- category: s,
- }
- b.index[ename] = el
- case "ATTLIST":
- if !elementFound {
- log.Fatalf("parseDTD: unknown element %q", ename)
- }
- s := string(dir)
- m := reAttr.FindStringSubmatch(s)
- if m == nil {
- log.Fatal(fmt.Errorf("parseDTD: invalid attribute %q", string(dir)))
- }
- if m[4] == "FIXED" {
- b.version = m[5]
- } else {
- switch m[1] {
- case "draft", "references", "alt", "validSubLocales", "standard" /* in Common */ :
- case "type", "choice":
- default:
- el.attr = append(el.attr, &attribute{
- name: m[1],
- key: s,
- list: reToken.FindAllString(m[3], -1),
- })
- el.signature = fmt.Sprintf("%s=%s+%s", el.signature, m[1], m[2])
- }
- }
- }
- }
-}
-
-var reCat = regexp.MustCompile(`[ ,\|]*(?:(\(|\)|\#?[\w_-]+)([\*\+\?]?))?`)
-
-// resolve takes a parsed element and converts it into structured data
-// that can be used to generate the XML code.
-func (b *builder) resolve(e *element) {
- if e.resolved {
- return
- }
- b.elem = append(b.elem, e)
- e.resolved = true
- s := e.category
- found := make(map[string]bool)
- sequenceStart := []int{}
- for len(s) > 0 {
- m := reCat.FindStringSubmatch(s)
- if m == nil {
- log.Fatalf("%s: invalid category string %q", e.name, s)
- }
- repeat := m[2] == "*" || m[2] == "+" || in(b.info.forceRepeat, m[1])
- switch m[1] {
- case "":
- case "(":
- sequenceStart = append(sequenceStart, len(e.sub))
- case ")":
- if len(sequenceStart) == 0 {
- log.Fatalf("%s: unmatched closing parenthesis", e.name)
- }
- for i := sequenceStart[len(sequenceStart)-1]; i < len(e.sub); i++ {
- e.sub[i].repeat = e.sub[i].repeat || repeat
- }
- sequenceStart = sequenceStart[:len(sequenceStart)-1]
- default:
- if in(b.info.skipElem, m[1]) {
- } else if sub, ok := b.index[m[1]]; ok {
- if !found[sub.name] {
- e.sub = append(e.sub, struct {
- e *element
- repeat bool
- }{sub, repeat})
- found[sub.name] = true
- b.resolve(sub)
- }
- } else if m[1] == "#PCDATA" || m[1] == "ANY" {
- } else if m[1] != "EMPTY" {
- log.Fatalf("resolve:%s: element %q not found", e.name, m[1])
- }
- }
- s = s[len(m[0]):]
- }
-}
-
-// return true if s is contained in set.
-func in(set []string, s string) bool {
- for _, v := range set {
- if v == s {
- return true
- }
- }
- return false
-}
-
-var repl = strings.NewReplacer("-", " ", "_", " ")
-
-// title puts the first character or each character following '_' in title case and
-// removes all occurrences of '_'.
-func title(s string) string {
- return strings.Replace(strings.Title(repl.Replace(s)), " ", "", -1)
-}
-
-// writeElem generates Go code for a single element, recursively.
-func (b *builder) writeElem(tab int, e *element) {
- p := func(f string, x ...interface{}) {
- f = strings.Replace(f, "\n", "\n"+strings.Repeat("\t", tab), -1)
- fmt.Fprintf(b.w, f, x...)
- }
- if len(e.sub) == 0 && len(e.attr) == 0 {
- p("Common")
- return
- }
- p("struct {")
- tab++
- p("\nCommon")
- for _, attr := range e.attr {
- if !in(b.info.skipAttr, attr.name) {
- p("\n%s string `xml:\"%s,attr\"`", title(attr.name), attr.name)
- }
- }
- for _, sub := range e.sub {
- if in(b.info.predefined, sub.e.name) {
- p("\n%sElem", sub.e.name)
- continue
- }
- if in(b.info.skipElem, sub.e.name) {
- continue
- }
- p("\n%s ", title(sub.e.name))
- if sub.repeat {
- p("[]")
- }
- p("*")
- if in(b.info.top, sub.e.name) {
- p(title(sub.e.name))
- } else {
- b.writeElem(tab, sub.e)
- }
- p(" `xml:\"%s\"`", sub.e.name)
- }
- tab--
- p("\n}")
-}
-
-// write generates the Go XML code.
-func (b *builder) write() {
- for i, name := range b.info.top {
- e := b.index[name]
- if e != nil {
- fmt.Fprintf(b.w, comments[name])
- name := title(e.name)
- if i == 0 {
- name = b.info.root
- }
- fmt.Fprintf(b.w, "type %s ", name)
- b.writeElem(0, e)
- fmt.Fprint(b.w, "\n")
- }
- }
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/resolve.go b/vendor/golang.org/x/text/unicode/cldr/resolve.go
deleted file mode 100644
index 691b590..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/resolve.go
+++ /dev/null
@@ -1,602 +0,0 @@
-// 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
-
-// This file implements the various inheritance constructs defined by LDML.
-// See http://www.unicode.org/reports/tr35/#Inheritance_and_Validity
-// for more details.
-
-import (
- "fmt"
- "log"
- "reflect"
- "regexp"
- "sort"
- "strings"
-)
-
-// fieldIter iterates over fields in a struct. It includes
-// fields of embedded structs.
-type fieldIter struct {
- v reflect.Value
- index, n []int
-}
-
-func iter(v reflect.Value) fieldIter {
- if v.Kind() != reflect.Struct {
- log.Panicf("value %v must be a struct", v)
- }
- i := fieldIter{
- v: v,
- index: []int{0},
- n: []int{v.NumField()},
- }
- i.descent()
- return i
-}
-
-func (i *fieldIter) descent() {
- for f := i.field(); f.Anonymous && f.Type.NumField() > 0; f = i.field() {
- i.index = append(i.index, 0)
- i.n = append(i.n, f.Type.NumField())
- }
-}
-
-func (i *fieldIter) done() bool {
- return len(i.index) == 1 && i.index[0] >= i.n[0]
-}
-
-func skip(f reflect.StructField) bool {
- return !f.Anonymous && (f.Name[0] < 'A' || f.Name[0] > 'Z')
-}
-
-func (i *fieldIter) next() {
- for {
- k := len(i.index) - 1
- i.index[k]++
- if i.index[k] < i.n[k] {
- if !skip(i.field()) {
- break
- }
- } else {
- if k == 0 {
- return
- }
- i.index = i.index[:k]
- i.n = i.n[:k]
- }
- }
- i.descent()
-}
-
-func (i *fieldIter) value() reflect.Value {
- return i.v.FieldByIndex(i.index)
-}
-
-func (i *fieldIter) field() reflect.StructField {
- return i.v.Type().FieldByIndex(i.index)
-}
-
-type visitor func(v reflect.Value) error
-
-var stopDescent = fmt.Errorf("do not recurse")
-
-func (f visitor) visit(x interface{}) error {
- return f.visitRec(reflect.ValueOf(x))
-}
-
-// visit recursively calls f on all nodes in v.
-func (f visitor) visitRec(v reflect.Value) error {
- if v.Kind() == reflect.Ptr {
- if v.IsNil() {
- return nil
- }
- return f.visitRec(v.Elem())
- }
- if err := f(v); err != nil {
- if err == stopDescent {
- return nil
- }
- return err
- }
- switch v.Kind() {
- case reflect.Struct:
- for i := iter(v); !i.done(); i.next() {
- if err := f.visitRec(i.value()); err != nil {
- return err
- }
- }
- case reflect.Slice:
- for i := 0; i < v.Len(); i++ {
- if err := f.visitRec(v.Index(i)); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-// getPath is used for error reporting purposes only.
-func getPath(e Elem) string {
- if e == nil {
- return "<nil>"
- }
- if e.enclosing() == nil {
- return e.GetCommon().name
- }
- if e.GetCommon().Type == "" {
- return fmt.Sprintf("%s.%s", getPath(e.enclosing()), e.GetCommon().name)
- }
- return fmt.Sprintf("%s.%s[type=%s]", getPath(e.enclosing()), e.GetCommon().name, e.GetCommon().Type)
-}
-
-// xmlName returns the xml name of the element or attribute
-func xmlName(f reflect.StructField) (name string, attr bool) {
- tags := strings.Split(f.Tag.Get("xml"), ",")
- for _, s := range tags {
- attr = attr || s == "attr"
- }
- return tags[0], attr
-}
-
-func findField(v reflect.Value, key string) (reflect.Value, error) {
- v = reflect.Indirect(v)
- for i := iter(v); !i.done(); i.next() {
- if n, _ := xmlName(i.field()); n == key {
- return i.value(), nil
- }
- }
- return reflect.Value{}, fmt.Errorf("cldr: no field %q in element %#v", key, v.Interface())
-}
-
-var xpathPart = regexp.MustCompile(`(\pL+)(?:\[@(\pL+)='([\w-]+)'\])?`)
-
-func walkXPath(e Elem, path string) (res Elem, err error) {
- for _, c := range strings.Split(path, "/") {
- if c == ".." {
- if e = e.enclosing(); e == nil {
- panic("path ..")
- return nil, fmt.Errorf(`cldr: ".." moves past root in path %q`, path)
- }
- continue
- } else if c == "" {
- continue
- }
- m := xpathPart.FindStringSubmatch(c)
- if len(m) == 0 || len(m[0]) != len(c) {
- return nil, fmt.Errorf("cldr: syntax error in path component %q", c)
- }
- v, err := findField(reflect.ValueOf(e), m[1])
- if err != nil {
- return nil, err
- }
- switch v.Kind() {
- case reflect.Slice:
- i := 0
- if m[2] != "" || v.Len() > 1 {
- if m[2] == "" {
- m[2] = "type"
- if m[3] = e.GetCommon().Default(); m[3] == "" {
- return nil, fmt.Errorf("cldr: type selector or default value needed for element %s", m[1])
- }
- }
- for ; i < v.Len(); i++ {
- vi := v.Index(i)
- key, err := findField(vi.Elem(), m[2])
- if err != nil {
- return nil, err
- }
- key = reflect.Indirect(key)
- if key.Kind() == reflect.String && key.String() == m[3] {
- break
- }
- }
- }
- if i == v.Len() || v.Index(i).IsNil() {
- return nil, fmt.Errorf("no %s found with %s==%s", m[1], m[2], m[3])
- }
- e = v.Index(i).Interface().(Elem)
- case reflect.Ptr:
- if v.IsNil() {
- return nil, fmt.Errorf("cldr: element %q not found within element %q", m[1], e.GetCommon().name)
- }
- var ok bool
- if e, ok = v.Interface().(Elem); !ok {
- return nil, fmt.Errorf("cldr: %q is not an XML element", m[1])
- } else if m[2] != "" || m[3] != "" {
- return nil, fmt.Errorf("cldr: no type selector allowed for element %s", m[1])
- }
- default:
- return nil, fmt.Errorf("cldr: %q is not an XML element", m[1])
- }
- }
- return e, nil
-}
-
-const absPrefix = "//ldml/"
-
-func (cldr *CLDR) resolveAlias(e Elem, src, path string) (res Elem, err error) {
- if src != "locale" {
- if !strings.HasPrefix(path, absPrefix) {
- return nil, fmt.Errorf("cldr: expected absolute path, found %q", path)
- }
- path = path[len(absPrefix):]
- if e, err = cldr.resolve(src); err != nil {
- return nil, err
- }
- }
- return walkXPath(e, path)
-}
-
-func (cldr *CLDR) resolveAndMergeAlias(e Elem) error {
- alias := e.GetCommon().Alias
- if alias == nil {
- return nil
- }
- a, err := cldr.resolveAlias(e, alias.Source, alias.Path)
- if err != nil {
- return fmt.Errorf("%v: error evaluating path %q: %v", getPath(e), alias.Path, err)
- }
- // Ensure alias node was already evaluated. TODO: avoid double evaluation.
- err = cldr.resolveAndMergeAlias(a)
- v := reflect.ValueOf(e).Elem()
- for i := iter(reflect.ValueOf(a).Elem()); !i.done(); i.next() {
- if vv := i.value(); vv.Kind() != reflect.Ptr || !vv.IsNil() {
- if _, attr := xmlName(i.field()); !attr {
- v.FieldByIndex(i.index).Set(vv)
- }
- }
- }
- return err
-}
-
-func (cldr *CLDR) aliasResolver() visitor {
- return func(v reflect.Value) (err error) {
- if e, ok := v.Addr().Interface().(Elem); ok {
- err = cldr.resolveAndMergeAlias(e)
- if err == nil && blocking[e.GetCommon().name] {
- return stopDescent
- }
- }
- return err
- }
-}
-
-// elements within blocking elements do not inherit.
-// Taken from CLDR's supplementalMetaData.xml.
-var blocking = map[string]bool{
- "identity": true,
- "supplementalData": true,
- "cldrTest": true,
- "collation": true,
- "transform": true,
-}
-
-// Distinguishing attributes affect inheritance; two elements with different
-// distinguishing attributes are treated as different for purposes of inheritance,
-// except when such attributes occur in the indicated elements.
-// Taken from CLDR's supplementalMetaData.xml.
-var distinguishing = map[string][]string{
- "key": nil,
- "request_id": nil,
- "id": nil,
- "registry": nil,
- "alt": nil,
- "iso4217": nil,
- "iso3166": nil,
- "mzone": nil,
- "from": nil,
- "to": nil,
- "type": []string{
- "abbreviationFallback",
- "default",
- "mapping",
- "measurementSystem",
- "preferenceOrdering",
- },
- "numberSystem": nil,
-}
-
-func in(set []string, s string) bool {
- for _, v := range set {
- if v == s {
- return true
- }
- }
- return false
-}
-
-// attrKey computes a key based on the distinguishable attributes of
-// an element and it's values.
-func attrKey(v reflect.Value, exclude ...string) string {
- parts := []string{}
- ename := v.Interface().(Elem).GetCommon().name
- v = v.Elem()
- for i := iter(v); !i.done(); i.next() {
- if name, attr := xmlName(i.field()); attr {
- if except, ok := distinguishing[name]; ok && !in(exclude, name) && !in(except, ename) {
- v := i.value()
- if v.Kind() == reflect.Ptr {
- v = v.Elem()
- }
- if v.IsValid() {
- parts = append(parts, fmt.Sprintf("%s=%s", name, v.String()))
- }
- }
- }
- }
- sort.Strings(parts)
- return strings.Join(parts, ";")
-}
-
-// Key returns a key for e derived from all distinguishing attributes
-// except those specified by exclude.
-func Key(e Elem, exclude ...string) string {
- return attrKey(reflect.ValueOf(e), exclude...)
-}
-
-// linkEnclosing sets the enclosing element as well as the name
-// for all sub-elements of child, recursively.
-func linkEnclosing(parent, child Elem) {
- child.setEnclosing(parent)
- v := reflect.ValueOf(child).Elem()
- for i := iter(v); !i.done(); i.next() {
- vf := i.value()
- if vf.Kind() == reflect.Slice {
- for j := 0; j < vf.Len(); j++ {
- linkEnclosing(child, vf.Index(j).Interface().(Elem))
- }
- } else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {
- linkEnclosing(child, vf.Interface().(Elem))
- }
- }
-}
-
-func setNames(e Elem, name string) {
- e.setName(name)
- v := reflect.ValueOf(e).Elem()
- for i := iter(v); !i.done(); i.next() {
- vf := i.value()
- name, _ = xmlName(i.field())
- if vf.Kind() == reflect.Slice {
- for j := 0; j < vf.Len(); j++ {
- setNames(vf.Index(j).Interface().(Elem), name)
- }
- } else if vf.Kind() == reflect.Ptr && !vf.IsNil() && vf.Elem().Kind() == reflect.Struct {
- setNames(vf.Interface().(Elem), name)
- }
- }
-}
-
-// deepCopy copies elements of v recursively. All elements of v that may
-// be modified by inheritance are explicitly copied.
-func deepCopy(v reflect.Value) reflect.Value {
- switch v.Kind() {
- case reflect.Ptr:
- if v.IsNil() || v.Elem().Kind() != reflect.Struct {
- return v
- }
- nv := reflect.New(v.Elem().Type())
- nv.Elem().Set(v.Elem())
- deepCopyRec(nv.Elem(), v.Elem())
- return nv
- case reflect.Slice:
- nv := reflect.MakeSlice(v.Type(), v.Len(), v.Len())
- for i := 0; i < v.Len(); i++ {
- deepCopyRec(nv.Index(i), v.Index(i))
- }
- return nv
- }
- panic("deepCopy: must be called with pointer or slice")
-}
-
-// deepCopyRec is only called by deepCopy.
-func deepCopyRec(nv, v reflect.Value) {
- if v.Kind() == reflect.Struct {
- t := v.Type()
- for i := 0; i < v.NumField(); i++ {
- if name, attr := xmlName(t.Field(i)); name != "" && !attr {
- deepCopyRec(nv.Field(i), v.Field(i))
- }
- }
- } else {
- nv.Set(deepCopy(v))
- }
-}
-
-// newNode is used to insert a missing node during inheritance.
-func (cldr *CLDR) newNode(v, enc reflect.Value) reflect.Value {
- n := reflect.New(v.Type())
- for i := iter(v); !i.done(); i.next() {
- if name, attr := xmlName(i.field()); name == "" || attr {
- n.Elem().FieldByIndex(i.index).Set(i.value())
- }
- }
- n.Interface().(Elem).GetCommon().setEnclosing(enc.Addr().Interface().(Elem))
- return n
-}
-
-// v, parent must be pointers to struct
-func (cldr *CLDR) inheritFields(v, parent reflect.Value) (res reflect.Value, err error) {
- t := v.Type()
- nv := reflect.New(t)
- nv.Elem().Set(v)
- for i := iter(v); !i.done(); i.next() {
- vf := i.value()
- f := i.field()
- name, attr := xmlName(f)
- if name == "" || attr {
- continue
- }
- pf := parent.FieldByIndex(i.index)
- if blocking[name] {
- if vf.IsNil() {
- vf = pf
- }
- nv.Elem().FieldByIndex(i.index).Set(deepCopy(vf))
- continue
- }
- switch f.Type.Kind() {
- case reflect.Ptr:
- if f.Type.Elem().Kind() == reflect.Struct {
- if !vf.IsNil() {
- if vf, err = cldr.inheritStructPtr(vf, pf); err != nil {
- return reflect.Value{}, err
- }
- vf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))
- nv.Elem().FieldByIndex(i.index).Set(vf)
- } else if !pf.IsNil() {
- n := cldr.newNode(pf.Elem(), v)
- if vf, err = cldr.inheritStructPtr(n, pf); err != nil {
- return reflect.Value{}, err
- }
- vf.Interface().(Elem).setEnclosing(nv.Interface().(Elem))
- nv.Elem().FieldByIndex(i.index).Set(vf)
- }
- }
- case reflect.Slice:
- vf, err := cldr.inheritSlice(nv.Elem(), vf, pf)
- if err != nil {
- return reflect.Zero(t), err
- }
- nv.Elem().FieldByIndex(i.index).Set(vf)
- }
- }
- return nv, nil
-}
-
-func root(e Elem) *LDML {
- for ; e.enclosing() != nil; e = e.enclosing() {
- }
- return e.(*LDML)
-}
-
-// inheritStructPtr first merges possible aliases in with v and then inherits
-// any underspecified elements from parent.
-func (cldr *CLDR) inheritStructPtr(v, parent reflect.Value) (r reflect.Value, err error) {
- if !v.IsNil() {
- e := v.Interface().(Elem).GetCommon()
- alias := e.Alias
- if alias == nil && !parent.IsNil() {
- alias = parent.Interface().(Elem).GetCommon().Alias
- }
- if alias != nil {
- a, err := cldr.resolveAlias(v.Interface().(Elem), alias.Source, alias.Path)
- if a != nil {
- if v, err = cldr.inheritFields(v.Elem(), reflect.ValueOf(a).Elem()); err != nil {
- return reflect.Value{}, err
- }
- }
- }
- if !parent.IsNil() {
- return cldr.inheritFields(v.Elem(), parent.Elem())
- }
- } else if parent.IsNil() {
- panic("should not reach here")
- }
- return v, nil
-}
-
-// Must be slice of struct pointers.
-func (cldr *CLDR) inheritSlice(enc, v, parent reflect.Value) (res reflect.Value, err error) {
- t := v.Type()
- index := make(map[string]reflect.Value)
- if !v.IsNil() {
- for i := 0; i < v.Len(); i++ {
- vi := v.Index(i)
- key := attrKey(vi)
- index[key] = vi
- }
- }
- if !parent.IsNil() {
- for i := 0; i < parent.Len(); i++ {
- vi := parent.Index(i)
- key := attrKey(vi)
- if w, ok := index[key]; ok {
- index[key], err = cldr.inheritStructPtr(w, vi)
- } else {
- n := cldr.newNode(vi.Elem(), enc)
- index[key], err = cldr.inheritStructPtr(n, vi)
- }
- index[key].Interface().(Elem).setEnclosing(enc.Addr().Interface().(Elem))
- if err != nil {
- return v, err
- }
- }
- }
- keys := make([]string, 0, len(index))
- for k, _ := range index {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- sl := reflect.MakeSlice(t, len(index), len(index))
- for i, k := range keys {
- sl.Index(i).Set(index[k])
- }
- return sl, nil
-}
-
-func parentLocale(loc string) string {
- parts := strings.Split(loc, "_")
- if len(parts) == 1 {
- return "root"
- }
- parts = parts[:len(parts)-1]
- key := strings.Join(parts, "_")
- return key
-}
-
-func (cldr *CLDR) resolve(loc string) (res *LDML, err error) {
- if r := cldr.resolved[loc]; r != nil {
- return r, nil
- }
- x := cldr.RawLDML(loc)
- if x == nil {
- return nil, fmt.Errorf("cldr: unknown locale %q", loc)
- }
- var v reflect.Value
- if loc == "root" {
- x = deepCopy(reflect.ValueOf(x)).Interface().(*LDML)
- linkEnclosing(nil, x)
- err = cldr.aliasResolver().visit(x)
- } else {
- key := parentLocale(loc)
- var parent *LDML
- for ; cldr.locale[key] == nil; key = parentLocale(key) {
- }
- if parent, err = cldr.resolve(key); err != nil {
- return nil, err
- }
- v, err = cldr.inheritFields(reflect.ValueOf(x).Elem(), reflect.ValueOf(parent).Elem())
- x = v.Interface().(*LDML)
- linkEnclosing(nil, x)
- }
- if err != nil {
- return nil, err
- }
- cldr.resolved[loc] = x
- return x, err
-}
-
-// finalize finalizes the initialization of the raw LDML structs. It also
-// removed unwanted fields, as specified by filter, so that they will not
-// be unnecessarily evaluated.
-func (cldr *CLDR) finalize(filter []string) {
- for _, x := range cldr.locale {
- if filter != nil {
- v := reflect.ValueOf(x).Elem()
- t := v.Type()
- for i := 0; i < v.NumField(); i++ {
- f := t.Field(i)
- name, _ := xmlName(f)
- if name != "" && name != "identity" && !in(filter, name) {
- v.Field(i).Set(reflect.Zero(f.Type))
- }
- }
- }
- linkEnclosing(nil, x) // for resolving aliases and paths
- setNames(x, "ldml")
- }
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/slice.go b/vendor/golang.org/x/text/unicode/cldr/slice.go
deleted file mode 100644
index 388c983..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/slice.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// 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 (
- "fmt"
- "reflect"
- "sort"
-)
-
-// Slice provides utilities for modifying slices of elements.
-// It can be wrapped around any slice of which the element type implements
-// interface Elem.
-type Slice struct {
- ptr reflect.Value
- typ reflect.Type
-}
-
-// Value returns the reflect.Value of the underlying slice.
-func (s *Slice) Value() reflect.Value {
- return s.ptr.Elem()
-}
-
-// MakeSlice wraps a pointer to a slice of Elems.
-// It replaces the array pointed to by the slice so that subsequent modifications
-// do not alter the data in a CLDR type.
-// It panics if an incorrect type is passed.
-func MakeSlice(slicePtr interface{}) Slice {
- ptr := reflect.ValueOf(slicePtr)
- if ptr.Kind() != reflect.Ptr {
- panic(fmt.Sprintf("MakeSlice: argument must be pointer to slice, found %v", ptr.Type()))
- }
- sl := ptr.Elem()
- if sl.Kind() != reflect.Slice {
- panic(fmt.Sprintf("MakeSlice: argument must point to a slice, found %v", sl.Type()))
- }
- intf := reflect.TypeOf((*Elem)(nil)).Elem()
- if !sl.Type().Elem().Implements(intf) {
- panic(fmt.Sprintf("MakeSlice: element type of slice (%v) does not implement Elem", sl.Type().Elem()))
- }
- nsl := reflect.MakeSlice(sl.Type(), sl.Len(), sl.Len())
- reflect.Copy(nsl, sl)
- sl.Set(nsl)
- return Slice{
- ptr: ptr,
- typ: sl.Type().Elem().Elem(),
- }
-}
-
-func (s Slice) indexForAttr(a string) []int {
- for i := iter(reflect.Zero(s.typ)); !i.done(); i.next() {
- if n, _ := xmlName(i.field()); n == a {
- return i.index
- }
- }
- panic(fmt.Sprintf("MakeSlice: no attribute %q for type %v", a, s.typ))
-}
-
-// Filter filters s to only include elements for which fn returns true.
-func (s Slice) Filter(fn func(e Elem) bool) {
- k := 0
- sl := s.Value()
- for i := 0; i < sl.Len(); i++ {
- vi := sl.Index(i)
- if fn(vi.Interface().(Elem)) {
- sl.Index(k).Set(vi)
- k++
- }
- }
- sl.Set(sl.Slice(0, k))
-}
-
-// Group finds elements in s for which fn returns the same value and groups
-// them in a new Slice.
-func (s Slice) Group(fn func(e Elem) string) []Slice {
- m := make(map[string][]reflect.Value)
- sl := s.Value()
- for i := 0; i < sl.Len(); i++ {
- vi := sl.Index(i)
- key := fn(vi.Interface().(Elem))
- m[key] = append(m[key], vi)
- }
- keys := []string{}
- for k, _ := range m {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- res := []Slice{}
- for _, k := range keys {
- nsl := reflect.New(sl.Type())
- nsl.Elem().Set(reflect.Append(nsl.Elem(), m[k]...))
- res = append(res, MakeSlice(nsl.Interface()))
- }
- return res
-}
-
-// SelectAnyOf filters s to contain only elements for which attr matches
-// any of the values.
-func (s Slice) SelectAnyOf(attr string, values ...string) {
- index := s.indexForAttr(attr)
- s.Filter(func(e Elem) bool {
- vf := reflect.ValueOf(e).Elem().FieldByIndex(index)
- return in(values, vf.String())
- })
-}
-
-// SelectOnePerGroup filters s to include at most one element e per group of
-// elements matching Key(attr), where e has an attribute a that matches any
-// the values in v.
-// If more than one element in a group matches a value in v preference
-// is given to the element that matches the first value in v.
-func (s Slice) SelectOnePerGroup(a string, v []string) {
- index := s.indexForAttr(a)
- grouped := s.Group(func(e Elem) string { return Key(e, a) })
- sl := s.Value()
- sl.Set(sl.Slice(0, 0))
- for _, g := range grouped {
- e := reflect.Value{}
- found := len(v)
- gsl := g.Value()
- for i := 0; i < gsl.Len(); i++ {
- vi := gsl.Index(i).Elem().FieldByIndex(index)
- j := 0
- for ; j < len(v) && v[j] != vi.String(); j++ {
- }
- if j < found {
- found = j
- e = gsl.Index(i)
- }
- }
- if found < len(v) {
- sl.Set(reflect.Append(sl, e))
- }
- }
-}
-
-// SelectDraft drops all elements from the list with a draft level smaller than d
-// and selects the highest draft level of the remaining.
-// This method assumes that the input CLDR is canonicalized.
-func (s Slice) SelectDraft(d Draft) {
- s.SelectOnePerGroup("draft", drafts[len(drafts)-2-int(d):])
-}
diff --git a/vendor/golang.org/x/text/unicode/cldr/xml.go b/vendor/golang.org/x/text/unicode/cldr/xml.go
deleted file mode 100644
index f847663..0000000
--- a/vendor/golang.org/x/text/unicode/cldr/xml.go
+++ /dev/null
@@ -1,1494 +0,0 @@
-// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
-
-package cldr
-
-// LDMLBCP47 holds information on allowable values for various variables in LDML.
-type LDMLBCP47 struct {
- Common
- Version *struct {
- Common
- Number string `xml:"number,attr"`
- } `xml:"version"`
- Generation *struct {
- Common
- Date string `xml:"date,attr"`
- } `xml:"generation"`
- Keyword []*struct {
- Common
- Key []*struct {
- Common
- Extension string `xml:"extension,attr"`
- Name string `xml:"name,attr"`
- Description string `xml:"description,attr"`
- Deprecated string `xml:"deprecated,attr"`
- Preferred string `xml:"preferred,attr"`
- Alias string `xml:"alias,attr"`
- ValueType string `xml:"valueType,attr"`
- Since string `xml:"since,attr"`
- Type []*struct {
- Common
- Name string `xml:"name,attr"`
- Description string `xml:"description,attr"`
- Deprecated string `xml:"deprecated,attr"`
- Preferred string `xml:"preferred,attr"`
- Alias string `xml:"alias,attr"`
- Since string `xml:"since,attr"`
- } `xml:"type"`
- } `xml:"key"`
- } `xml:"keyword"`
- Attribute []*struct {
- Common
- Name string `xml:"name,attr"`
- Description string `xml:"description,attr"`
- Deprecated string `xml:"deprecated,attr"`
- Preferred string `xml:"preferred,attr"`
- Since string `xml:"since,attr"`
- } `xml:"attribute"`
-}
-
-// SupplementalData holds information relevant for internationalization
-// and proper use of CLDR, but that is not contained in the locale hierarchy.
-type SupplementalData struct {
- Common
- Version *struct {
- Common
- Number string `xml:"number,attr"`
- } `xml:"version"`
- Generation *struct {
- Common
- Date string `xml:"date,attr"`
- } `xml:"generation"`
- CurrencyData *struct {
- Common
- Fractions []*struct {
- Common
- Info []*struct {
- Common
- Iso4217 string `xml:"iso4217,attr"`
- Digits string `xml:"digits,attr"`
- Rounding string `xml:"rounding,attr"`
- CashDigits string `xml:"cashDigits,attr"`
- CashRounding string `xml:"cashRounding,attr"`
- } `xml:"info"`
- } `xml:"fractions"`
- Region []*struct {
- Common
- Iso3166 string `xml:"iso3166,attr"`
- Currency []*struct {
- Common
- Before string `xml:"before,attr"`
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- Iso4217 string `xml:"iso4217,attr"`
- Digits string `xml:"digits,attr"`
- Rounding string `xml:"rounding,attr"`
- CashRounding string `xml:"cashRounding,attr"`
- Tender string `xml:"tender,attr"`
- Alternate []*struct {
- Common
- Iso4217 string `xml:"iso4217,attr"`
- } `xml:"alternate"`
- } `xml:"currency"`
- } `xml:"region"`
- } `xml:"currencyData"`
- TerritoryContainment *struct {
- Common
- Group []*struct {
- Common
- Contains string `xml:"contains,attr"`
- Grouping string `xml:"grouping,attr"`
- Status string `xml:"status,attr"`
- } `xml:"group"`
- } `xml:"territoryContainment"`
- SubdivisionContainment *struct {
- Common
- Subgroup []*struct {
- Common
- Subtype string `xml:"subtype,attr"`
- Contains string `xml:"contains,attr"`
- } `xml:"subgroup"`
- } `xml:"subdivisionContainment"`
- LanguageData *struct {
- Common
- Language []*struct {
- Common
- Scripts string `xml:"scripts,attr"`
- Territories string `xml:"territories,attr"`
- Variants string `xml:"variants,attr"`
- } `xml:"language"`
- } `xml:"languageData"`
- TerritoryInfo *struct {
- Common
- Territory []*struct {
- Common
- Gdp string `xml:"gdp,attr"`
- LiteracyPercent string `xml:"literacyPercent,attr"`
- Population string `xml:"population,attr"`
- LanguagePopulation []*struct {
- Common
- LiteracyPercent string `xml:"literacyPercent,attr"`
- WritingPercent string `xml:"writingPercent,attr"`
- PopulationPercent string `xml:"populationPercent,attr"`
- OfficialStatus string `xml:"officialStatus,attr"`
- } `xml:"languagePopulation"`
- } `xml:"territory"`
- } `xml:"territoryInfo"`
- PostalCodeData *struct {
- Common
- PostCodeRegex []*struct {
- Common
- TerritoryId string `xml:"territoryId,attr"`
- } `xml:"postCodeRegex"`
- } `xml:"postalCodeData"`
- CalendarData *struct {
- Common
- Calendar []*struct {
- Common
- Territories string `xml:"territories,attr"`
- CalendarSystem *Common `xml:"calendarSystem"`
- Eras *struct {
- Common
- Era []*struct {
- Common
- Start string `xml:"start,attr"`
- End string `xml:"end,attr"`
- } `xml:"era"`
- } `xml:"eras"`
- } `xml:"calendar"`
- } `xml:"calendarData"`
- CalendarPreferenceData *struct {
- Common
- CalendarPreference []*struct {
- Common
- Territories string `xml:"territories,attr"`
- Ordering string `xml:"ordering,attr"`
- } `xml:"calendarPreference"`
- } `xml:"calendarPreferenceData"`
- WeekData *struct {
- Common
- MinDays []*struct {
- Common
- Count string `xml:"count,attr"`
- Territories string `xml:"territories,attr"`
- } `xml:"minDays"`
- FirstDay []*struct {
- Common
- Day string `xml:"day,attr"`
- Territories string `xml:"territories,attr"`
- } `xml:"firstDay"`
- WeekendStart []*struct {
- Common
- Day string `xml:"day,attr"`
- Territories string `xml:"territories,attr"`
- } `xml:"weekendStart"`
- WeekendEnd []*struct {
- Common
- Day string `xml:"day,attr"`
- Territories string `xml:"territories,attr"`
- } `xml:"weekendEnd"`
- WeekOfPreference []*struct {
- Common
- Locales string `xml:"locales,attr"`
- Ordering string `xml:"ordering,attr"`
- } `xml:"weekOfPreference"`
- } `xml:"weekData"`
- TimeData *struct {
- Common
- Hours []*struct {
- Common
- Allowed string `xml:"allowed,attr"`
- Preferred string `xml:"preferred,attr"`
- Regions string `xml:"regions,attr"`
- } `xml:"hours"`
- } `xml:"timeData"`
- MeasurementData *struct {
- Common
- MeasurementSystem []*struct {
- Common
- Category string `xml:"category,attr"`
- Territories string `xml:"territories,attr"`
- } `xml:"measurementSystem"`
- PaperSize []*struct {
- Common
- Territories string `xml:"territories,attr"`
- } `xml:"paperSize"`
- } `xml:"measurementData"`
- UnitPreferenceData *struct {
- Common
- UnitPreferences []*struct {
- Common
- Category string `xml:"category,attr"`
- Usage string `xml:"usage,attr"`
- Scope string `xml:"scope,attr"`
- UnitPreference []*struct {
- Common
- Regions string `xml:"regions,attr"`
- } `xml:"unitPreference"`
- } `xml:"unitPreferences"`
- } `xml:"unitPreferenceData"`
- TimezoneData *struct {
- Common
- MapTimezones []*struct {
- Common
- OtherVersion string `xml:"otherVersion,attr"`
- TypeVersion string `xml:"typeVersion,attr"`
- MapZone []*struct {
- Common
- Other string `xml:"other,attr"`
- Territory string `xml:"territory,attr"`
- } `xml:"mapZone"`
- } `xml:"mapTimezones"`
- ZoneFormatting []*struct {
- Common
- Multizone string `xml:"multizone,attr"`
- TzidVersion string `xml:"tzidVersion,attr"`
- ZoneItem []*struct {
- Common
- Territory string `xml:"territory,attr"`
- Aliases string `xml:"aliases,attr"`
- } `xml:"zoneItem"`
- } `xml:"zoneFormatting"`
- } `xml:"timezoneData"`
- Characters *struct {
- Common
- CharacterFallback []*struct {
- Common
- Character []*struct {
- Common
- Value string `xml:"value,attr"`
- Substitute []*Common `xml:"substitute"`
- } `xml:"character"`
- } `xml:"character-fallback"`
- } `xml:"characters"`
- Transforms *struct {
- Common
- Transform []*struct {
- Common
- Source string `xml:"source,attr"`
- Target string `xml:"target,attr"`
- Variant string `xml:"variant,attr"`
- Direction string `xml:"direction,attr"`
- Alias string `xml:"alias,attr"`
- BackwardAlias string `xml:"backwardAlias,attr"`
- Visibility string `xml:"visibility,attr"`
- Comment []*Common `xml:"comment"`
- TRule []*Common `xml:"tRule"`
- } `xml:"transform"`
- } `xml:"transforms"`
- Metadata *struct {
- Common
- AttributeOrder *Common `xml:"attributeOrder"`
- ElementOrder *Common `xml:"elementOrder"`
- SerialElements *Common `xml:"serialElements"`
- Suppress *struct {
- Common
- Attributes []*struct {
- Common
- Element string `xml:"element,attr"`
- Attribute string `xml:"attribute,attr"`
- AttributeValue string `xml:"attributeValue,attr"`
- } `xml:"attributes"`
- } `xml:"suppress"`
- Validity *struct {
- Common
- Variable []*struct {
- Common
- Id string `xml:"id,attr"`
- } `xml:"variable"`
- AttributeValues []*struct {
- Common
- Dtds string `xml:"dtds,attr"`
- Elements string `xml:"elements,attr"`
- Attributes string `xml:"attributes,attr"`
- Order string `xml:"order,attr"`
- } `xml:"attributeValues"`
- } `xml:"validity"`
- Alias *struct {
- Common
- LanguageAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"languageAlias"`
- ScriptAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"scriptAlias"`
- TerritoryAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"territoryAlias"`
- SubdivisionAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"subdivisionAlias"`
- VariantAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"variantAlias"`
- ZoneAlias []*struct {
- Common
- Replacement string `xml:"replacement,attr"`
- Reason string `xml:"reason,attr"`
- } `xml:"zoneAlias"`
- } `xml:"alias"`
- Deprecated *struct {
- Common
- DeprecatedItems []*struct {
- Common
- Elements string `xml:"elements,attr"`
- Attributes string `xml:"attributes,attr"`
- Values string `xml:"values,attr"`
- } `xml:"deprecatedItems"`
- } `xml:"deprecated"`
- Distinguishing *struct {
- Common
- DistinguishingItems []*struct {
- Common
- Exclude string `xml:"exclude,attr"`
- Elements string `xml:"elements,attr"`
- Attributes string `xml:"attributes,attr"`
- } `xml:"distinguishingItems"`
- } `xml:"distinguishing"`
- Blocking *struct {
- Common
- BlockingItems []*struct {
- Common
- Elements string `xml:"elements,attr"`
- } `xml:"blockingItems"`
- } `xml:"blocking"`
- CoverageAdditions *struct {
- Common
- LanguageCoverage []*struct {
- Common
- Values string `xml:"values,attr"`
- } `xml:"languageCoverage"`
- ScriptCoverage []*struct {
- Common
- Values string `xml:"values,attr"`
- } `xml:"scriptCoverage"`
- TerritoryCoverage []*struct {
- Common
- Values string `xml:"values,attr"`
- } `xml:"territoryCoverage"`
- CurrencyCoverage []*struct {
- Common
- Values string `xml:"values,attr"`
- } `xml:"currencyCoverage"`
- TimezoneCoverage []*struct {
- Common
- Values string `xml:"values,attr"`
- } `xml:"timezoneCoverage"`
- } `xml:"coverageAdditions"`
- SkipDefaultLocale *struct {
- Common
- Services string `xml:"services,attr"`
- } `xml:"skipDefaultLocale"`
- DefaultContent *struct {
- Common
- Locales string `xml:"locales,attr"`
- } `xml:"defaultContent"`
- } `xml:"metadata"`
- CodeMappings *struct {
- Common
- LanguageCodes []*struct {
- Common
- Alpha3 string `xml:"alpha3,attr"`
- } `xml:"languageCodes"`
- TerritoryCodes []*struct {
- Common
- Numeric string `xml:"numeric,attr"`
- Alpha3 string `xml:"alpha3,attr"`
- Fips10 string `xml:"fips10,attr"`
- Internet string `xml:"internet,attr"`
- } `xml:"territoryCodes"`
- CurrencyCodes []*struct {
- Common
- Numeric string `xml:"numeric,attr"`
- } `xml:"currencyCodes"`
- } `xml:"codeMappings"`
- ParentLocales *struct {
- Common
- ParentLocale []*struct {
- Common
- Parent string `xml:"parent,attr"`
- Locales string `xml:"locales,attr"`
- } `xml:"parentLocale"`
- } `xml:"parentLocales"`
- LikelySubtags *struct {
- Common
- LikelySubtag []*struct {
- Common
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- } `xml:"likelySubtag"`
- } `xml:"likelySubtags"`
- MetazoneInfo *struct {
- Common
- Timezone []*struct {
- Common
- UsesMetazone []*struct {
- Common
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- Mzone string `xml:"mzone,attr"`
- } `xml:"usesMetazone"`
- } `xml:"timezone"`
- } `xml:"metazoneInfo"`
- Plurals []*struct {
- Common
- PluralRules []*struct {
- Common
- Locales string `xml:"locales,attr"`
- PluralRule []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"pluralRule"`
- } `xml:"pluralRules"`
- PluralRanges []*struct {
- Common
- Locales string `xml:"locales,attr"`
- PluralRange []*struct {
- Common
- Start string `xml:"start,attr"`
- End string `xml:"end,attr"`
- Result string `xml:"result,attr"`
- } `xml:"pluralRange"`
- } `xml:"pluralRanges"`
- } `xml:"plurals"`
- TelephoneCodeData *struct {
- Common
- CodesByTerritory []*struct {
- Common
- Territory string `xml:"territory,attr"`
- TelephoneCountryCode []*struct {
- Common
- Code string `xml:"code,attr"`
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- } `xml:"telephoneCountryCode"`
- } `xml:"codesByTerritory"`
- } `xml:"telephoneCodeData"`
- NumberingSystems *struct {
- Common
- NumberingSystem []*struct {
- Common
- Id string `xml:"id,attr"`
- Radix string `xml:"radix,attr"`
- Digits string `xml:"digits,attr"`
- Rules string `xml:"rules,attr"`
- } `xml:"numberingSystem"`
- } `xml:"numberingSystems"`
- Bcp47KeywordMappings *struct {
- Common
- MapKeys *struct {
- Common
- KeyMap []*struct {
- Common
- Bcp47 string `xml:"bcp47,attr"`
- } `xml:"keyMap"`
- } `xml:"mapKeys"`
- MapTypes []*struct {
- Common
- TypeMap []*struct {
- Common
- Bcp47 string `xml:"bcp47,attr"`
- } `xml:"typeMap"`
- } `xml:"mapTypes"`
- } `xml:"bcp47KeywordMappings"`
- Gender *struct {
- Common
- PersonList []*struct {
- Common
- Locales string `xml:"locales,attr"`
- } `xml:"personList"`
- } `xml:"gender"`
- References *struct {
- Common
- Reference []*struct {
- Common
- Uri string `xml:"uri,attr"`
- } `xml:"reference"`
- } `xml:"references"`
- LanguageMatching *struct {
- Common
- LanguageMatches []*struct {
- Common
- ParadigmLocales []*struct {
- Common
- Locales string `xml:"locales,attr"`
- } `xml:"paradigmLocales"`
- MatchVariable []*struct {
- Common
- Id string `xml:"id,attr"`
- Value string `xml:"value,attr"`
- } `xml:"matchVariable"`
- LanguageMatch []*struct {
- Common
- Desired string `xml:"desired,attr"`
- Supported string `xml:"supported,attr"`
- Percent string `xml:"percent,attr"`
- Distance string `xml:"distance,attr"`
- Oneway string `xml:"oneway,attr"`
- } `xml:"languageMatch"`
- } `xml:"languageMatches"`
- } `xml:"languageMatching"`
- DayPeriodRuleSet []*struct {
- Common
- DayPeriodRules []*struct {
- Common
- Locales string `xml:"locales,attr"`
- DayPeriodRule []*struct {
- Common
- At string `xml:"at,attr"`
- After string `xml:"after,attr"`
- Before string `xml:"before,attr"`
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- } `xml:"dayPeriodRule"`
- } `xml:"dayPeriodRules"`
- } `xml:"dayPeriodRuleSet"`
- MetaZones *struct {
- Common
- MetazoneInfo *struct {
- Common
- Timezone []*struct {
- Common
- UsesMetazone []*struct {
- Common
- From string `xml:"from,attr"`
- To string `xml:"to,attr"`
- Mzone string `xml:"mzone,attr"`
- } `xml:"usesMetazone"`
- } `xml:"timezone"`
- } `xml:"metazoneInfo"`
- MapTimezones *struct {
- Common
- OtherVersion string `xml:"otherVersion,attr"`
- TypeVersion string `xml:"typeVersion,attr"`
- MapZone []*struct {
- Common
- Other string `xml:"other,attr"`
- Territory string `xml:"territory,attr"`
- } `xml:"mapZone"`
- } `xml:"mapTimezones"`
- } `xml:"metaZones"`
- PrimaryZones *struct {
- Common
- PrimaryZone []*struct {
- Common
- Iso3166 string `xml:"iso3166,attr"`
- } `xml:"primaryZone"`
- } `xml:"primaryZones"`
- WindowsZones *struct {
- Common
- MapTimezones *struct {
- Common
- OtherVersion string `xml:"otherVersion,attr"`
- TypeVersion string `xml:"typeVersion,attr"`
- MapZone []*struct {
- Common
- Other string `xml:"other,attr"`
- Territory string `xml:"territory,attr"`
- } `xml:"mapZone"`
- } `xml:"mapTimezones"`
- } `xml:"windowsZones"`
- CoverageLevels *struct {
- Common
- ApprovalRequirements *struct {
- Common
- ApprovalRequirement []*struct {
- Common
- Votes string `xml:"votes,attr"`
- Locales string `xml:"locales,attr"`
- Paths string `xml:"paths,attr"`
- } `xml:"approvalRequirement"`
- } `xml:"approvalRequirements"`
- CoverageVariable []*struct {
- Common
- Key string `xml:"key,attr"`
- Value string `xml:"value,attr"`
- } `xml:"coverageVariable"`
- CoverageLevel []*struct {
- Common
- InLanguage string `xml:"inLanguage,attr"`
- InScript string `xml:"inScript,attr"`
- InTerritory string `xml:"inTerritory,attr"`
- Value string `xml:"value,attr"`
- Match string `xml:"match,attr"`
- } `xml:"coverageLevel"`
- } `xml:"coverageLevels"`
- IdValidity *struct {
- Common
- Id []*struct {
- Common
- IdStatus string `xml:"idStatus,attr"`
- } `xml:"id"`
- } `xml:"idValidity"`
- RgScope *struct {
- Common
- RgPath []*struct {
- Common
- Path string `xml:"path,attr"`
- } `xml:"rgPath"`
- } `xml:"rgScope"`
- LanguageGroups *struct {
- Common
- LanguageGroup []*struct {
- Common
- Parent string `xml:"parent,attr"`
- } `xml:"languageGroup"`
- } `xml:"languageGroups"`
-}
-
-// LDML is the top-level type for locale-specific data.
-type LDML struct {
- Common
- Version string `xml:"version,attr"`
- Identity *struct {
- Common
- Version *struct {
- Common
- Number string `xml:"number,attr"`
- } `xml:"version"`
- Generation *struct {
- Common
- Date string `xml:"date,attr"`
- } `xml:"generation"`
- Language *Common `xml:"language"`
- Script *Common `xml:"script"`
- Territory *Common `xml:"territory"`
- Variant *Common `xml:"variant"`
- } `xml:"identity"`
- LocaleDisplayNames *LocaleDisplayNames `xml:"localeDisplayNames"`
- Layout *struct {
- Common
- Orientation []*struct {
- Common
- Characters string `xml:"characters,attr"`
- Lines string `xml:"lines,attr"`
- CharacterOrder []*Common `xml:"characterOrder"`
- LineOrder []*Common `xml:"lineOrder"`
- } `xml:"orientation"`
- InList []*struct {
- Common
- Casing string `xml:"casing,attr"`
- } `xml:"inList"`
- InText []*Common `xml:"inText"`
- } `xml:"layout"`
- ContextTransforms *struct {
- Common
- ContextTransformUsage []*struct {
- Common
- ContextTransform []*Common `xml:"contextTransform"`
- } `xml:"contextTransformUsage"`
- } `xml:"contextTransforms"`
- Characters *struct {
- Common
- ExemplarCharacters []*Common `xml:"exemplarCharacters"`
- Ellipsis []*Common `xml:"ellipsis"`
- MoreInformation []*Common `xml:"moreInformation"`
- Stopwords []*struct {
- Common
- StopwordList []*Common `xml:"stopwordList"`
- } `xml:"stopwords"`
- IndexLabels []*struct {
- Common
- IndexSeparator []*Common `xml:"indexSeparator"`
- CompressedIndexSeparator []*Common `xml:"compressedIndexSeparator"`
- IndexRangePattern []*Common `xml:"indexRangePattern"`
- IndexLabelBefore []*Common `xml:"indexLabelBefore"`
- IndexLabelAfter []*Common `xml:"indexLabelAfter"`
- IndexLabel []*struct {
- Common
- IndexSource string `xml:"indexSource,attr"`
- Priority string `xml:"priority,attr"`
- } `xml:"indexLabel"`
- } `xml:"indexLabels"`
- Mapping []*struct {
- Common
- Registry string `xml:"registry,attr"`
- } `xml:"mapping"`
- ParseLenients []*struct {
- Common
- Scope string `xml:"scope,attr"`
- Level string `xml:"level,attr"`
- ParseLenient []*struct {
- Common
- Sample string `xml:"sample,attr"`
- } `xml:"parseLenient"`
- } `xml:"parseLenients"`
- } `xml:"characters"`
- Delimiters *struct {
- Common
- QuotationStart []*Common `xml:"quotationStart"`
- QuotationEnd []*Common `xml:"quotationEnd"`
- AlternateQuotationStart []*Common `xml:"alternateQuotationStart"`
- AlternateQuotationEnd []*Common `xml:"alternateQuotationEnd"`
- } `xml:"delimiters"`
- Measurement *struct {
- Common
- MeasurementSystem []*Common `xml:"measurementSystem"`
- PaperSize []*struct {
- Common
- Height []*Common `xml:"height"`
- Width []*Common `xml:"width"`
- } `xml:"paperSize"`
- } `xml:"measurement"`
- Dates *struct {
- Common
- LocalizedPatternChars []*Common `xml:"localizedPatternChars"`
- DateRangePattern []*Common `xml:"dateRangePattern"`
- Calendars *struct {
- Common
- Calendar []*Calendar `xml:"calendar"`
- } `xml:"calendars"`
- Fields *struct {
- Common
- Field []*struct {
- Common
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- Relative []*Common `xml:"relative"`
- RelativeTime []*struct {
- Common
- RelativeTimePattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"relativeTimePattern"`
- } `xml:"relativeTime"`
- RelativePeriod []*Common `xml:"relativePeriod"`
- } `xml:"field"`
- } `xml:"fields"`
- TimeZoneNames *TimeZoneNames `xml:"timeZoneNames"`
- } `xml:"dates"`
- Numbers *Numbers `xml:"numbers"`
- Units *struct {
- Common
- Unit []*struct {
- Common
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- UnitPattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"unitPattern"`
- PerUnitPattern []*Common `xml:"perUnitPattern"`
- } `xml:"unit"`
- UnitLength []*struct {
- Common
- CompoundUnit []*struct {
- Common
- CompoundUnitPattern []*Common `xml:"compoundUnitPattern"`
- } `xml:"compoundUnit"`
- Unit []*struct {
- Common
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- UnitPattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"unitPattern"`
- PerUnitPattern []*Common `xml:"perUnitPattern"`
- } `xml:"unit"`
- CoordinateUnit []*struct {
- Common
- CoordinateUnitPattern []*Common `xml:"coordinateUnitPattern"`
- } `xml:"coordinateUnit"`
- } `xml:"unitLength"`
- DurationUnit []*struct {
- Common
- DurationUnitPattern []*Common `xml:"durationUnitPattern"`
- } `xml:"durationUnit"`
- } `xml:"units"`
- ListPatterns *struct {
- Common
- ListPattern []*struct {
- Common
- ListPatternPart []*Common `xml:"listPatternPart"`
- } `xml:"listPattern"`
- } `xml:"listPatterns"`
- Collations *struct {
- Common
- Version string `xml:"version,attr"`
- DefaultCollation *Common `xml:"defaultCollation"`
- Collation []*Collation `xml:"collation"`
- } `xml:"collations"`
- Posix *struct {
- Common
- Messages []*struct {
- Common
- Yesstr []*Common `xml:"yesstr"`
- Nostr []*Common `xml:"nostr"`
- Yesexpr []*Common `xml:"yesexpr"`
- Noexpr []*Common `xml:"noexpr"`
- } `xml:"messages"`
- } `xml:"posix"`
- CharacterLabels *struct {
- Common
- CharacterLabelPattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"characterLabelPattern"`
- CharacterLabel []*Common `xml:"characterLabel"`
- } `xml:"characterLabels"`
- Segmentations *struct {
- Common
- Segmentation []*struct {
- Common
- Variables *struct {
- Common
- Variable []*struct {
- Common
- Id string `xml:"id,attr"`
- } `xml:"variable"`
- } `xml:"variables"`
- SegmentRules *struct {
- Common
- Rule []*struct {
- Common
- Id string `xml:"id,attr"`
- } `xml:"rule"`
- } `xml:"segmentRules"`
- Exceptions *struct {
- Common
- Exception []*Common `xml:"exception"`
- } `xml:"exceptions"`
- Suppressions *struct {
- Common
- Suppression []*Common `xml:"suppression"`
- } `xml:"suppressions"`
- } `xml:"segmentation"`
- } `xml:"segmentations"`
- Rbnf *struct {
- Common
- RulesetGrouping []*struct {
- Common
- Ruleset []*struct {
- Common
- Access string `xml:"access,attr"`
- AllowsParsing string `xml:"allowsParsing,attr"`
- Rbnfrule []*struct {
- Common
- Value string `xml:"value,attr"`
- Radix string `xml:"radix,attr"`
- Decexp string `xml:"decexp,attr"`
- } `xml:"rbnfrule"`
- } `xml:"ruleset"`
- } `xml:"rulesetGrouping"`
- } `xml:"rbnf"`
- Annotations *struct {
- Common
- Annotation []*struct {
- Common
- Cp string `xml:"cp,attr"`
- Tts string `xml:"tts,attr"`
- } `xml:"annotation"`
- } `xml:"annotations"`
- Metadata *struct {
- Common
- CasingData *struct {
- Common
- CasingItem []*struct {
- Common
- Override string `xml:"override,attr"`
- ForceError string `xml:"forceError,attr"`
- } `xml:"casingItem"`
- } `xml:"casingData"`
- } `xml:"metadata"`
- References *struct {
- Common
- Reference []*struct {
- Common
- Uri string `xml:"uri,attr"`
- } `xml:"reference"`
- } `xml:"references"`
-}
-
-// Collation contains rules that specify a certain sort-order,
-// as a tailoring of the root order.
-// The parsed rules are obtained by passing a RuleProcessor to Collation's
-// Process method.
-type Collation struct {
- Common
- Visibility string `xml:"visibility,attr"`
- Base *Common `xml:"base"`
- Import []*struct {
- Common
- Source string `xml:"source,attr"`
- } `xml:"import"`
- Settings *struct {
- Common
- Strength string `xml:"strength,attr"`
- Alternate string `xml:"alternate,attr"`
- Backwards string `xml:"backwards,attr"`
- Normalization string `xml:"normalization,attr"`
- CaseLevel string `xml:"caseLevel,attr"`
- CaseFirst string `xml:"caseFirst,attr"`
- HiraganaQuaternary string `xml:"hiraganaQuaternary,attr"`
- MaxVariable string `xml:"maxVariable,attr"`
- Numeric string `xml:"numeric,attr"`
- Private string `xml:"private,attr"`
- VariableTop string `xml:"variableTop,attr"`
- Reorder string `xml:"reorder,attr"`
- } `xml:"settings"`
- SuppressContractions *Common `xml:"suppress_contractions"`
- Optimize *Common `xml:"optimize"`
- Cr []*Common `xml:"cr"`
- rulesElem
-}
-
-// Calendar specifies the fields used for formatting and parsing dates and times.
-// The month and quarter names are identified numerically, starting at 1.
-// The day (of the week) names are identified with short strings, since there is
-// no universally-accepted numeric designation.
-type Calendar struct {
- Common
- Months *struct {
- Common
- MonthContext []*struct {
- Common
- MonthWidth []*struct {
- Common
- Month []*struct {
- Common
- Yeartype string `xml:"yeartype,attr"`
- } `xml:"month"`
- } `xml:"monthWidth"`
- } `xml:"monthContext"`
- } `xml:"months"`
- MonthNames *struct {
- Common
- Month []*struct {
- Common
- Yeartype string `xml:"yeartype,attr"`
- } `xml:"month"`
- } `xml:"monthNames"`
- MonthAbbr *struct {
- Common
- Month []*struct {
- Common
- Yeartype string `xml:"yeartype,attr"`
- } `xml:"month"`
- } `xml:"monthAbbr"`
- MonthPatterns *struct {
- Common
- MonthPatternContext []*struct {
- Common
- MonthPatternWidth []*struct {
- Common
- MonthPattern []*Common `xml:"monthPattern"`
- } `xml:"monthPatternWidth"`
- } `xml:"monthPatternContext"`
- } `xml:"monthPatterns"`
- Days *struct {
- Common
- DayContext []*struct {
- Common
- DayWidth []*struct {
- Common
- Day []*Common `xml:"day"`
- } `xml:"dayWidth"`
- } `xml:"dayContext"`
- } `xml:"days"`
- DayNames *struct {
- Common
- Day []*Common `xml:"day"`
- } `xml:"dayNames"`
- DayAbbr *struct {
- Common
- Day []*Common `xml:"day"`
- } `xml:"dayAbbr"`
- Quarters *struct {
- Common
- QuarterContext []*struct {
- Common
- QuarterWidth []*struct {
- Common
- Quarter []*Common `xml:"quarter"`
- } `xml:"quarterWidth"`
- } `xml:"quarterContext"`
- } `xml:"quarters"`
- Week *struct {
- Common
- MinDays []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"minDays"`
- FirstDay []*struct {
- Common
- Day string `xml:"day,attr"`
- } `xml:"firstDay"`
- WeekendStart []*struct {
- Common
- Day string `xml:"day,attr"`
- Time string `xml:"time,attr"`
- } `xml:"weekendStart"`
- WeekendEnd []*struct {
- Common
- Day string `xml:"day,attr"`
- Time string `xml:"time,attr"`
- } `xml:"weekendEnd"`
- } `xml:"week"`
- Am []*Common `xml:"am"`
- Pm []*Common `xml:"pm"`
- DayPeriods *struct {
- Common
- DayPeriodContext []*struct {
- Common
- DayPeriodWidth []*struct {
- Common
- DayPeriod []*Common `xml:"dayPeriod"`
- } `xml:"dayPeriodWidth"`
- } `xml:"dayPeriodContext"`
- } `xml:"dayPeriods"`
- Eras *struct {
- Common
- EraNames *struct {
- Common
- Era []*Common `xml:"era"`
- } `xml:"eraNames"`
- EraAbbr *struct {
- Common
- Era []*Common `xml:"era"`
- } `xml:"eraAbbr"`
- EraNarrow *struct {
- Common
- Era []*Common `xml:"era"`
- } `xml:"eraNarrow"`
- } `xml:"eras"`
- CyclicNameSets *struct {
- Common
- CyclicNameSet []*struct {
- Common
- CyclicNameContext []*struct {
- Common
- CyclicNameWidth []*struct {
- Common
- CyclicName []*Common `xml:"cyclicName"`
- } `xml:"cyclicNameWidth"`
- } `xml:"cyclicNameContext"`
- } `xml:"cyclicNameSet"`
- } `xml:"cyclicNameSets"`
- DateFormats *struct {
- Common
- DateFormatLength []*struct {
- Common
- DateFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- } `xml:"dateFormat"`
- } `xml:"dateFormatLength"`
- } `xml:"dateFormats"`
- TimeFormats *struct {
- Common
- TimeFormatLength []*struct {
- Common
- TimeFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- } `xml:"timeFormat"`
- } `xml:"timeFormatLength"`
- } `xml:"timeFormats"`
- DateTimeFormats *struct {
- Common
- DateTimeFormatLength []*struct {
- Common
- DateTimeFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- } `xml:"dateTimeFormat"`
- } `xml:"dateTimeFormatLength"`
- AvailableFormats []*struct {
- Common
- DateFormatItem []*struct {
- Common
- Id string `xml:"id,attr"`
- Count string `xml:"count,attr"`
- } `xml:"dateFormatItem"`
- } `xml:"availableFormats"`
- AppendItems []*struct {
- Common
- AppendItem []*struct {
- Common
- Request string `xml:"request,attr"`
- } `xml:"appendItem"`
- } `xml:"appendItems"`
- IntervalFormats []*struct {
- Common
- IntervalFormatFallback []*Common `xml:"intervalFormatFallback"`
- IntervalFormatItem []*struct {
- Common
- Id string `xml:"id,attr"`
- GreatestDifference []*struct {
- Common
- Id string `xml:"id,attr"`
- } `xml:"greatestDifference"`
- } `xml:"intervalFormatItem"`
- } `xml:"intervalFormats"`
- } `xml:"dateTimeFormats"`
- Fields []*struct {
- Common
- Field []*struct {
- Common
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- Relative []*Common `xml:"relative"`
- RelativeTime []*struct {
- Common
- RelativeTimePattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"relativeTimePattern"`
- } `xml:"relativeTime"`
- RelativePeriod []*Common `xml:"relativePeriod"`
- } `xml:"field"`
- } `xml:"fields"`
-}
-type TimeZoneNames struct {
- Common
- HourFormat []*Common `xml:"hourFormat"`
- HoursFormat []*Common `xml:"hoursFormat"`
- GmtFormat []*Common `xml:"gmtFormat"`
- GmtZeroFormat []*Common `xml:"gmtZeroFormat"`
- RegionFormat []*Common `xml:"regionFormat"`
- FallbackFormat []*Common `xml:"fallbackFormat"`
- FallbackRegionFormat []*Common `xml:"fallbackRegionFormat"`
- AbbreviationFallback []*Common `xml:"abbreviationFallback"`
- PreferenceOrdering []*Common `xml:"preferenceOrdering"`
- SingleCountries []*struct {
- Common
- List string `xml:"list,attr"`
- } `xml:"singleCountries"`
- Zone []*struct {
- Common
- Long []*struct {
- Common
- Generic []*Common `xml:"generic"`
- Standard []*Common `xml:"standard"`
- Daylight []*Common `xml:"daylight"`
- } `xml:"long"`
- Short []*struct {
- Common
- Generic []*Common `xml:"generic"`
- Standard []*Common `xml:"standard"`
- Daylight []*Common `xml:"daylight"`
- } `xml:"short"`
- CommonlyUsed []*struct {
- Common
- Used string `xml:"used,attr"`
- } `xml:"commonlyUsed"`
- ExemplarCity []*Common `xml:"exemplarCity"`
- } `xml:"zone"`
- Metazone []*struct {
- Common
- Long []*struct {
- Common
- Generic []*Common `xml:"generic"`
- Standard []*Common `xml:"standard"`
- Daylight []*Common `xml:"daylight"`
- } `xml:"long"`
- Short []*struct {
- Common
- Generic []*Common `xml:"generic"`
- Standard []*Common `xml:"standard"`
- Daylight []*Common `xml:"daylight"`
- } `xml:"short"`
- CommonlyUsed []*struct {
- Common
- Used string `xml:"used,attr"`
- } `xml:"commonlyUsed"`
- } `xml:"metazone"`
-}
-
-// LocaleDisplayNames specifies localized display names for for scripts, languages,
-// countries, currencies, and variants.
-type LocaleDisplayNames struct {
- Common
- LocaleDisplayPattern *struct {
- Common
- LocalePattern []*Common `xml:"localePattern"`
- LocaleSeparator []*Common `xml:"localeSeparator"`
- LocaleKeyTypePattern []*Common `xml:"localeKeyTypePattern"`
- } `xml:"localeDisplayPattern"`
- Languages *struct {
- Common
- Language []*Common `xml:"language"`
- } `xml:"languages"`
- Scripts *struct {
- Common
- Script []*Common `xml:"script"`
- } `xml:"scripts"`
- Territories *struct {
- Common
- Territory []*Common `xml:"territory"`
- } `xml:"territories"`
- Subdivisions *struct {
- Common
- Subdivision []*Common `xml:"subdivision"`
- } `xml:"subdivisions"`
- Variants *struct {
- Common
- Variant []*Common `xml:"variant"`
- } `xml:"variants"`
- Keys *struct {
- Common
- Key []*Common `xml:"key"`
- } `xml:"keys"`
- Types *struct {
- Common
- Type []*struct {
- Common
- Key string `xml:"key,attr"`
- } `xml:"type"`
- } `xml:"types"`
- TransformNames *struct {
- Common
- TransformName []*Common `xml:"transformName"`
- } `xml:"transformNames"`
- MeasurementSystemNames *struct {
- Common
- MeasurementSystemName []*Common `xml:"measurementSystemName"`
- } `xml:"measurementSystemNames"`
- CodePatterns *struct {
- Common
- CodePattern []*Common `xml:"codePattern"`
- } `xml:"codePatterns"`
-}
-
-// Numbers supplies information for formatting and parsing numbers and currencies.
-type Numbers struct {
- Common
- DefaultNumberingSystem []*Common `xml:"defaultNumberingSystem"`
- OtherNumberingSystems []*struct {
- Common
- Native []*Common `xml:"native"`
- Traditional []*Common `xml:"traditional"`
- Finance []*Common `xml:"finance"`
- } `xml:"otherNumberingSystems"`
- MinimumGroupingDigits []*Common `xml:"minimumGroupingDigits"`
- Symbols []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- Decimal []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"decimal"`
- Group []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"group"`
- List []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"list"`
- PercentSign []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"percentSign"`
- NativeZeroDigit []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"nativeZeroDigit"`
- PatternDigit []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"patternDigit"`
- PlusSign []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"plusSign"`
- MinusSign []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"minusSign"`
- Exponential []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"exponential"`
- SuperscriptingExponent []*Common `xml:"superscriptingExponent"`
- PerMille []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"perMille"`
- Infinity []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"infinity"`
- Nan []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"nan"`
- CurrencyDecimal []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"currencyDecimal"`
- CurrencyGroup []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"currencyGroup"`
- TimeSeparator []*Common `xml:"timeSeparator"`
- } `xml:"symbols"`
- DecimalFormats []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- DecimalFormatLength []*struct {
- Common
- DecimalFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- } `xml:"decimalFormat"`
- } `xml:"decimalFormatLength"`
- } `xml:"decimalFormats"`
- ScientificFormats []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- ScientificFormatLength []*struct {
- Common
- ScientificFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- } `xml:"scientificFormat"`
- } `xml:"scientificFormatLength"`
- } `xml:"scientificFormats"`
- PercentFormats []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- PercentFormatLength []*struct {
- Common
- PercentFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- } `xml:"percentFormat"`
- } `xml:"percentFormatLength"`
- } `xml:"percentFormats"`
- CurrencyFormats []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- CurrencySpacing []*struct {
- Common
- BeforeCurrency []*struct {
- Common
- CurrencyMatch []*Common `xml:"currencyMatch"`
- SurroundingMatch []*Common `xml:"surroundingMatch"`
- InsertBetween []*Common `xml:"insertBetween"`
- } `xml:"beforeCurrency"`
- AfterCurrency []*struct {
- Common
- CurrencyMatch []*Common `xml:"currencyMatch"`
- SurroundingMatch []*Common `xml:"surroundingMatch"`
- InsertBetween []*Common `xml:"insertBetween"`
- } `xml:"afterCurrency"`
- } `xml:"currencySpacing"`
- CurrencyFormatLength []*struct {
- Common
- CurrencyFormat []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- } `xml:"currencyFormat"`
- } `xml:"currencyFormatLength"`
- UnitPattern []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"unitPattern"`
- } `xml:"currencyFormats"`
- Currencies *struct {
- Common
- Currency []*struct {
- Common
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- DisplayName []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"displayName"`
- Symbol []*Common `xml:"symbol"`
- Decimal []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"decimal"`
- Group []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- } `xml:"group"`
- } `xml:"currency"`
- } `xml:"currencies"`
- MiscPatterns []*struct {
- Common
- NumberSystem string `xml:"numberSystem,attr"`
- Pattern []*struct {
- Common
- Numbers string `xml:"numbers,attr"`
- Count string `xml:"count,attr"`
- } `xml:"pattern"`
- } `xml:"miscPatterns"`
- MinimalPairs []*struct {
- Common
- PluralMinimalPairs []*struct {
- Common
- Count string `xml:"count,attr"`
- } `xml:"pluralMinimalPairs"`
- OrdinalMinimalPairs []*struct {
- Common
- Ordinal string `xml:"ordinal,attr"`
- } `xml:"ordinalMinimalPairs"`
- } `xml:"minimalPairs"`
-}
-
-// Version is the version of CLDR from which the XML definitions are generated.
-const Version = "32"