protocol-buffers-descriptor-1.0.1: Text.DescriptorProto.Options and Google Protocol Buffer specifications



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 |