You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.8 KiB
50 lines
1.8 KiB
{-# LANGUAGE OverloadedStrings #-}
|
|
{-# LANGUAGE RecordWildCards #-}
|
|
|
|
import Data.Aeson as AE
|
|
import Data.ByteString.Lazy as BL
|
|
import Data.ByteString.Lazy.Char8 as BL8
|
|
import Prelude as P
|
|
import Worldcup.Countries
|
|
import Worldcup.Events
|
|
import Worldcup.EventsTeams
|
|
import Worldcup.Games
|
|
import Worldcup.Rounds
|
|
import Worldcup.Teams
|
|
import Worldcup.Tourneys
|
|
|
|
data WorldcupData = WorldcupData {
|
|
worldcupCountries :: Countries,
|
|
worldcupRounds :: Rounds,
|
|
worldcupTourneys :: Tourneys
|
|
} deriving (Show)
|
|
|
|
instance ToJSON WorldcupData where
|
|
toJSON WorldcupData{..} = object [
|
|
"countries" .= worldcupCountries,
|
|
"rounds" .= worldcupRounds,
|
|
"tourneys" .= worldcupTourneys ]
|
|
|
|
main :: IO ()
|
|
main = do
|
|
dataTeams <- BL.readFile "./data/teams.json"
|
|
dataEventsTeams <- BL.readFile "./data/events_teams.json"
|
|
dataCountries <- BL.readFile "./data/countries.json"
|
|
dataGames <- BL.readFile "./data/games.json"
|
|
dataEvents <- BL.readFile "./data/events.json"
|
|
dataRounds <- BL.readFile "./data/rounds.json"
|
|
|
|
let teams = parseTeams (AE.eitherDecode dataTeams)
|
|
let events = parseEvents (AE.eitherDecode dataEvents)
|
|
let eventsteams = parseEventsTeams (AE.eitherDecode dataEventsTeams)
|
|
let games = parseGames (AE.eitherDecode dataGames)
|
|
let countries = parseCountries (AE.eitherDecode dataCountries)
|
|
let rounds = parseRounds (AE.eitherDecode dataRounds)
|
|
|
|
let tourneys = buildTourneys countries rounds eventsteams teams games events
|
|
let worldcup = WorldcupData countries rounds tourneys
|
|
|
|
let encoded = encode worldcup
|
|
BL8.putStrLn encoded
|
|
BL8.putStrLn "Writing worldcup.json"
|
|
BL8.writeFile "worldcup.json" encoded
|
|
|