-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | RON-Schema -- -- Replicated Object Notation (RON), data types (RDT), and RON-Schema -- -- Typical usage: -- --
-- import RON.Data
-- import RON.Schema.TH
-- import RON.Storage.IO as Storage
--
-- [mkReplicated|
-- (struct_lww Note
-- active Boole
-- text RgaString)
-- |]
--
-- instance Collection Note where
-- collectionName = "note"
--
-- main :: IO ()
-- main = do
-- let dataDir = "./data/"
-- h <- Storage.newHandle dataDir
-- runStorage h $ do
-- obj <- newObject
-- Note{active = True, text = "Write a task manager"}
-- createDocument obj
--
@package ron-schema
@version 0.5
module RON.Schema
data CaseTransform
TitleCase :: CaseTransform
data Declaration stage
DEnum :: TEnum -> Declaration stage
DOpaque :: Opaque -> Declaration stage
DStructLww :: StructLww stage -> Declaration stage
newtype Field stage
Field :: UseType stage -> Field stage
[fieldType] :: Field stage -> UseType stage
data Opaque
Opaque :: Bool -> Text -> OpaqueAnnotations -> Opaque
[opaqueIsObject] :: Opaque -> Bool
[opaqueName] :: Opaque -> Text
[opaqueAnnotations] :: Opaque -> OpaqueAnnotations
newtype OpaqueAnnotations
OpaqueAnnotations :: Maybe Text -> OpaqueAnnotations
[oaHaskellType] :: OpaqueAnnotations -> Maybe Text
data RonType
TAtom :: TAtom -> RonType
TComposite :: TComposite -> RonType
TObject :: TObject -> RonType
TOpaque :: Opaque -> RonType
type family Schema (stage :: Stage)
data Stage
Parsed :: Stage
Resolved :: Stage
data StructAnnotations
StructAnnotations :: Text -> Maybe CaseTransform -> StructAnnotations
[saHaskellFieldPrefix] :: StructAnnotations -> Text
[saHaskellFieldCaseTransform] :: StructAnnotations -> Maybe CaseTransform
data StructLww stage
StructLww :: Text -> Map Text (Field stage) -> StructAnnotations -> StructLww stage
[structName] :: StructLww stage -> Text
[structFields] :: StructLww stage -> Map Text (Field stage)
[structAnnotations] :: StructLww stage -> StructAnnotations
data TAtom
TAInteger :: TAtom
TAString :: TAtom
data TComposite
TOption :: RonType -> TComposite
TEnum :: TEnum -> TComposite
data TEnum
Enum :: Text -> [Text] -> TEnum
[enumName] :: TEnum -> Text
[enumItems] :: TEnum -> [Text]
data TObject
TORSet :: RonType -> TObject
TRga :: RonType -> TObject
TStructLww :: StructLww 'Resolved -> TObject
TVersionVector :: TObject
data TypeExpr
Use :: TypeName -> TypeExpr
Apply :: TypeName -> [TypeExpr] -> TypeExpr
type TypeName = Text
type family UseType (stage :: Stage)
defaultOpaqueAnnotations :: OpaqueAnnotations
defaultStructAnnotations :: StructAnnotations
opaqueAtoms :: Text -> OpaqueAnnotations -> RonType
opaqueAtoms_ :: Text -> RonType
opaqueObject :: Text -> OpaqueAnnotations -> RonType
instance GHC.Show.Show RON.Schema.TComposite
instance GHC.Show.Show RON.Schema.TObject
instance GHC.Show.Show RON.Schema.RonType
instance GHC.Show.Show RON.Schema.Opaque
instance GHC.Show.Show RON.Schema.OpaqueAnnotations
instance GHC.Show.Show RON.Schema.StructAnnotations
instance GHC.Show.Show RON.Schema.CaseTransform
instance GHC.Show.Show RON.Schema.TEnum
instance GHC.Show.Show RON.Schema.TAtom
instance GHC.Show.Show RON.Schema.TypeExpr
instance GHC.Show.Show (RON.Schema.UseType stage) => GHC.Show.Show (RON.Schema.StructLww stage)
instance GHC.Show.Show (RON.Schema.UseType stage) => GHC.Show.Show (RON.Schema.Field stage)
instance GHC.Show.Show (RON.Schema.UseType stage) => GHC.Show.Show (RON.Schema.Declaration stage)
module RON.Schema.TH
-- | QuasiQuoter to generate Haskell types from RON-Schema
mkReplicated :: HasCallStack => QuasiQuoter
-- | Generate Haskell types from RON-Schema
mkReplicated' :: HasCallStack => Schema 'Resolved -> DecsQ