yokutango-leaflet/yokutango2tex.hs

49 lines
1.5 KiB
Haskell
Raw Normal View History

2023-03-19 15:10:58 +01:00
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
import Data.Aeson
import GHC.Generics
import System.Directory
import System.Environment
import System.FilePath
import qualified Data.ByteString.Lazy as BS
data NorwegianWord = NorwegianWord { word :: String
, hints :: Maybe [String]
} deriving (Generic, Show)
instance FromJSON NorwegianWord
instance ToJSON NorwegianWord where
toEncoding = genericToEncoding defaultOptions
data JapaneseWord = JapaneseWord { word :: String
, romaji :: Maybe String
, hints :: Maybe [String]
} deriving (Generic, Show)
instance FromJSON JapaneseWord
instance ToJSON JapaneseWord where
toEncoding = genericToEncoding defaultOptions
data Card = Card { norwegian :: [NorwegianWord]
, japanese :: [JapaneseWord]
} deriving (Generic, Show)
instance FromJSON Card
instance ToJSON Card where
toEncoding = genericToEncoding defaultOptions
readJsonFile :: FilePath -> IO (Either String [Card])
readJsonFile path = eitherDecode <$> BS.readFile path
main :: IO ()
main = do
dir <- head <$> getArgs
filePaths <- map (\x -> joinPath [dir, x]) <$> listDirectory dir
jsonFiles <- mapM readJsonFile filePaths
-- case jsonFiles of
-- Right cards -> mapM_ print cards
-- Left err -> putStr err