Skip to content
Snippets Groups Projects
Commit b9572a96 authored by Alice Brenon's avatar Alice Brenon
Browse files

Commit library files used in scripts which should have been committed earlier

parent c1195363
No related branches found
No related tags found
No related merge requests found
{-# LANGUAGE DeriveGeneric, ExplicitNamespaces, NamedFieldPuns, OverloadedStrings #-}
module GEODE.Metadata.ParagraphRecord
( Paragraph(..)
, ParagraphRecord ) where
import Data.Aeson ((.=), FromJSON(..), ToJSON(..))
import Data.Aeson.KeyMap as KeyMap (singleton)
import Data.Csv
( (.:), FromNamedRecord(..), ToNamedRecord(..), namedField, namedRecord )
import GEODE.Metadata as Article
( type (@)(..), ArticleRecord, DefaultFields(..), HasDefaultHeader(..)
, Record(..), ToJSONObject(..), uid, relativePath)
import GHC.Generics (Generic)
import System.FilePath ((<.>))
newtype Paragraph = Paragraph { paragraph :: Int } deriving (Generic, Show)
instance FromJSON Paragraph
instance Record Paragraph where
uid = show . paragraph
relativePath (Paragraph {paragraph}) extension = show paragraph <.> extension
type ParagraphRecord = ArticleRecord @ Paragraph
instance FromNamedRecord Paragraph where
parseNamedRecord nr = Paragraph <$> nr .: "paragraph"
instance ToNamedRecord Paragraph where
toNamedRecord (Paragraph {paragraph}) =
namedRecord [ namedField "paragraph" paragraph ]
instance ToJSONObject Paragraph where
toJSONObject (Paragraph {paragraph}) =
KeyMap.singleton "paragraph" (toJSON paragraph)
toJSONPairs (Paragraph {paragraph}) = "paragraph" .= paragraph
instance HasDefaultHeader Paragraph where
defaultFields = DefaultFields ["paragraph"]
{-# LANGUAGE DeriveGeneric, ExplicitNamespaces, OverloadedStrings #-}
module GEODE.Metadata.ProdigyMeta
( ParagraphMeta
, ProdigyMeta(..) ) where
import Data.Aeson ((.=), FromJSON(..), ToJSON(..))
import Data.Aeson.KeyMap as KeyMap (fromList)
import Data.Csv (FromNamedRecord(..), ToNamedRecord(..))
import Data.Text (Text)
import GEODE.Metadata (type (@), DefaultFields(..), HasDefaultHeader(..), ToJSONObject(..))
import GEODE.Metadata.ParagraphRecord (ParagraphRecord)
import GHC.Generics (Generic)
data ProdigyMeta = ProdigyMeta
{ totalParagraphs :: Int
, headword :: Text } deriving (Generic, Show)
instance FromJSON ProdigyMeta
instance ToJSONObject ProdigyMeta where
toJSONObject (ProdigyMeta {totalParagraphs, headword}) = KeyMap.fromList
[ ("totalParagraphs", toJSON totalParagraphs)
, ("headword", toJSON headword) ]
toJSONPairs (ProdigyMeta {totalParagraphs, headword}) =
"totalParagraphs" .= totalParagraphs
<> "headword" .= headword
instance ToNamedRecord ProdigyMeta
instance FromNamedRecord ProdigyMeta
instance HasDefaultHeader ProdigyMeta where
defaultFields = DefaultFields ["totalParagraphs", "headword"]
type ParagraphMeta = ParagraphRecord @ ProdigyMeta
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment