ast

package
v0.29.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2024 License: MIT Imports: 12 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Equal added in v0.21.0

func Equal(x, y Unique) bool

Equal проверка равенства нод Unique

func FieldIndex added in v0.27.0

func FieldIndex(f Field) int

FieldIndex возвращает индекс поля

func FieldName added in v0.20.0

func FieldName(f Field) string

FieldName возвращает название поля

func GetFieldKey added in v0.7.0

func GetFieldKey(k Unique, fieldAddr interface{}) string

GetFieldKey получает ключ для поля данного k

func GetUnique added in v0.10.0

func GetUnique(k Unique) string

GetUnique получает ключ для данного k

func IsErrorTypeNotFound added in v0.22.1

func IsErrorTypeNotFound(err error) bool

IsErrorTypeNotFound проверка, что данная ошибка является обёрткой для ErrorTypeNotFound

func SamePrimitive added in v0.27.0

func SamePrimitive(x, y Type) bool

SamePrimitive проверка равенства примитивных типов

func SetUnique added in v0.10.0

func SetUnique(k Unique, ctx UniqueContext)

SetUnique устанавливает уникальное в рамках UniqueContext значение для данного Unique

Types

type Any

type Any struct {
	File *File
	// contains filtered or unexported fields
}

Any представление типа golang.protobuf.Any

type ArrayOption added in v0.15.0

type ArrayOption struct {
	Value []OptionValue
	// contains filtered or unexported fields
}

ArrayOption branch of OptionValue

type Bool

type Bool struct {
	// contains filtered or unexported fields
}

Bool представление булевского типа

type BoolOption added in v0.15.0

type BoolOption struct {
	Value bool
	// contains filtered or unexported fields
}

BoolOption branch of OptionValue

func (*BoolOption) String added in v0.15.0

func (o *BoolOption) String() string

type Bytes

type Bytes struct {
	// contains filtered or unexported fields
}

Bytes представление типа bytes

type Comment added in v0.7.0

type Comment struct {
	Value string
	Lines []string
	// contains filtered or unexported fields
}

Comment представление комментария

type EmbeddedOption added in v0.15.0

type EmbeddedOption struct {
	Value string
	// contains filtered or unexported fields
}

EmbeddedOption представление встроенной опции

type Enum

type Enum struct {
	File      *File
	ParentMsg *Message

	Name    string
	Options []*Option
	Values  []*EnumValue
	// contains filtered or unexported fields
}

Enum представление типа enum

func (*Enum) String added in v0.28.0

func (e *Enum) String() string

Enum референс-имя перечисления, включает в себя название пакета, имена родительских сообщений, в пространстве имён которых оно определено.

type EnumOption added in v0.15.0

type EnumOption struct {
	Value *EnumValue
	// contains filtered or unexported fields
}

EnumOption представление опций типа Enum

type EnumValue

type EnumValue struct {
	Name    string
	Integer int
	Options []*Option
	// contains filtered or unexported fields
}

EnumValue представление поля для Enum-а

type ErrorPackageMissingFiles added in v0.22.1

type ErrorPackageMissingFiles struct{}

ErrorPackageMissingFiles ошибка указывающая на отсутствие proto-файлов в пакете

func (ErrorPackageMissingFiles) Error added in v0.22.1

type ErrorTypeNotFound added in v0.22.1

type ErrorTypeNotFound string

ErrorTypeNotFound ошибка возвращаемая если тип не был найден

func (ErrorTypeNotFound) Error added in v0.22.1

func (e ErrorTypeNotFound) Error() string

type Extension added in v0.10.0

type Extension struct {
	File      *File
	ParentMsg *Message

	Name   string
	Fields []*ExtensionField
	Types  []Type
	// contains filtered or unexported fields
}

Extension представление extension

func MessageToExtension added in v0.10.0

func MessageToExtension(msg *Message) *Extension

MessageToExtension копирует Message в Extension с сохранением всей информации

type ExtensionField added in v0.10.0

type ExtensionField struct {
	Name     string
	Sequence int
	Type     Type
	Options  []*Option
	// contains filtered or unexported fields
}

ExtensionField представление поля extension-а

type Field added in v0.17.0

type Field interface {
	Unique
	// contains filtered or unexported methods
}

Field представление сущности являющейся полем сообщения. Это может быть как непосредственно поле, так и ветвь oneof-а

type File

type File struct {
	Name    string
	Package string
	Syntax  string

	Imports    []*Import
	Types      []Type
	Extensions []*Extension
	Services   []*Service
	Options    []*Option

	GoPath string
	GoPkg  string
	// contains filtered or unexported fields
}

File представление для файла

func (*File) Enum added in v0.22.1

func (f *File) Enum(name string) (*Enum, error)

Enum поиск перечисления по имени Возвращает ошибку ErrorTypeNotFound если такой тип с таким именем не найден.

func (*File) Message added in v0.22.1

func (f *File) Message(name string) (*Message, error)

Message поиск структуры по имени. Возвращает ошибку ErrorTypeNotFound если такой тип с таким именем не найден.

func (*File) ScanTypes added in v0.22.1

func (f *File) ScanTypes(inspector func(typ Type) bool)

ScanTypes пробежка по типам данного пакета

func (*File) Service added in v0.22.1

func (f *File) Service(name string) *Service

Service поиск сервиса по имени

func (*File) Type added in v0.22.1

func (f *File) Type(name string) Type

Type поиск типа по имени.

type FileManager added in v0.13.2

type FileManager interface {
	// Create возвращаем пару writer и функцию закрытия файла вместо одного io.WriteClose для удобства в тестах
	// Плюс, этот интерфейс будет использоваться только внутри приложения
	Create(name string) (writer io.Writer, closer func() error, err error)
}

FileManager работа с записываемыми файлами

func NewFileManager added in v0.13.2

func NewFileManager(root string) FileManager

NewFileManager реализация управления файлами на уровне файловой системы

type Fixed32

type Fixed32 struct {
	// contains filtered or unexported fields
}

Fixed32 представление типа fixed32

type Fixed64

type Fixed64 struct {
	// contains filtered or unexported fields
}

Fixed64 представление типа fixed64

type Float32

type Float32 struct {
	// contains filtered or unexported fields
}

Float32 представление типа float

type Float64

type Float64 struct {
	// contains filtered or unexported fields
}

Float64 представление типа double

type FloatOption added in v0.15.0

type FloatOption struct {
	Value float64
	// contains filtered or unexported fields
}

FloatOption branch of OptionValue

func (*FloatOption) String added in v0.15.0

func (o *FloatOption) String() string

type Hashable

type Hashable interface {
	ScalarNode
	// contains filtered or unexported methods
}

Hashable типы могущие являться ключами словарей

type Import added in v0.7.0

type Import struct {
	Path string
	File *File
	// contains filtered or unexported fields
}

Import представление для импортов

type Int32

type Int32 struct {
	// contains filtered or unexported fields
}

Int32 представление типа int32

type Int64

type Int64 struct {
	// contains filtered or unexported fields
}

Int64 представление типа int64

type IntOption added in v0.15.0

type IntOption struct {
	Value int64
	// contains filtered or unexported fields
}

IntOption branch of OptionValue

func (*IntOption) String added in v0.15.0

func (o *IntOption) String() string

type Map

type Map struct {
	KeyType   Hashable
	ValueType Type
	// contains filtered or unexported fields
}

Map представление типа map<KeyType, ValueType>

type MapOption added in v0.15.0

type MapOption struct {
	Value map[string]OptionValue
	// contains filtered or unexported fields
}

MapOption branch of OptionValue

type Message

type Message struct {
	File      *File
	ParentMsg *Message

	Name    string
	Fields  []*MessageField
	Types   []Type
	Options []*Option
	// contains filtered or unexported fields
}

Message представление message

func (*Message) AllFields added in v0.17.0

func (m *Message) AllFields() []Field

AllFields возвращает поля и ветви oneof данного сообщения единым списком

func (*Message) Enum added in v0.22.1

func (m *Message) Enum(name string) (*Enum, error)

Enum поиск вложенного перечисления по имени. Возвращает ошибку ErrorTypeNotFound если такой тип с таким именем не найден.

func (*Message) Field added in v0.22.1

