-- 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