mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-26 20:02:27 +03:00
lib,web: Replace regex functions with simple text replacement.
This commit is contained in:
parent
2cd7877c46
commit
8dfffb1e61
@ -39,14 +39,14 @@ module Hledger.Data.AccountName (
|
||||
)
|
||||
where
|
||||
|
||||
import Data.List
|
||||
import Data.List.Extra (nubSort)
|
||||
import qualified Data.List.NonEmpty as NE
|
||||
#if !(MIN_VERSION_base(4,11,0))
|
||||
import Data.Monoid
|
||||
import Data.Semigroup ((<>))
|
||||
#endif
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Tree
|
||||
import Data.Tree (Tree(..))
|
||||
|
||||
import Hledger.Data.Types
|
||||
import Hledger.Utils
|
||||
@ -115,7 +115,7 @@ expandAccountNames as = nubSort $ concatMap expandAccountName as
|
||||
|
||||
-- | "a:b:c" -> ["a","a:b","a:b:c"]
|
||||
expandAccountName :: AccountName -> [AccountName]
|
||||
expandAccountName = map accountNameFromComponents . tail . inits . accountNameComponents
|
||||
expandAccountName = map accountNameFromComponents . NE.tail . NE.inits . accountNameComponents
|
||||
|
||||
-- | ["a:b:c","d:e"] -> ["a","d"]
|
||||
topAccountNames :: [AccountName] -> [AccountName]
|
||||
@ -209,8 +209,10 @@ clipOrEllipsifyAccountName n = clipAccountName n
|
||||
-- >>> putStr $ escapeName "First?!#$*?$(*) !@^#*? %)*!@#"
|
||||
-- First\?!#\$\*\?\$\(\*\) !@\^#\*\? %\)\*!@#
|
||||
escapeName :: AccountName -> String
|
||||
escapeName = replaceAllBy (toRegex' "[[?+|()*\\\\^$]") ("\\" <>) -- PARTIAL: should not happen
|
||||
. T.unpack
|
||||
escapeName = T.unpack . T.concatMap escapeChar
|
||||
where
|
||||
escapeChar c = if c `elem` escapedChars then T.snoc "\\" c else T.singleton c
|
||||
escapedChars = ['[', '?', '+', '|', '(', ')', '*', '$', '^', '\\']
|
||||
|
||||
-- | Convert an account name to a regular expression matching it and its subaccounts.
|
||||
accountNameToAccountRegex :: AccountName -> Regexp
|
||||
|
@ -106,16 +106,13 @@ addForm j today = identifyForm "add" $ \extra -> do
|
||||
intercalate "," $ map (
|
||||
("{\"value\":" ++).
|
||||
(++"}").
|
||||
escapeJSSpecialChars .
|
||||
drop 7 . -- "String "
|
||||
show .
|
||||
toJSON
|
||||
-- avoid https://github.com/simonmichael/hledger/issues/236
|
||||
T.replace "</script>" "<\\/script>"
|
||||
) ts,
|
||||
"]"
|
||||
]
|
||||
where
|
||||
-- avoid https://github.com/simonmichael/hledger/issues/236
|
||||
escapeJSSpecialChars = regexReplace (toRegexCI' "</script>") "<\\/script>"
|
||||
|
||||
validateTransaction ::
|
||||
FormResult Day
|
||||
|
@ -72,7 +72,7 @@ writeJournalTextIfValidAndChanged f t = do
|
||||
-- Ensure unix line endings, since both readJournal (cf
|
||||
-- formatdirectivep, #1194) writeFileWithBackupIfChanged require them.
|
||||
-- XXX klunky. Any equivalent of "hSetNewlineMode h universalNewlineMode" for form posts ?
|
||||
let t' = T.pack $ regexReplace (toRegex' "\r") "" $ T.unpack t
|
||||
let t' = T.replace "\r" "" t
|
||||
liftIO (readJournal def (Just f) t') >>= \case
|
||||
Left e -> return (Left e)
|
||||
Right _ -> do
|
||||
|
Loading…
Reference in New Issue
Block a user