;csv: refactor: rename JournalFieldName -> HledgerFieldName

This commit is contained in:
Simon Michael 2020-02-27 01:00:35 -08:00
parent be5fc09ebb
commit a87baf4b29

View File

@ -392,7 +392,7 @@ data CsvRules = CsvRules {
-- ^ top-level rules, as (keyword, value) pairs -- ^ top-level rules, as (keyword, value) pairs
rcsvfieldindexes :: [(CsvFieldName, CsvFieldIndex)], rcsvfieldindexes :: [(CsvFieldName, CsvFieldIndex)],
-- ^ csv field names and their column number, if declared by a fields list -- ^ csv field names and their column number, if declared by a fields list
rassignments :: [(JournalFieldName, FieldTemplate)], rassignments :: [(HledgerFieldName, FieldTemplate)],
-- ^ top-level assignments to hledger fields, as (field name, value template) pairs -- ^ top-level assignments to hledger fields, as (field name, value template) pairs
rconditionalblocks :: [ConditionalBlock] rconditionalblocks :: [ConditionalBlock]
-- ^ conditional blocks, which containing additional assignments/rules to apply to matched csv records -- ^ conditional blocks, which containing additional assignments/rules to apply to matched csv records
@ -408,8 +408,9 @@ type CsvFieldName = String
type CsvFieldIndex = Int type CsvFieldIndex = Int
-- | Percent symbol followed by a CSV field name or column number. Eg: %date, %1. -- | Percent symbol followed by a CSV field name or column number. Eg: %date, %1.
type CsvFieldReference = String type CsvFieldReference = String
-- | One of the standard hledger field names that can be assigned to. -- | One of the standard hledger fields or pseudo-fields that can be assigned to.
type JournalFieldName = String -- XXX rename to HledgerFieldName -- Eg date, account1, amount, amount1-in, date-format.
type HledgerFieldName = String
-- | A text value to be assigned to a hledger field, possibly -- | A text value to be assigned to a hledger field, possibly
-- containing csv field references to be interpolated. -- containing csv field references to be interpolated.
type FieldTemplate = String type FieldTemplate = String
@ -433,7 +434,7 @@ data Matcher =
-- a field assignment, and executed in validateCsv. XXX) -- a field assignment, and executed in validateCsv. XXX)
data ConditionalBlock = CB { data ConditionalBlock = CB {
cbMatchers :: [Matcher] cbMatchers :: [Matcher]
,cbAssignments :: [(JournalFieldName, FieldTemplate)] ,cbAssignments :: [(HledgerFieldName, FieldTemplate)]
} deriving (Show, Eq) } deriving (Show, Eq)
defrules = CsvRules { defrules = CsvRules {
@ -446,7 +447,7 @@ defrules = CsvRules {
addDirective :: (DirectiveName, String) -> CsvRules -> CsvRules addDirective :: (DirectiveName, String) -> CsvRules -> CsvRules
addDirective d r = r{rdirectives=d:rdirectives r} addDirective d r = r{rdirectives=d:rdirectives r}
addAssignment :: (JournalFieldName, FieldTemplate) -> CsvRules -> CsvRules addAssignment :: (HledgerFieldName, FieldTemplate) -> CsvRules -> CsvRules
addAssignment a r = r{rassignments=a:rassignments r} addAssignment a r = r{rassignments=a:rassignments r}
setIndexesAndAssignmentsFromList :: [CsvFieldName] -> CsvRules -> CsvRules setIndexesAndAssignmentsFromList :: [CsvFieldName] -> CsvRules -> CsvRules
@ -602,7 +603,7 @@ quotedfieldnamep = do
barefieldnamep :: CsvRulesParser String barefieldnamep :: CsvRulesParser String
barefieldnamep = some $ noneOf (" \t\n,;#~" :: [Char]) barefieldnamep = some $ noneOf (" \t\n,;#~" :: [Char])
fieldassignmentp :: CsvRulesParser (JournalFieldName, FieldTemplate) fieldassignmentp :: CsvRulesParser (HledgerFieldName, FieldTemplate)
fieldassignmentp = do fieldassignmentp = do
lift $ dbgparse 3 "trying fieldassignmentp" lift $ dbgparse 3 "trying fieldassignmentp"
f <- journalfieldnamep f <- journalfieldnamep
@ -800,8 +801,8 @@ transactionFromCsvRecord sourcepos rules record = t
-- Helper to generate posting N, if sufficient fields have been assigned -- Helper to generate posting N, if sufficient fields have been assigned
-- for it. N is provided as a string. -- for it. N is provided as a string.
mkPosting :: mkPosting ::
String -> JournalFieldName -> JournalFieldName -> JournalFieldName -> String -> HledgerFieldName -> HledgerFieldName -> HledgerFieldName ->
JournalFieldName -> JournalFieldName -> JournalFieldName -> HledgerFieldName -> HledgerFieldName -> HledgerFieldName ->
Maybe (Posting, Bool) Maybe (Posting, Bool)
mkPosting number accountFld amountFld amountInFld amountOutFld balanceFld commentFld = mkPosting number accountFld amountFld amountInFld amountOutFld balanceFld commentFld =
let currency = maybe (fromMaybe "" mdefaultcurrency) render $ let currency = maybe (fromMaybe "" mdefaultcurrency) render $
@ -1048,14 +1049,14 @@ negateStr s = '-':s
showRecord :: CsvRecord -> String showRecord :: CsvRecord -> String
showRecord r = "the CSV record is: "++intercalate "," (map show r) showRecord r = "the CSV record is: "++intercalate "," (map show r)
-- | Given the conversion rules, a CSV record and a journal entry field name, find -- | Given the conversion rules, a CSV record and a hledger field name, find
-- the template value ultimately assigned to this field, if any, -- the template value ultimately assigned to this field, if any, by a field
-- by a field assignment at top level or in a conditional block matching this record. -- assignment at top level or in a conditional block matching this record.
-- --
-- Note conditional blocks' patterns are matched against an approximation of the -- Note conditional blocks' patterns are matched against an approximation of the
-- CSV record: all the field values, without enclosing quotes, comma-separated. -- CSV record: all the field values, without enclosing quotes, comma-separated.
-- --
getEffectiveAssignment :: CsvRules -> CsvRecord -> JournalFieldName -> Maybe FieldTemplate getEffectiveAssignment :: CsvRules -> CsvRecord -> HledgerFieldName -> Maybe FieldTemplate
getEffectiveAssignment rules record f = lastMay $ map snd $ assignments getEffectiveAssignment rules record f = lastMay $ map snd $ assignments
where where
-- all active assignments to field f, in order -- all active assignments to field f, in order