ref:import: simplify renderTemplate and friends

renderTemplate and its ancillary functions did not need the
HledgerFieldName argument, so remove it.

Signed-off-by: Jonathan Dowland <jon@dow.land>
This commit is contained in:
Jonathan Dowland 2024-02-29 21:27:05 +00:00
parent b7027c8bbb
commit 71684f5611

View File

@ -795,12 +795,12 @@ isBlockActive rules record CB{..} = any (all matcherMatches) $ groupedMatchers c
-- | Render a field assignment's template, possibly interpolating referenced -- | Render a field assignment's template, possibly interpolating referenced
-- CSV field values or match groups. Outer whitespace is removed from interpolated values. -- CSV field values or match groups. Outer whitespace is removed from interpolated values.
renderTemplate :: CsvRules -> CsvRecord -> HledgerFieldName -> FieldTemplate -> Text renderTemplate :: CsvRules -> CsvRecord -> FieldTemplate -> Text
renderTemplate rules record f t = renderTemplate rules record t =
maybe t mconcat $ parseMaybe maybe t mconcat $ parseMaybe
(many (many
( literaltextp ( literaltextp
<|> (matchrefp <&> replaceRegexGroupReference rules record f) <|> (matchrefp <&> replaceRegexGroupReference rules record)
<|> (fieldrefp <&> replaceCsvFieldReference rules record) <|> (fieldrefp <&> replaceCsvFieldReference rules record)
) )
) )
@ -818,13 +818,13 @@ renderTemplate rules record f t =
-- | Replace something that looks like a Regex match group reference with the -- | Replace something that looks like a Regex match group reference with the
-- resulting match group value after applying the Regex. -- resulting match group value after applying the Regex.
replaceRegexGroupReference :: CsvRules -> CsvRecord -> HledgerFieldName -> MatchGroupReference -> Text replaceRegexGroupReference :: CsvRules -> CsvRecord -> MatchGroupReference -> Text
replaceRegexGroupReference rules record f s = case T.uncons s of replaceRegexGroupReference rules record s = case T.uncons s of
Just ('\\', group) -> fromMaybe "" $ regexMatchValue rules record f group Just ('\\', group) -> fromMaybe "" $ regexMatchValue rules record group
_ -> s _ -> s
regexMatchValue :: CsvRules -> CsvRecord -> HledgerFieldName -> Text -> Maybe Text regexMatchValue :: CsvRules -> CsvRecord -> Text -> Maybe Text
regexMatchValue rules record f sgroup = let regexMatchValue rules record sgroup = let
matchgroups = concatMap (getMatchGroups rules record) matchgroups = concatMap (getMatchGroups rules record)
$ concatMap cbMatchers $ concatMap cbMatchers
$ filter (isBlockActive rules record) $ filter (isBlockActive rules record)
@ -1228,7 +1228,7 @@ getAmount rules record currency p1IsVirtual n =
-- assignments to any of these field names with non-empty values -- assignments to any of these field names with non-empty values
assignments = [(f,a') | f <- fieldnames assignments = [(f,a') | f <- fieldnames
, Just v <- [T.strip . renderTemplate rules record f <$> hledgerField rules record f] , Just v <- [T.strip . renderTemplate rules record <$> hledgerField rules record f]
, not $ T.null v , not $ T.null v
-- XXX maybe ignore rule-generated values like "", "-", "$", "-$", "$-" ? cf CSV FORMAT -> "amount", "Setting amounts", -- XXX maybe ignore rule-generated values like "", "-", "$", "-$", "$-" ? cf CSV FORMAT -> "amount", "Setting amounts",
, let a = parseAmount rules record currency v , let a = parseAmount rules record currency v