mirror of
https://github.com/go-gitea/gitea
synced 2024-07-07 10:35:48 +00:00
82 lines
3.3 KiB
Go
Vendored
82 lines
3.3 KiB
Go
Vendored
// 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
|
|
// - https://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
|
|
)
|