-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A web service specification compiler that generates implementation and tests. -- @package harmony @version 0.1.0.2 module Language.Lex alex_base :: AlexAddr alex_table :: AlexAddr alex_check :: AlexAddr alex_deflt :: AlexAddr alex_accept :: Array Int (AlexAcc (Posn -> String -> Token) user) alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int# quickIndex :: Array Int (AlexAcc (Posn -> String -> Token) (Any *)) -> Int -> AlexAcc (Posn -> String -> Token) (Any *) data AlexReturn a AlexEOF :: AlexReturn a AlexError :: !AlexInput -> AlexReturn a AlexSkip :: !AlexInput -> !Int -> AlexReturn a AlexToken :: !AlexInput -> !Int -> a -> AlexReturn a alexScan :: AlexInput -> Int -> AlexReturn (Posn -> String -> Token) alexScanUser :: t -> AlexInput -> Int -> AlexReturn (Posn -> String -> Token) alex_scan_tkn :: t -> t1 -> Int# -> AlexInput -> Int# -> AlexLastAcc (Posn -> String -> Token) -> (AlexLastAcc (Posn -> String -> Token), AlexInput) tok :: (Posn -> String -> Token) -> (Posn -> String -> Token) share :: String -> String data Tok TS :: !String -> !Int -> Tok TL :: !String -> Tok TI :: !String -> Tok TV :: !String -> Tok TD :: !String -> Tok TC :: !String -> Tok T_VerIdent :: !String -> Tok T_RouteIdent :: !String -> Tok data Token PT :: Posn -> Tok -> Token Err :: Posn -> Token tokenPos :: [Token] -> String tokenPosn :: Token -> Posn tokenLineCol :: Token -> (Int, Int) posLineCol :: Posn -> (Int, Int) mkPosToken :: Token -> ((Int, Int), String) prToken :: Token -> String data BTree N :: BTree B :: String -> Tok -> BTree -> BTree -> BTree eitherResIdent :: (String -> Tok) -> String -> Tok resWords :: BTree unescapeInitTail :: String -> String data Posn Pn :: !Int -> !Int -> !Int -> Posn alexStartPos :: Posn alexMove :: Posn -> Char -> Posn type Byte = Word8 type AlexInput = (Posn, Char, [Byte], String) tokens :: String -> [Token] alexGetByte :: AlexInput -> Maybe (Byte, AlexInput) alexInputPrevChar :: AlexInput -> Char -- | Encode a Haskell String to a list of Word8 values, in UTF8 format. utf8Encode :: Char -> [Word8] alex_action_3 :: Posn -> String -> Token alex_action_4 :: Posn -> String -> Token alex_action_5 :: Posn -> String -> Token alex_action_6 :: Posn -> String -> Token data AlexAddr AlexA# :: Addr# -> AlexAddr alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int# data AlexLastAcc a AlexNone :: AlexLastAcc a AlexLastAcc :: a -> !AlexInput -> !Int -> AlexLastAcc a AlexLastSkip :: !AlexInput -> !Int -> AlexLastAcc a data AlexAcc a user AlexAccNone :: AlexAcc a user AlexAcc :: a -> AlexAcc a user AlexAccSkip :: AlexAcc a user iUnbox :: Int -> Int# instance Eq Tok instance Show Tok instance Ord Tok instance Show BTree instance Eq Posn instance Show Posn instance Ord Posn instance Eq Token instance Show Token instance Ord Token instance Functor AlexLastAcc module Paths_harmony version :: Version getBinDir :: IO FilePath getLibDir :: IO FilePath getDataDir :: IO FilePath getLibexecDir :: IO FilePath getDataFileName :: FilePath -> IO FilePath getSysconfDir :: IO FilePath -- | Compiles Hastache templates and defines the datatypes to pass -- information to them. module Generation.TemplateCompiler -- | An enum value data StrValue StrValue :: String -> StrValue value :: StrValue -> String data EnumValues EnumValue :: [StrValue] -> EnumValues values :: EnumValues -> [StrValue] -- | A schema variable. It is a field of a struct. -- bDISCLAIMER/b: there is some redundancy but the focus of -- this module is to make the templating easy. data SchemaVar SchemaVar :: String -> String -> Bool -> Maybe EnumValues -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> SchemaVar varName :: SchemaVar -> String varType :: SchemaVar -> String isList :: SchemaVar -> Bool isEnum :: SchemaVar -> Maybe EnumValues isStruct :: SchemaVar -> Bool isKey :: SchemaVar -> Bool isRequired :: SchemaVar -> Bool isHidden :: SchemaVar -> Bool isUnique :: SchemaVar -> Bool isUserLogin :: SchemaVar -> Bool -- | A schema is a struct (it has a name, a route, a write mode, etc...). data Schema Schema :: String -> Maybe StrValue -> Bool -> Bool -> String -> [SchemaVar] -> Schema schemaName :: Schema -> String schemaRoute :: Schema -> Maybe StrValue writable :: Schema -> Bool hasKeyField :: Schema -> Bool keyField :: Schema -> String schemaVars :: Schema -> [SchemaVar] -- | A service has a name, a version, and a list of Schema data Service Service :: String -> String -> Bool -> [Schema] -> Service name :: Service -> String version :: Service -> String requiresAuth :: Service -> Bool schema :: Service -> [Schema] -- | Given a template and a service object, render the template. render :: String -> Service -> IO Text instance Arbitrary EnumValues instance Arbitrary SchemaVar instance Arbitrary Schema instance Arbitrary StrValue instance Arbitrary Service instance Typeable StrValue instance Typeable EnumValues instance Typeable SchemaVar instance Typeable Schema instance Typeable Service instance Show StrValue instance Data StrValue instance Eq StrValue instance Show EnumValues instance Data EnumValues instance Eq EnumValues instance Show SchemaVar instance Data SchemaVar instance Eq SchemaVar instance Show Schema instance Data Schema instance Show Service instance Data Service module Language.ErrM data Err a Ok :: a -> Err a Bad :: String -> Err a instance Read a => Read (Err a) instance Show a => Show (Err a) instance Eq a => Eq (Err a) instance Ord a => Ord (Err a) instance Alternative Err instance MonadPlus Err instance Functor Err instance Applicative Err instance Monad Err module Language.Abs newtype Ident Ident :: String -> Ident newtype VerIdent VerIdent :: String -> VerIdent newtype RouteIdent RouteIdent :: String -> RouteIdent data Specification Spec :: Name -> Version -> Modules -> [EnumType] -> [StructType] -> [Resource] -> Specification data Name Nm :: Ident -> Name data Version Ver :: VerIdent -> Version data Modules EmptyMods :: Modules Mods :: [Ident] -> Modules data EnumType DefEnum :: Ident -> [EnumVal] -> EnumType data StructType DefStr :: Ident -> [Field] -> StructType data Resource Res :: Ident -> RouteIdent -> Mode -> Resource data Mode ReadOnly :: Mode Write :: Mode data Field FDef :: [Annotation] -> Ident -> FType -> Field data FType FString :: FType FInt :: FType FLong :: FType FDouble :: FType FDefined :: Ident -> FType FList :: FType -> FType data Annotation Ann :: Ident -> Annotation data EnumVal EnVal :: Ident -> EnumVal instance Eq Ident instance Ord Ident instance Show Ident instance Read Ident instance Eq VerIdent instance Ord VerIdent instance Show VerIdent instance Read VerIdent instance Eq RouteIdent instance Ord RouteIdent instance Show RouteIdent instance Read RouteIdent instance Eq Name instance Ord Name instance Show Name instance Read Name instance Eq Version instance Ord Version instance Show Version instance Read Version instance Eq Modules instance Ord Modules instance Show Modules instance Read Modules instance Eq Mode instance Ord Mode instance Show Mode instance Read Mode instance Eq Resource instance Ord Resource instance Show Resource instance Read Resource instance Eq FType instance Ord FType instance Show FType instance Read FType instance Eq Annotation instance Ord Annotation instance Show Annotation instance Read Annotation instance Eq Field instance Ord Field instance Show Field instance Read Field instance Eq StructType instance Ord StructType instance Show StructType instance Read StructType instance Eq EnumVal instance Ord EnumVal instance Show EnumVal instance Read EnumVal instance Eq EnumType instance Ord EnumType instance Show EnumType instance Read EnumType instance Eq Specification instance Ord Specification instance Show Specification instance Read Specification module Language.Par newtype HappyAbsSyn HappyAbsSyn :: HappyAny -> HappyAbsSyn type HappyAny = Any happyIn22 :: (Ident) -> (HappyAbsSyn) happyOut22 :: (HappyAbsSyn) -> (Ident) happyIn23 :: (VerIdent) -> (HappyAbsSyn) happyOut23 :: (HappyAbsSyn) -> (VerIdent) happyIn24 :: (RouteIdent) -> (HappyAbsSyn) happyOut24 :: (HappyAbsSyn) -> (RouteIdent) happyIn25 :: (Specification) -> (HappyAbsSyn) happyOut25 :: (HappyAbsSyn) -> (Specification) happyIn26 :: (Name) -> (HappyAbsSyn) happyOut26 :: (HappyAbsSyn) -> (Name) happyIn27 :: (Version) -> (HappyAbsSyn) happyOut27 :: (HappyAbsSyn) -> (Version) happyIn28 :: (Modules) -> (HappyAbsSyn) happyOut28 :: (HappyAbsSyn) -> (Modules) happyIn29 :: (EnumType) -> (HappyAbsSyn) happyOut29 :: (HappyAbsSyn) -> (EnumType) happyIn30 :: (StructType) -> (HappyAbsSyn) happyOut30 :: (HappyAbsSyn) -> (StructType) happyIn31 :: (Resource) -> (HappyAbsSyn) happyOut31 :: (HappyAbsSyn) -> (Resource) happyIn32 :: (Mode) -> (HappyAbsSyn) happyOut32 :: (HappyAbsSyn) -> (Mode) happyIn33 :: (Field) -> (HappyAbsSyn) happyOut33 :: (HappyAbsSyn) -> (Field) happyIn34 :: (FType) -> (HappyAbsSyn) happyOut34 :: (HappyAbsSyn) -> (FType) happyIn35 :: (Annotation) -> (HappyAbsSyn) happyOut35 :: (HappyAbsSyn) -> (Annotation) happyIn36 :: (EnumVal) -> (HappyAbsSyn) happyOut36 :: (HappyAbsSyn) -> (EnumVal) happyIn37 :: ([EnumType]) -> (HappyAbsSyn) happyOut37 :: (HappyAbsSyn) -> ([EnumType]) happyIn38 :: ([Field]) -> (HappyAbsSyn) happyOut38 :: (HappyAbsSyn) -> ([Field]) happyIn39 :: ([StructType]) -> (HappyAbsSyn) happyOut39 :: (HappyAbsSyn) -> ([StructType]) happyIn40 :: ([Resource]) -> (HappyAbsSyn) happyOut40 :: (HappyAbsSyn) -> ([Resource]) happyIn41 :: ([EnumVal]) -> (HappyAbsSyn) happyOut41 :: (HappyAbsSyn) -> ([EnumVal]) happyIn42 :: ([Annotation]) -> (HappyAbsSyn) happyOut42 :: (HappyAbsSyn) -> ([Annotation]) happyIn43 :: ([Ident]) -> (HappyAbsSyn) happyOut43 :: (HappyAbsSyn) -> ([Ident]) happyInTok :: (Token) -> (HappyAbsSyn) happyOutTok :: (HappyAbsSyn) -> (Token) happyActOffsets :: HappyAddr happyGotoOffsets :: HappyAddr happyDefActions :: HappyAddr happyCheck :: HappyAddr happyTable :: HappyAddr happyReduceArr :: Array Int (Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn) happy_n_terms :: Int happy_n_nonterms :: Int happyReduce_19 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_19 :: HappyAbsSyn -> HappyAbsSyn happyReduce_20 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_20 :: HappyAbsSyn -> HappyAbsSyn happyReduce_21 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_21 :: HappyAbsSyn -> HappyAbsSyn happyReduce_22 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_22 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_23 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_23 :: HappyAbsSyn -> t -> t1 -> HappyAbsSyn happyReduce_24 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_24 :: HappyAbsSyn -> t -> t1 -> HappyAbsSyn happyReduce_25 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_25 :: HappyAbsSyn happyReduce_26 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_26 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_27 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_27 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_28 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_28 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_29 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_29 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_30 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_30 :: t -> HappyAbsSyn happyReduce_31 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_31 :: HappyAbsSyn happyReduce_32 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_32 :: HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn happyReduce_33 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_33 :: t -> HappyAbsSyn happyReduce_34 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_34 :: t -> HappyAbsSyn happyReduce_35 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_35 :: t -> HappyAbsSyn happyReduce_36 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_36 :: t -> HappyAbsSyn happyReduce_37 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_37 :: HappyAbsSyn -> HappyAbsSyn happyReduce_38 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_38 :: t -> HappyAbsSyn -> t1 -> HappyAbsSyn happyReduce_39 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_39 :: HappyAbsSyn -> t -> HappyAbsSyn happyReduce_40 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_40 :: HappyAbsSyn -> HappyAbsSyn happyReduce_41 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_41 :: HappyAbsSyn happyReduce_42 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_42 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_43 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_43 :: HappyAbsSyn -> HappyAbsSyn happyReduce_44 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_44 :: HappyAbsSyn -> t -> HappyAbsSyn -> HappyAbsSyn happyReduce_45 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_45 :: HappyAbsSyn -> HappyAbsSyn happyReduce_46 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_46 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_47 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_47 :: HappyAbsSyn -> HappyAbsSyn happyReduce_48 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_48 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_49 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_49 :: HappyAbsSyn -> HappyAbsSyn happyReduce_50 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_50 :: HappyAbsSyn -> t -> HappyAbsSyn -> HappyAbsSyn happyReduce_51 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_51 :: HappyAbsSyn happyReduce_52 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_52 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyReduce_53 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_53 :: HappyAbsSyn -> HappyAbsSyn happyReduce_54 :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduction_54 :: HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn happyNewToken :: Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyError_ :: Int# -> Token -> [Token] -> Err a happyThen :: Err a -> (a -> Err b) -> Err b happyReturn :: a -> Err a happyThen1 :: Err a -> (a -> t -> Err b) -> t -> Err b happyReturn1 :: a -> b -> Err a happyError' :: [(Token)] -> Err a pSpecification :: [Token] -> Err Specification pName :: [Token] -> Err Name pVersion :: [Token] -> Err Version pModules :: [Token] -> Err Modules pEnumType :: [Token] -> Err EnumType pStructType :: [Token] -> Err StructType pResource :: [Token] -> Err Resource pMode :: [Token] -> Err Mode pField :: [Token] -> Err Field pFType :: [Token] -> Err FType pAnnotation :: [Token] -> Err Annotation pEnumVal :: [Token] -> Err EnumVal pListEnumType :: [Token] -> Err [EnumType] pListField :: [Token] -> Err [Field] pListStructType :: [Token] -> Err [StructType] pListResource :: [Token] -> Err [Resource] pListEnumVal :: [Token] -> Err [EnumVal] pListAnnotation :: [Token] -> Err [Annotation] pListIdent :: [Token] -> Err [Ident] happySeq :: a -> b -> b returnM :: a -> Err a thenM :: Err a -> (a -> Err b) -> Err b happyError :: [Token] -> Err a myLexer :: String -> [Token] data Happy_IntList HappyCons :: Int# -> Happy_IntList -> Happy_IntList data HappyStk a HappyStk :: a -> (HappyStk a) -> HappyStk a happyParse :: Int# -> [Token] -> Err HappyAbsSyn happyAccept :: Int# -> t -> Int# -> t1 -> HappyStk a -> b -> Err a happyDoAction :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn indexShortOffAddr :: HappyAddr -> Int# -> Int# data HappyAddr HappyA# :: Addr# -> HappyAddr happyShift :: Int# -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happySpecReduce_0 :: Int# -> HappyAbsSyn -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happySpecReduce_1 :: Int# -> (HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happySpecReduce_2 :: Int# -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happySpecReduce_3 :: Int# -> (HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn -> HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyReduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> HappyStk HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyMonadReduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> Token -> Err HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyMonad2Reduce :: Int# -> Int# -> (HappyStk HappyAbsSyn -> Token -> Err HappyAbsSyn) -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyDrop :: Int# -> Happy_IntList -> Happy_IntList happyDropStk :: Int# -> HappyStk t -> HappyStk t happyGoto :: Int# -> Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn happyFail :: Int# -> Token -> Int# -> Happy_IntList -> HappyStk HappyAbsSyn -> [Token] -> Err HappyAbsSyn notHappyAtAll :: a happyTcHack :: Int# -> a -> a happyDoSeq :: a -> b -> b happyDontSeq :: a -> b -> b module Data.DiGraph data Ord a => Graph a empty :: Ord a => Graph a create :: Ord a => [(a, [a])] -> Graph a addNode :: Ord a => a -> Graph a -> Graph a addAllNodes :: Ord a => [a] -> Graph a -> Graph a addNeighbors :: Ord a => a -> [a] -> Graph a -> Graph a addAllNeighbors :: Ord a => [(a, [a])] -> Graph a -> Graph a contains :: Ord a => Graph a -> a -> Bool deleteNode :: Ord a => a -> Graph a -> Graph a getNeighbors :: Ord a => Graph a -> a -> Maybe [a] getNodes :: Ord a => Graph a -> [a] isEmpty :: Ord a => Graph a -> Bool hasCycle :: Ord a => Graph a -> Bool generateInverseDependencyList :: Ord a => Graph a -> [a] instance Ord a => Eq (Graph a) instance (Ord a, Show a) => Show (Graph a) -- | Defines an api spec (to be built after the static checking of the AST) -- and helper methods over it. module TypeCheck.ApiSpec type Id = String -- | The route of a resource. type Route = String -- | An enum value. type EnumValue = String -- | An enum is a list of values. type EnumInfo = [EnumValue] -- | A field modifier. data Modifier -- | The field will not be returned when read Hidden :: Modifier -- | The field cannot be modified Immutable :: Modifier -- | The field can't be absent Required :: Modifier -- | The field is the primary key (thus Unique as well) PrimaryKey :: Modifier -- | The field can't have repeated values throughout the collection Unique :: Modifier -- | The field value will contain the user's login UserLogin :: Modifier -- | A field has a type, an identifier and a set of modifiers. newtype FieldInfo FI :: (Id, Type, Set Modifier) -> FieldInfo -- | A struct is a list of fields. type StructInfo = [FieldInfo] -- | A resource has a route and a write mode. type ResourceInfo = (Route, Writable) -- | A type can be a primitive one (int, long, double, bool...), an enum, a -- struct, or a list of another type. data Type TInt :: Type TLong :: Type TFloat :: Type TDouble :: Type TBool :: Type TString :: Type TEnum :: Id -> Type TStruct :: Id -> Type TList :: Type -> Type -- | Map from enum id to its info. type Enums = Map Id EnumInfo -- | Map from struct id to its info. type Structs = [(Id, StructInfo)] type Resources = Map Id ResourceInfo -- | Writable is a boolean type. type Writable = Bool -- | The spec of an api is a set of enums and structs, along with the -- resources. data ApiSpec AS :: String -> String -> Bool -> Enums -> Structs -> Resources -> ApiSpec -- | Name of the service name :: ApiSpec -> String -- | Version of the service version :: ApiSpec -> String -- | Whether it should support authentication or not requiresAuth :: ApiSpec -> Bool -- | Information about the user defined enums enums :: ApiSpec -> Enums -- | Information about the user defined structs structs :: ApiSpec -> Structs -- | Information about the resources defined resources :: ApiSpec -> Resources -- | Gets the primary key of a struct if it was specified. getPrimaryKey :: StructInfo -> Maybe Id -- | Finds out if a fieldinfo is relative to a struct isStructField :: FieldInfo -> Bool -- | Find outs if a type is a struct isStruct :: Type -> Bool -- | Get the name of a struct strName :: Type -> String -- | Generates a non-empty arbitrary String. nonEmptyString :: Gen String -- | Generates an arbitrary FieldInfo, making sure that the ids used -- for enums and structs are valid. generateRandomFieldInfo :: [Id] -> [Id] -> Gen FieldInfo instance Arbitrary Type instance Arbitrary ApiSpec instance Show ApiSpec instance Eq Type instance Ord Type instance Show Type instance Show FieldInfo instance Eq FieldInfo instance Ord FieldInfo instance CoArbitrary Type instance Arbitrary Modifier instance Eq Modifier instance Ord Modifier instance Show Modifier -- | Contains useful methods to work with the defined types (both from the -- language specification/bnfc and the ApiSpec module). module LangUtils -- | Extracts the name of the Specification (AST). specName :: Specification -> String -- | Extracts the version of the Specification (AST). specVersion :: Specification -> String -- | Extracts the name of an enum. enumName :: EnumType -> String -- | Extracts the values of an enum. enumVals :: EnumType -> [EnumVal] enumValName :: EnumVal -> String -- | Extracts the name of a struct. strName :: StructType -> String -- | Extracts the fields of a struct. strFields :: StructType -> [Field] -- | Extracts the name of a resource. resName :: Resource -> String -- | Extracts the route of a resource. resRoute :: Resource -> String -- | Extracts the write mode of a resource. resIsWritable :: Resource -> Bool -- | Extracts the name of a field. fieldName :: Field -> String -- | Extracts the annotation of a field. fieldAnnotations :: Field -> [Annotation] -- | Extracts the type (defined by the language specification/bnfc) of a -- field. fieldType :: Field -> FType -- | Extracts the type (defined in ApiSpec) of a field. fieldSpecType :: (Set String, Set String) -> FType -> Type -- | Static checking of the input file. module TypeCheck.StaticCheck -- | Checks the definition for: * Name clashes * Undefined types and -- returns a better representation of the api spec. staticCheck :: Specification -> Err ApiSpec -- | Generation of Service objects from the specification. module Generation.ServiceGenerator -- | Transforms an api specification to a service. generateService :: ApiSpec -> (Type -> String) -> Service -- | Contains the generation logic and functions of the different possible -- outputs. module Generation.OutputGenerator -- | A function that generates the target. type GenerationFunction = FilePath -> ApiSpec -> IO () -- | Target generation function. generateJSServer :: GenerationFunction -- | Target generation function. generateJSClient :: GenerationFunction -- | Target generation function. generatePythonClient :: GenerationFunction