lib: remove the ErroringJournalParser type
				
					
				
			This commit is contained in:
		
							parent
							
								
									39e7ef0311
								
							
						
					
					
						commit
						ff2b042c7e
					
				| @ -29,8 +29,6 @@ module Hledger.Read.Common ( | |||||||
|   rtp, |   rtp, | ||||||
|   runJournalParser, |   runJournalParser, | ||||||
|   rjp, |   rjp, | ||||||
|   runErroringJournalParser, |  | ||||||
|   rejp, |  | ||||||
|   genericSourcePos, |   genericSourcePos, | ||||||
|   journalSourcePos, |   journalSourcePos, | ||||||
|   generateAutomaticPostings, |   generateAutomaticPostings, | ||||||
| @ -95,7 +93,7 @@ where | |||||||
| import Prelude () | import Prelude () | ||||||
| import "base-compat-batteries" Prelude.Compat hiding (readFile) | import "base-compat-batteries" Prelude.Compat hiding (readFile) | ||||||
| import "base-compat-batteries" Control.Monad.Compat | import "base-compat-batteries" Control.Monad.Compat | ||||||
| import Control.Monad.Except (ExceptT(..), runExceptT, throwError) --, catchError) | import Control.Monad.Except (ExceptT(..), throwError) | ||||||
| import Control.Monad.State.Strict | import Control.Monad.State.Strict | ||||||
| import Data.Bifunctor (bimap, second) | import Data.Bifunctor (bimap, second) | ||||||
| import Data.Char | import Data.Char | ||||||
| @ -192,12 +190,6 @@ runJournalParser, rjp :: Monad m => JournalParser m a -> Text -> m (Either (Pars | |||||||
| runJournalParser p t = runParserT (evalStateT p mempty) "" t | runJournalParser p t = runParserT (evalStateT p mempty) "" t | ||||||
| rjp = runJournalParser | rjp = runJournalParser | ||||||
| 
 | 
 | ||||||
| -- | Run an error-raising journal parser with a null journal-parsing state. |  | ||||||
| runErroringJournalParser, rejp :: Monad m => ErroringJournalParser m a -> Text -> m (Either String a) |  | ||||||
| runErroringJournalParser p t = runExceptT $ |  | ||||||
|   runJournalParser p t >>= either (throwError . parseErrorPretty) return |  | ||||||
| rejp = runErroringJournalParser |  | ||||||
| 
 |  | ||||||
| genericSourcePos :: SourcePos -> GenericSourcePos | genericSourcePos :: SourcePos -> GenericSourcePos | ||||||
| genericSourcePos p = GenericSourcePos (sourceName p) (fromIntegral . unPos $ sourceLine p) (fromIntegral . unPos $ sourceColumn p) | genericSourcePos p = GenericSourcePos (sourceName p) (fromIntegral . unPos $ sourceLine p) (fromIntegral . unPos $ sourceColumn p) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -42,8 +42,6 @@ module Hledger.Read.JournalReader ( | |||||||
|   parseAndFinaliseJournal, |   parseAndFinaliseJournal, | ||||||
|   runJournalParser, |   runJournalParser, | ||||||
|   rjp, |   rjp, | ||||||
|   runErroringJournalParser, |  | ||||||
|   rejp, |  | ||||||
| 
 | 
 | ||||||
|   -- * Parsers used elsewhere |   -- * Parsers used elsewhere | ||||||
|   getParentAccount, |   getParentAccount, | ||||||
| @ -136,7 +134,7 @@ aliasesFromOpts = map (\a -> fromparse $ runParser accountaliasp ("--alias "++qu | |||||||
| -- | A journal parser. Accumulates and returns a "ParsedJournal", | -- | A journal parser. Accumulates and returns a "ParsedJournal", | ||||||
| -- which should be finalised/validated before use. | -- which should be finalised/validated before use. | ||||||
| -- | -- | ||||||
| -- >>> rejp (journalp <* eof) "2015/1/1\n a  0\n" | -- >>> rjp (journalp <* eof) "2015/1/1\n a  0\n" | ||||||
| -- Right Journal  with 1 transactions, 1 accounts | -- Right Journal  with 1 transactions, 1 accounts | ||||||
| -- | -- | ||||||
| journalp :: MonadIO m => JournalParser m ParsedJournal | journalp :: MonadIO m => JournalParser m ParsedJournal | ||||||
| @ -262,17 +260,17 @@ indentedlinep = lift (skipSome spacenonewline) >> (rstrip <$> lift restofline) | |||||||
| 
 | 
 | ||||||
| -- | Parse a one-line or multi-line commodity directive. | -- | Parse a one-line or multi-line commodity directive. | ||||||
| -- | -- | ||||||
| -- >>> Right _ <- rejp commoditydirectivep "commodity $1.00" | -- >>> Right _ <- rjp commoditydirectivep "commodity $1.00" | ||||||
| -- >>> Right _ <- rejp commoditydirectivep "commodity $\n  format $1.00" | -- >>> Right _ <- rjp commoditydirectivep "commodity $\n  format $1.00" | ||||||
| -- >>> Right _ <- rejp commoditydirectivep "commodity $\n\n" -- a commodity with no format | -- >>> Right _ <- rjp commoditydirectivep "commodity $\n\n" -- a commodity with no format | ||||||
| -- >>> Right _ <- rejp commoditydirectivep "commodity $1.00\n  format $1.00" -- both, what happens ? | -- >>> Right _ <- rjp commoditydirectivep "commodity $1.00\n  format $1.00" -- both, what happens ? | ||||||
| commoditydirectivep :: JournalParser m () | commoditydirectivep :: JournalParser m () | ||||||
| commoditydirectivep = try commoditydirectiveonelinep <|> commoditydirectivemultilinep | commoditydirectivep = try commoditydirectiveonelinep <|> commoditydirectivemultilinep | ||||||
| 
 | 
 | ||||||
| -- | Parse a one-line commodity directive. | -- | Parse a one-line commodity directive. | ||||||
| -- | -- | ||||||
| -- >>> Right _ <- rejp commoditydirectiveonelinep "commodity $1.00" | -- >>> Right _ <- rjp commoditydirectiveonelinep "commodity $1.00" | ||||||
| -- >>> Right _ <- rejp commoditydirectiveonelinep "commodity $1.00 ; blah\n" | -- >>> Right _ <- rjp commoditydirectiveonelinep "commodity $1.00 ; blah\n" | ||||||
| commoditydirectiveonelinep :: JournalParser m () | commoditydirectiveonelinep :: JournalParser m () | ||||||
| commoditydirectiveonelinep = do | commoditydirectiveonelinep = do | ||||||
|   string "commodity" |   string "commodity" | ||||||
| @ -291,7 +289,7 @@ pleaseincludedecimalpoint = "to avoid ambiguity, please include a decimal point | |||||||
| 
 | 
 | ||||||
| -- | Parse a multi-line commodity directive, containing 0 or more format subdirectives. | -- | Parse a multi-line commodity directive, containing 0 or more format subdirectives. | ||||||
| -- | -- | ||||||
| -- >>> Right _ <- rejp commoditydirectivemultilinep "commodity $ ; blah \n  format $1.00 ; blah" | -- >>> Right _ <- rjp commoditydirectivemultilinep "commodity $ ; blah \n  format $1.00 ; blah" | ||||||
| commoditydirectivemultilinep :: JournalParser m () | commoditydirectivemultilinep :: JournalParser m () | ||||||
| commoditydirectivemultilinep = do | commoditydirectivemultilinep = do | ||||||
|   string "commodity" |   string "commodity" | ||||||
|  | |||||||
| @ -5,7 +5,6 @@ module Hledger.Utils.Parse ( | |||||||
|   SimpleTextParser, |   SimpleTextParser, | ||||||
|   TextParser, |   TextParser, | ||||||
|   JournalParser, |   JournalParser, | ||||||
|   ErroringJournalParser, |  | ||||||
| 
 | 
 | ||||||
|   choice', |   choice', | ||||||
|   choiceInState, |   choiceInState, | ||||||
| @ -28,7 +27,6 @@ module Hledger.Utils.Parse ( | |||||||
| ) | ) | ||||||
| where | where | ||||||
| 
 | 
 | ||||||
| import Control.Monad.Except |  | ||||||
| import Control.Monad.State.Strict (StateT, evalStateT) | import Control.Monad.State.Strict (StateT, evalStateT) | ||||||
| import Data.Char | import Data.Char | ||||||
| import Data.Functor.Identity (Identity(..)) | import Data.Functor.Identity (Identity(..)) | ||||||
| @ -54,9 +52,6 @@ type TextParser m a = ParsecT CustomErr Text m a | |||||||
| -- | A parser of text in some monad, with a journal as state. | -- | A parser of text in some monad, with a journal as state. | ||||||
| type JournalParser m a = StateT Journal (ParsecT CustomErr Text m) a | type JournalParser m a = StateT Journal (ParsecT CustomErr Text m) a | ||||||
| 
 | 
 | ||||||
| -- | A parser of text in some monad, with a journal as state, that can throw an error string mid-parse. |  | ||||||
| type ErroringJournalParser m a = StateT Journal (ParsecT CustomErr Text (ExceptT String m)) a |  | ||||||
| 
 |  | ||||||
| -- | Backtracking choice, use this when alternatives share a prefix. | -- | Backtracking choice, use this when alternatives share a prefix. | ||||||
| -- Consumes no input if all choices fail. | -- Consumes no input if all choices fail. | ||||||
| choice' :: [TextParser m a] -> TextParser m a | choice' :: [TextParser m a] -> TextParser m a | ||||||
|  | |||||||
| @ -175,8 +175,8 @@ rewrite opts@CliOpts{rawopts_=rawopts,reportopts_=ropts} j@Journal{jtxns=ts} = d | |||||||
|   outputFromOpts rawopts opts{reportopts_=ropts{query_=""}} j j' |   outputFromOpts rawopts opts{reportopts_=ropts{query_=""}} j j' | ||||||
| 
 | 
 | ||||||
| postingp' :: T.Text -> IO Posting | postingp' :: T.Text -> IO Posting | ||||||
| postingp' t = runErroringJournalParser (postingp Nothing <* eof) t' >>= \case | postingp' t = runJournalParser (postingp Nothing <* eof) t' >>= \case | ||||||
|         Left err -> fail err |         Left err -> fail $ parseErrorPretty' t' err | ||||||
|         Right p -> return p |         Right p -> return p | ||||||
|     where t' = " " <> t <> "\n" -- inject space and newline for proper parsing |     where t' = " " <> t <> "\n" -- inject space and newline for proper parsing | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user