func (m *Message) Field(name string) *MessageField

Field возвращает поле мессаджа по имени. Не производит нормализации по oneof-ам.

func (*Message) FieldOneof added in v0.22.1

func (m *Message) FieldOneof(name string) Field

FieldOneof возвращает поле мессаджа по имени, при этом залезает, если нужно, внутрь oneof-а

func (*Message) Message added in v0.22.1

func (m *Message) Message(name string) (*Message, error)

Message поиск подструктуры по имени. Возвращает ошибку ErrorTypeNotFound если такой тип с таким именем не найден.

func (*Message) ScanTypes added in v0.22.1

func (m *Message) ScanTypes(inspector func(typ Type) bool)

ScanTypes пробежка по внутренним типам данной структуры

func (*Message) String added in v0.28.0

func (m *Message) String() string

String референс-имя сообщения, включает в себя название пакета, имена родительских сообщений, в пространстве имён которых оно определено.

func (*Message) Type added in v0.22.1

func (m *Message) Type(name string) Type

Type поиск подтипа по имени

type MessageField

type MessageField struct {
	Name     string
	Sequence int
	Type     Type
	Options  []*Option
	// contains filtered or unexported fields
}

MessageField представление поля message-а

type Method

type Method struct {
	File    *File
	Service *Service

	Name   string
	Input  Type
	Output Type

	Options []*Option
	// contains filtered or unexported fields
}

Method представление для метода

func (*Method) InputMessage added in v0.19.0

func (m *Method) InputMessage() *Message

InputMessage возвращает структуру запроса (минуя оборачивающий Stream, если нужно)

func (*Method) OutputMessage added in v0.19.0

func (m *Method) OutputMessage() *Message

OutputMessage аналогично InputMessage, возвращает структуру ответа, при необходимости снимая stream

type Node

type Node interface {
	Unique
	// contains filtered or unexported methods
}

Node представление базовой ноды

type OneOf

type OneOf struct {
	ParentMsg *Message

	Name     string
	Branches []*OneOfBranch
	// contains filtered or unexported fields
}

OneOf представление для oneof поля message-а

type OneOfBranch

type OneOfBranch struct {
	Name     string
	Type     Type
	ParentOO *OneOf
	Sequence int
	Options  []*Option
	// contains filtered or unexported fields
}

OneOfBranch представление для ветви

type Option added in v0.7.0

type Option struct {
	Name      string
	Value     OptionValue
	Extension *Extension
	// contains filtered or unexported fields
}

Option опция

func FieldOptions added in v0.17.1

func FieldOptions(f Field) []*Option

FieldOptions возвращает опции поля

type OptionValue

type OptionValue interface {
	Unique
	// contains filtered or unexported methods
}

OptionValue значение опции

type Optional

type Optional struct {
	Type Type
	// contains filtered or unexported fields
}

Optional представление для опциональных полей

type Package added in v0.22.1

type Package struct {
	// contains filtered or unexported fields
}

Package представление пакета прото-файлов. Данная структура введена скорее для удобства, т.к. понятия пакет в смысле группа файлов с одинаковым именем package в protobuf нет — файлы не попадают на трансляцию автоматически, а добавляются туда вручную, при трансляции они могут попасть в различные целевые каталоги и т.д.

func NewPackage added in v0.22.1

func NewPackage(files []*File) (*Package, error)

NewPackage конструктор пакета прото-файлов. Если список files пуст возвращается ошибка ErrorPackageMissingFiles

func (*Package) Enum added in v0.22.1

func (s *Package) Enum(name string) (*Enum, error)

Enum поиск перечисления по имени Возвращает ошибку ast.ErrorTypeNotFound если такой тип с таким именем не найден.

func (*Package) File added in v0.22.1

func (s *Package) File(name string) (*File, error)

File отдать файл с данным именем. Функция path.Split вызванная на имени файла должна возвращать только пустое значение dir.

Правильные названия файлов при вызове: error_codes.proto, marker.proto, atlas Неправильные названия файлов: atlas/atlas.proto, /atlas.proto

func (*Package) Files added in v0.22.1

func (s *Package) Files() []*File

Files получить все файлы текущего пакета

func (*Package) GoPkg added in v0.25.0

