protocol-buffers-descriptor-2.3.0: Text.DescriptorProto.Options and code generated from the Google Protocol Buffer specification

Safe HaskellNone



This module provides a less verbose API for accessing the options of the various descriptor messages types. There are seven different option types. The EnumValueOptions are not currently settable in the proto file. To access extension keys the descendKey functions are provided as the descend functions ignore them. The toDP, toEP, toSP are type-specific descents that are demonstrated in the the tests below. They are useful in that they provide more information for the type-checker. The toFP, toEVP, and toMP are fully type-specific descents but are needed to make the tests below type-check, though they could have been used in test4, test5', and test7.

import Text.DescriptorProtos.Options
import Text.DescriptorProtos(fileDescriptorProto)

test1 :: D.FileOptions
test1 = options fileDescriptorProto

test2 :: Maybe D.MessageOptions
test2 = return fileDescriptorProto >>= descend "FieldDescriptorProto" >>= return . options

test3 :: Maybe D.EnumOptions
test3 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= descend "Type" >>= return . options

test4 :: Maybe D.EnumValueOptions
test4 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= toEP "Type" >>= descend "TYPE_DOUBLE" >>= return . options

test5 :: Maybe D.FieldOptions
test5 = return fileDescriptorProto >>= toDP "DescriptorProto" >>= toDP "ExtensionRange" >>= descend "start" >>= return . options

test6 :: Maybe D.ServiceOptions
test6 = return fileDescriptorProto >>= descend "ImaginaryService" >>= return . options

test7 :: Maybe D.MethodOptions
test7 = return fileDescriptorProto >>= toSP "ImaginaryService" >>= descend "ImaginaryMethod" >>= return . options


descend :: DescendClass a c => String -> a -> Maybe c Source