{-# OPTIONS_GHC -fno-warn-orphans #-}
module Composite.Aeson.Path where

import Composite.Aeson(JsonFormat, aesonJsonFormat, DefaultJsonFormat(defaultJsonFormat))
import Path(Path, Rel, Abs, File, Dir)

relFileJsonFormat :: JsonFormat e (Path Rel File)
relFileJsonFormat = aesonJsonFormat

relDirJsonFormat :: JsonFormat e (Path Rel Dir)
relDirJsonFormat = aesonJsonFormat

absFileJsonFormat :: JsonFormat e (Path Abs File)
absFileJsonFormat = aesonJsonFormat

absDirJsonFormat :: JsonFormat e (Path Abs Dir)
absDirJsonFormat = aesonJsonFormat

instance DefaultJsonFormat (Path Rel File) where
  defaultJsonFormat = relFileJsonFormat

instance DefaultJsonFormat (Path Rel Dir) where
  defaultJsonFormat = relDirJsonFormat

instance DefaultJsonFormat (Path Abs File) where
  defaultJsonFormat = absFileJsonFormat

instance DefaultJsonFormat (Path Abs Dir) where
  defaultJsonFormat = absDirJsonFormat