| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.ProtoLens.Compiler.Definitions
Description
This module takes care of collecting all the definitions in a .proto file and assigning Haskell names to all of the defined things (messages, enums and field names).
- type Env n = Map Text (Definition n)
- data Definition n
- = Message (MessageInfo n)
- | Enum (EnumInfo n)
- data MessageInfo n = MessageInfo {}
- data ServiceInfo = ServiceInfo {}
- data MethodInfo = MethodInfo {}
- data FieldInfo = FieldInfo {}
- data OneofInfo = OneofInfo {}
- data OneofCase = OneofCase {}
- data FieldName = FieldName {}
- data Symbol
- nameFromSymbol :: Symbol -> Name
- promoteSymbol :: Symbol -> Type
- data EnumInfo n = EnumInfo {}
- data EnumValueInfo n = EnumValueInfo {}
- qualifyEnv :: ModuleName -> Env Name -> Env QName
- unqualifyEnv :: Env Name -> Env QName
- collectDefinitions :: FileDescriptorProto -> Env Name
- collectServices :: FileDescriptorProto -> [ServiceInfo]
- definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName
- definedType :: Text -> Env QName -> Definition QName
- camelCase :: Text -> Text
Documentation
type Env n = Map Text (Definition n) Source #
Env contains a mapping of proto names (as specified in the .proto file)
to Haskell names. The keys are fully-qualified names, for example,
".package.Message.Submessage". (The protocol_compiler tool emits all
message field types in this form, even if they refer to local definitions.)
The type n can be either a Name (when talking about definitions within
the current file) or a (qualified) QName (when talking about definitions
either from this or another file).
data MessageInfo n Source #
All the information needed to define or use a proto message type.
Constructors
| MessageInfo | |
Fields
| |
Instances
data ServiceInfo Source #
Constructors
| ServiceInfo | |
Fields
| |
data MethodInfo Source #
Constructors
| MethodInfo | |
Fields
| |
Information about a single field of a proto message.
Constructors
| FieldInfo | |
Fields | |
Constructors
| OneofInfo | |
Fields
| |
Constructors
| OneofCase | |
Fields
| |
Constructors
| FieldName | |
Fields
| |
A string that refers to the name (in Haskell) of a lens that accesses a field.
For example, in the signature of the overloaded lens
foo :: HasLens "foo" ... => Lens ...
a Symbol is used to construct both the type-level argument to
HasLens and the name of the function foo.
nameFromSymbol :: Symbol -> Name Source #
promoteSymbol :: Symbol -> Type Source #
Construct a promoted, type-level string.
All the information needed to define or use a proto enum type.
Constructors
| EnumInfo | |
Fields
| |
data EnumValueInfo n Source #
Information about a single value case of a proto enum.
Constructors
| EnumValueInfo | |
Fields | |
Instances
qualifyEnv :: ModuleName -> Env Name -> Env QName Source #
collectDefinitions :: FileDescriptorProto -> Env Name Source #
Collect all the definitions in the given file (including definitions nested in other messages), and assign Haskell names to them.
definedFieldType :: FieldDescriptorProto -> Env QName -> Definition QName Source #
Look up the Haskell name for the type of a given field (message or enum).
definedType :: Text -> Env QName -> Definition QName Source #
Look up the Haskell name for the type of a given type.