Documentation ¶
Index ¶
- Variables
- func FillLeft(s string, w int) string
- func FillRight(s string, w int) string
- func GraphemeClusterCount(s string) (n int)
- func IsAmbiguousWidth(r rune) bool
- func IsEastAsian() bool
- func IsNeutralWidth(r rune) bool
- func RuneWidth(r rune) int
- func StringWidth(s string) (width int)
- func Truncate(s string, w int, tail string) string
- func Wrap(s string, w int) string
- type Condition
- func (c *Condition) FillLeft(s string, w int) string
- func (c *Condition) FillRight(s string, w int) string
- func (c *Condition) RuneWidth(r rune) int
- func (c *Condition) StringWidth(s string) (width int)
- func (c *Condition) Truncate(s string, w int, tail string) string
- func (c *Condition) Wrap(s string, w int) string
- type Graphemes
Constants ¶
This section is empty.
Variables ¶
var ( // EastAsianWidth will be set true if the current locale is CJK EastAsianWidth bool // StrictEmojiNeutral should be set false if handle broken fonts StrictEmojiNeutral bool = true // DefaultCondition is a condition in current locale DefaultCondition = &Condition{ EastAsianWidth: false, StrictEmojiNeutral: true, } )
Functions ¶
func GraphemeClusterCount ¶
GraphemeClusterCount returns the number of user-perceived characters (grapheme clusters) for the given string. To calculate this number, it iterates through the string using the Graphemes iterator.
func IsAmbiguousWidth ¶
IsAmbiguousWidth returns whether is ambiguous width or not.
func IsNeutralWidth ¶
IsNeutralWidth returns whether is neutral width or not.
func RuneWidth ¶
RuneWidth returns the number of cells in r. See http://www.unicode.org/reports/tr11/
Types ¶
type Condition ¶
Condition have flag EastAsianWidth whether the current locale is CJK or not.
func NewCondition ¶
func NewCondition() *Condition
NewCondition return new instance of Condition which is current locale.
func (*Condition) RuneWidth ¶
RuneWidth returns the number of cells in r. See http://www.unicode.org/reports/tr11/
func (*Condition) StringWidth ¶
StringWidth return width as you can see
type Graphemes ¶
type Graphemes struct {
// contains filtered or unexported fields
}
Graphemes implements an iterator over Unicode extended grapheme clusters, specified in the Unicode Standard Annex #29. Grapheme clusters correspond to "user-perceived characters". These characters often consist of multiple code points (e.g. the "woman kissing woman" emoji consists of 8 code points: woman + ZWJ + heavy black heart (2 code points) + ZWJ + kiss mark + ZWJ + woman) and the rules described in Annex #29 must be applied to group those code points into clusters perceived by the user as one character.
func NewGraphemes ¶
NewGraphemes returns a new grapheme cluster iterator.
func (*Graphemes) Bytes ¶
Bytes returns a byte slice which corresponds to the current grapheme cluster. If the iterator is already past the end or Next() has not yet been called, nil is returned.
func (*Graphemes) Next ¶
Next advances the iterator by one grapheme cluster and returns false if no clusters are left. This function must be called before the first cluster is accessed.
func (*Graphemes) Positions ¶
Positions returns the interval of the current grapheme cluster as byte positions into the original string. The first returned value "from" indexes the first byte and the second returned value "to" indexes the first byte that is not included anymore, i.e. str[from:to] is the current grapheme cluster of the original string "str". If Next() has not yet been called, both values are 0. If the iterator is already past the end, both values are 1.
func (*Graphemes) Reset ¶
func (g *Graphemes) Reset()
Reset puts the iterator into its initial state such that the next call to Next() sets it to the first grapheme cluster again.