func (s *Package) GoPkg() string

GoPkg go-пакета

func (*Package) Message added in v0.22.1

func (s *Package) Message(name string) (*Message, error)

Message поиск структуры по имени. Возвращает ошибку ast.ErrorTypeNotFound если такой тип с таким именем не найден.

func (*Package) Pkg added in v0.25.0

func (s *Package) Pkg() string

Pkg имя proto-пакета

func (*Package) ScanTypes added in v0.22.1

func (s *Package) ScanTypes(inspector func(p Type) bool)

ScanTypes пробежка по всем типам пакета, включая и вложенные

func (*Package) Service added in v0.22.1

func (s *Package) Service(name string) *Service

Service поиск сервиса с данным именем в пространстве имён пакета

func (*Package) Services added in v0.22.1

func (s *Package) Services() []*Service

Services получить все сервисы текущего пакета

func (*Package) Type added in v0.22.1

func (s *Package) Type(name string) Type

Type поиск типа с данным именем в корневом пространстве имён пакета

func (*Package) Types added in v0.22.1

func (s *Package) Types() []Type

Types получить все типы текущего пакета лежащие в корне пакета

type Printer added in v0.13.2

type Printer struct {
	// contains filtered or unexported fields
}

Printer печать файлов

func NewPrinter added in v0.13.2

func NewPrinter(fm FileManager) *Printer

NewPrinter конструктор принтера файлов

func (*Printer) Plan added in v0.13.2

func (p *Printer) Plan(f *File)

Plan добавить файл в план печати

func (*Printer) Print added in v0.13.2

func (p *Printer) Print(file *File) error

Print печать файла и всех его зависимостей

type Repeated

type Repeated struct {
	Type Type
	// contains filtered or unexported fields
}

Repeated представление для полей с repeeated

type ScalarNode

type ScalarNode interface {
	Type
	// contains filtered or unexported methods
}

ScalarNode скалярные типы

type Service

type Service struct {
	File *File

	Name    string
	Methods []*Method
	Options []*Option
	// contains filtered or unexported fields
}

Service представление для сервисов

func (*Service) Method added in v0.22.1

func (s *Service) Method(name string) *Method

Method поиск метода по имени

type Sfixed32

type Sfixed32 struct {
	// contains filtered or unexported fields
}

Sfixed32 представление для типа sfixed32

type Sfixed64

type Sfixed64 struct {
	// contains filtered or unexported fields
}

Sfixed64 представление для типа sfixed64

type Sint32

type Sint32 struct {
	// contains filtered or unexported fields
}

Sint32 представление для типа sint32

type Sint64

type Sint64 struct {
	// contains filtered or unexported fields
}

Sint64 представление типа sint64

type Stream

type Stream struct {
	Type Type
	// contains filtered or unexported fields
}

Stream представление для stream-аргументов и возвращаемых значений метода

type String

type String struct {
	// contains filtered or unexported fields
}

String представление для стрового типа

type StringOption added in v0.15.0

type StringOption struct {
	Value string
	// contains filtered or unexported fields
}

StringOption branch of OptionValue

func (*StringOption) String added in v0.15.0

func (o *StringOption) String() string

type Type

type Type interface {
	Node
	// contains filtered or unexported methods
}

Type представление типа

func FieldType added in v0.17.1

func FieldType(f Field) Type

FieldType возвращает тип поля

type Uint32

type Uint32 struct {
	// contains filtered or unexported fields
}

Uint32 представление для типа uint32

type Uint64

type Uint64 struct {
	// contains filtered or unexported fields
}

Uint64 представление для типа uint64

type UintOption added in v0.15.0

type UintOption struct {
	Value uint64
	// contains filtered or unexported fields
}

UintOption branch of OptionValue

func (*UintOption) String added in v0.15.0

func (o *UintOption) String() string

type Unique added in v0.7.0

type Unique interface {
	// contains filtered or unexported methods
}

Unique интерфейс для уникализации инстансов в AST привязывающий к данному объекту некое уникальное для контекстного множества значение

type UniqueContext added in v0.7.0

type UniqueContext map[string]struct{}

UniqueContext контекст для создания уникальных значений

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL