{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
-{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE GADTs #-}
-{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
import Data.Monoid (Monoid(..))
import Data.Semigroup (Semigroup(..))
import Data.Text (Text)
-import Data.Typeable ()
+import Data.Typeable (Typeable)
import System.FilePath (FilePath)
import System.IO (IO)
import Text.Show (Show)
import Hcompta.LCC.Compta
import Hcompta.LCC.Posting
import Hcompta.LCC.Transaction
+import Hcompta.LCC.Sym.Compta ()
import Hcompta.LCC.Grammar
import Hcompta.LCC.Megaparsec ()
import qualified Hcompta.LCC.Lib.Strict as S
+import qualified Control.Monad.Classes as MC
+
read ::
forall ss src j e m a.
Source src =>
FilePath ->
(Transaction -> j -> j) ->
IO (( Either (P.ParseError Char P.Dec)
- (S.Either [At src (Error_Journal src)]
+ (S.Either [At src (Error_Compta src)]
(CanonFile, Journal j))
, Context_Read src j )
, Context_Sym src ss )
-readJournal path consTxn = readFile path $ read $ g_journal @ss consTxn
+readJournal path consTxn = readFile path $ read $ g_compta @ss consTxn
readCompta ::
- forall src ss j g.
- g ~ P.ParsecT P.Dec Text (S.StateT (Context_Read src j) (S.StateT (Context_Sym src ss) IO)) =>
+ forall src ss' ss j g.
+ ss ~ (Sym.Proxy (Compta src ss') ': ss') =>
+ g ~ P.ParsecT P.Dec Text
+ (S.StateT (Context_Read src j)
+ (S.StateT (Context_Sym src ss)
+ IO)) =>
j ~ Map Date [Transaction] =>
Monoid j =>
Source src =>
Gram_Source src g =>
Sym.Gram_Term_Atoms src ss g =>
Sym.Inj_Name2Type ss =>
+ Typeable ss' =>
+ Typeable src =>
Sym.Inj_Modules src ss =>
FilePath ->
-- (Transaction -> j -> j) ->
- IO (Either (Error_Read src) (Compta src ss, [At src Warning_Journal]))
+ IO (Either (Error_Read src) (Compta src ss' j, [At src Warning_Compta]))
readCompta path = do
((r, ctxRead), ctxSym) <-
readFile path $ read $
- g_journal @ss (\t -> Map.insertWith (<>) (transaction_date t) [t])
+ g_compta @ss (\t -> Map.insertWith (<>) (transaction_date t) [t])
return $ case r of
Left err -> Left $ Error_Read_Syntax err
Right r' ->
-- * Type 'Error_Read'
data Error_Read src
= Error_Read_Syntax (P.ParseError Char P.Dec)
- | Error_Read_Semantic [At src (Error_Journal src)]
+ | Error_Read_Semantic [At src (Error_Compta src)]
deriving (Eq, Show)
{-