Documentation
¶
Overview ¶
Package grammemes defines grammar category type, index and list types with helper functions to deal with grammar categories for russian language
Index ¶
- func NewErrorf(format string, args ...interface{}) error
- type Error
- type Grammeme
- type GrammemeIndexer
- type GrammemeName
- type Index
- func (x *Index) Add(grammeme Grammeme) error
- func (x Index) ByIdx(requiredIdx uint8) (*Grammeme, error)
- func (x *Index) ByName(name GrammemeName) (*Grammeme, error)
- func (x Index) Idx(name GrammemeName) (uint8, error)
- func (x Index) Len() int
- func (x Index) MarshalBinary() (data []byte, err error)
- func (x *Index) NewList(grammemes ...*Grammeme) *List
- func (x Index) Slice() []Grammeme
- func (x *Index) UnmarshalBinary(data []byte) error
- func (x *Index) UnmarshalFromBuffer(buffer *binutils.Buffer) error
- type List
- func (g *List) Add(grammeme *Grammeme) error
- func (g *List) EqualTo(another *List) bool
- func (g *List) GrammemeIndex() *Index
- func (g List) Len() int
- func (g List) MarshalBinary() (data []byte, err error)
- func (g List) Slice() []*Grammeme
- func (g *List) String() string
- func (g *List) UnmarshalFromBuffer(buffer *binutils.Buffer) error
- type ListIndex
- func (listIndex *ListIndex) Add(list *List)
- func (listIndex *ListIndex) GetOrCreateIdx(list *List) uint64
- func (listIndex *ListIndex) Idx(list *List) (uint64, error)
- func (listIndex ListIndex) Len() int
- func (listIndex *ListIndex) MarshalBinary() (data []byte, err error)
- func (listIndex ListIndex) Slice() ListList
- func (listIndex ListIndex) String() string
- func (listIndex *ListIndex) UnmarshalFromBuffer(buffer *binutils.Buffer) (err error)
- type ListList
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error type implements error interface and used in package routines.
func WrapErrorf ¶
WrapErrorf wraps underlying error into new text error Takes format and arguments to make error description using fmt.Sprintf() formatting rules.
type Grammeme ¶
type Grammeme struct {
ParentAttr GrammemeName // Parent grammeme name.
Name GrammemeName // Grammeme name.
Alias text.RussianText // Localized grammeme name.
Description text.RussianText // Grammeme description.
}
Grammeme implements storage for grammatical category structure data..
func NewGrammeme ¶ added in v0.2.3
func NewGrammeme(parent GrammemeName, name GrammemeName, alias text.RussianText, desc text.RussianText) *Grammeme
NewGrammeme makes new grammeme with required parent, name, alias and description.
func (Grammeme) MarshalBinary ¶
MarshalBinary makes binary grammeme data. Все строковые параметры записываются как строки, завершённые нулевым байтом.
func (*Grammeme) UnmarshalBinary ¶
UnmarshalBinary распаковывает байтовую строку в данные граммемы.
type GrammemeIndexer ¶
type GrammemeIndexer interface {
GrammemeIndex() *Index
}
GrammemeIndexer задаёт интерфейс для типов, возвращающих индекс граммем
type GrammemeName ¶
type GrammemeName string
GrammemeName represents name of grammatical category. Always 4 ASCII characters.
func (GrammemeName) MarshalBinary ¶
func (g GrammemeName) MarshalBinary() (data []byte, err error)
MarshalBinary makes binary representation bytes slice. Always 4 bytes. Empty grammeme name represents as 4 spaces.
func (GrammemeName) String ¶
func (g GrammemeName) String() string
String returns grammeme name as string type. Implements stringer.
func (*GrammemeName) UnmarshalBinary ¶
func (g *GrammemeName) UnmarshalBinary(data []byte) error
UnmarshalBinary loads grammeme name from bytes slice. Requires slice len of grammemeNameLength bytes. If takes 0x20202020 replaces spaces into empty grammeme name. Returns error if data slice len mismatch.
func (*GrammemeName) UnmarshalFromBuffer ¶
func (g *GrammemeName) UnmarshalFromBuffer(buffer *binutils.Buffer) (err error)
UnmarshalFromBuffer loads grammeme name from buffer. If takes 0x20202020 replaces spaces into empty grammeme name. Implements buffer.BufferUnmarshaler.
type Index ¶
type Index struct {
// contains filtered or unexported fields
}
Index реализует индекс известных граммем и предоставляет уникальные идентификаторы граммем в индексе.
func (*Index) Add ¶
Add добавляет новую граммему в индекс. Имя граммемы не должно совпадать с именем уже существующей граммемы. Группа (родительская граммема) должна быть уже добавлена (за исключением граммем не имеющих группы). Кириллическая аббревиатура наименования не должна совпадать с аббревиатурой уже существующей граммемы.
func (Index) ByIdx ¶
ByIdx позволяет получить граммему из индекса по известному идентификатору. Возвращает ошибку, если идентификатор в индексе не найден.
func (*Index) ByName ¶
func (x *Index) ByName(name GrammemeName) (*Grammeme, error)
ByName находит граммему в индексе по имени. Имя граммемы не должно совпадать с именем уже существующей граммемы. Группа (родительская граммема) должна быть уже добавлена (за исключением граммем не имеющих группы). Кириллическая аббревиатура наименования не должна совпадать с аббревиатурой уже существующей граммемы.
func (Index) Idx ¶
func (x Index) Idx(name GrammemeName) (uint8, error)
Idx позволяет получить уникальный идентификатор граммемы в индексе. Возвращает ошибку, если граммема в индексе не найдена.
func (Index) MarshalBinary ¶
MarshalBinary упаковывает индекс граммем в двоичную последовательность. В двоичном виде список граммем содержит длину списка listLen в 1м байте. и набор элементов списка длиной listLen. В случае, размер данных в последовательности не соответствует списку категорий, возвращает ошибку.
func (*Index) UnmarshalBinary ¶
UnmarshalBinary распаковывает бинарные данные индекса из бинарной последовательности. В двоичном виде список граммем содержит длину списка listLen в 1м байте и набор элементов списка длиной listLen. В случае, если размер данных в последовательности не соответствует списку граммем, возвращает ошибку.
func (*Index) UnmarshalFromBuffer ¶
UnmarshalFromBuffer загружает индекс граммем из двоичного буфера. В двоичном виде список граммем содержит длину списка listLen в 1м байте и набор элементов списка длиной listLen. Данные за пределами длины списка listLen остаются в буфере нетронутыми.
type List ¶
type List struct {
// contains filtered or unexported fields
}
List хранит список граммем, определённых в индексе.
func (*List) EqualTo ¶
EqualTo сравнивает список граммем с другим списком. Возвращает true если списки граммем используют одинаковый индекс и содержат одинаковый набор граммем, независимо от порядка в списке.
func (*List) GrammemeIndex ¶
GrammemeIndex возвращает указатель на использованный индекс.
func (List) MarshalBinary ¶
MarshalBinary сохраняет данные списка граммем в двоичном виде. При сохранении в двоичном виде список граммем записывает только идентификаторы граммем в индексе. Первый байт записи всегда размер списка.
func (*List) UnmarshalFromBuffer ¶
UnmarshalFromBuffer загружает данные списка граммем из бинарного буфера. При загрузке бинарных данных список граммем получает размер списка и идентификаторы граммем в индексе. Первый байт записи всегда размер списка, затем следуют байты идентификаторов граммем. При загрузке списка из буфера список граммем вычитывает необходимое количество байт, оставляя лишние данные в буфере.
type ListIndex ¶ added in v0.2.5
type ListIndex struct {
// contains filtered or unexported fields
}
ListIndex allow store indexed grammemes lists.
func NewListIndex ¶ added in v0.2.5
NewListIndex creates new grammemes lists index for requested grammemes index.
func (*ListIndex) Add ¶ added in v0.2.5
Add adds grammemes list into index if such list not added before.
func (*ListIndex) GetOrCreateIdx ¶ added in v0.3.2
GetOrCreateIdx get list id from index. Adds list into index if not added before.
func (*ListIndex) Idx ¶ added in v0.3.2
Idx returns id of specified list in index. Returns error if no such grammemes list in index found.
func (*ListIndex) MarshalBinary ¶ added in v0.2.5
MarshalBinary returns binary representation of known grammemes sets. Returns error if anything goes wrong.