hydrogen-data-0.5.1: src/Hydrogen/Data.hs
module Hydrogen.Data (
emptyNode
, loadData
, merge
, Data
) where
import Hydrogen.Prelude
import Hydrogen.Syntax.Parser
import Hydrogen.Data.Parser
import Hydrogen.Data.Types
import Hydrogen.Util.Parsec hiding (parse)
import qualified Data.Map as Map
merge :: Data -> Data -> Data
merge d1 d2 = case (d1, d2) of
(DNode m1 l1, DNode m2 l2) -> DNode (Map.unionWith merge m1 m2) (l1 ++ l2)
(_, dx) -> dx
emptyNode :: Data
emptyNode = DNode Map.empty []
loadData :: FilePath -> IO (Either SomethingBad Data)
loadData fp = (parseData <+< parse fp) <$> readFile fp