journal: add p suffix to date[time] parsers
This commit is contained in:
parent
a0010a294f
commit
3e27f4fb8b
@ -276,7 +276,7 @@ historicalpricedirective :: GenParser Char JournalContext HistoricalPrice
|
||||
historicalpricedirective = do
|
||||
char 'P' <?> "historical price"
|
||||
many spacenonewline
|
||||
date <- try (do {LocalTime d _ <- datetimep; return d}) <|> date -- a time is ignored
|
||||
date <- try (do {LocalTime d _ <- datetimep; return d}) <|> datep -- a time is ignored
|
||||
many1 spacenonewline
|
||||
symbol <- commoditysymbol
|
||||
many spacenonewline
|
||||
@ -325,8 +325,8 @@ transaction :: GenParser Char JournalContext Transaction
|
||||
transaction = do
|
||||
-- ptrace "transaction"
|
||||
sourcepos <- getPosition
|
||||
date <- date <?> "transaction"
|
||||
edate <- optionMaybe (secondarydate date) <?> "secondary date"
|
||||
date <- datep <?> "transaction"
|
||||
edate <- optionMaybe (secondarydatep date) <?> "secondary date"
|
||||
status <- status <?> "cleared flag"
|
||||
code <- codep <?> "transaction code"
|
||||
description <- descriptionp >>= return . strip
|
||||
@ -425,8 +425,8 @@ test_transaction = do
|
||||
|
||||
-- | Parse a date in YYYY/MM/DD format. Fewer digits are allowed. The year
|
||||
-- may be omitted if a default year has already been set.
|
||||
date :: GenParser Char JournalContext Day
|
||||
date = do
|
||||
datep :: GenParser Char JournalContext Day
|
||||
datep = do
|
||||
-- hacky: try to ensure precise errors for invalid dates
|
||||
-- XXX reported error position is not too good
|
||||
-- pos <- getPosition
|
||||
@ -450,7 +450,7 @@ date = do
|
||||
-- a default year has already been set.
|
||||
datetimep :: GenParser Char JournalContext LocalTime
|
||||
datetimep = do
|
||||
day <- date
|
||||
day <- datep
|
||||
many1 spacenonewline
|
||||
h <- many1 digit
|
||||
let h' = read h
|
||||
@ -476,8 +476,8 @@ datetimep = do
|
||||
-- return $ localTimeToUTC tz' $ LocalTime day $ TimeOfDay h' m' (fromIntegral s')
|
||||
return $ LocalTime day $ TimeOfDay h' m' (fromIntegral s')
|
||||
|
||||
secondarydate :: Day -> GenParser Char JournalContext Day
|
||||
secondarydate primarydate = do
|
||||
secondarydatep :: Day -> GenParser Char JournalContext Day
|
||||
secondarydatep primarydate = do
|
||||
char '='
|
||||
-- kludgy way to use primary date for default year
|
||||
let withDefaultYear d p = do
|
||||
@ -486,7 +486,7 @@ secondarydate primarydate = do
|
||||
r <- p
|
||||
when (isJust y) $ setYear $ fromJust y
|
||||
return r
|
||||
edate <- withDefaultYear primarydate date
|
||||
edate <- withDefaultYear primarydate datep
|
||||
return edate
|
||||
|
||||
status :: GenParser Char JournalContext Bool
|
||||
@ -521,8 +521,8 @@ postingp = do
|
||||
comment <- try followingcommentp <|> (newline >> return "")
|
||||
let tags = tagsInComment comment
|
||||
-- oh boy
|
||||
d <- maybe (return Nothing) (either (fail.show) (return.Just)) (parseWithCtx ctx date `fmap` dateValueFromTags tags)
|
||||
d2 <- maybe (return Nothing) (either (fail.show) (return.Just)) (parseWithCtx ctx date `fmap` date2ValueFromTags tags)
|
||||
d <- maybe (return Nothing) (either (fail.show) (return.Just)) (parseWithCtx ctx datep `fmap` dateValueFromTags tags)
|
||||
d2 <- maybe (return Nothing) (either (fail.show) (return.Just)) (parseWithCtx ctx datep `fmap` date2ValueFromTags tags)
|
||||
return posting{pdate=d, pdate2=d2, pstatus=status, paccount=account', pamount=amount, pcomment=comment, ptype=ptype, ptags=tags, pbalanceassertion=massertion}
|
||||
|
||||
#ifdef TESTS
|
||||
@ -959,10 +959,10 @@ test_Hledger_Read_JournalReader = TestList $ concat [
|
||||
assertParse (parseWithCtx nullctx comment " \t; x\n")
|
||||
assertParse (parseWithCtx nullctx comment "#x")
|
||||
|
||||
,"date" ~: do
|
||||
assertParse (parseWithCtx nullctx date "2011/1/1")
|
||||
assertParseFailure (parseWithCtx nullctx date "1/1")
|
||||
assertParse (parseWithCtx nullctx{ctxYear=Just 2011} date "1/1")
|
||||
,"datep" ~: do
|
||||
assertParse (parseWithCtx nullctx datep "2011/1/1")
|
||||
assertParseFailure (parseWithCtx nullctx datep "1/1")
|
||||
assertParse (parseWithCtx nullctx{ctxYear=Just 2011} datep "1/1")
|
||||
|
||||
,"datetimep" ~: do
|
||||
let p = do {t <- datetimep; eof; return t}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user