diff --git a/hledger/Hledger/Cli/Commands/Balance.hs b/hledger/Hledger/Cli/Commands/Balance.hs index 6e0addd76..00a0d9663 100644 --- a/hledger/Hledger/Cli/Commands/Balance.hs +++ b/hledger/Hledger/Cli/Commands/Balance.hs @@ -238,6 +238,7 @@ Currently, empty cells show 0. {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE QuasiQuotes #-} module Hledger.Cli.Commands.Balance ( -- ** balance command @@ -283,6 +284,8 @@ import Data.Time (addDays, fromGregorian) import System.Console.CmdArgs.Explicit as C (flagNone, flagReq, flagOpt) import Lucid as L hiding (value_) import Safe (headMay, maximumMay) +import qualified Text.URI as Uri +import qualified Text.URI.QQ as UriQQ import Text.Tabular.AsciiWide (Header(..), Align(..), Properties(..), Cell(..), Table(..), TableOpts(..), cellWidth, concatTables, renderColumns, renderRowB, renderTableByRowsB, textCell) @@ -586,8 +589,14 @@ headerCell text = registerQueryUrl :: [Text] -> Text registerQueryUrl query = - "register?q=" <> - T.intercalate "+" (map quoteIfSpaced $ filter (not . T.null) query) + Uri.render $ + [UriQQ.uri|register|] { + Uri.uriQuery = + [Uri.QueryParam [UriQQ.queryKey|q|] $ + fromMaybe (error "register URI query construction failed") $ + Uri.mkQueryValue $ T.unwords $ + map quoteIfSpaced $ filter (not . T.null) query] + } -- cf. Web.Widget.Common removeDates :: [Text] -> [Text] diff --git a/hledger/hledger.cabal b/hledger/hledger.cabal index 4c140b0c1..f0131020b 100644 --- a/hledger/hledger.cabal +++ b/hledger/hledger.cabal @@ -172,6 +172,7 @@ library , math-functions >=0.3.3.0 , megaparsec >=7.0.0 && <9.7 , microlens >=0.4 + , modern-uri >=0.3 , mtl >=2.2.1 , process , regex-tdfa diff --git a/hledger/package.yaml b/hledger/package.yaml index 8613a8938..7c80d1378 100644 --- a/hledger/package.yaml +++ b/hledger/package.yaml @@ -205,6 +205,7 @@ library: - Diff >=0.2 - hashable >=1.2.4 - lucid + - modern-uri >=0.3 executables: hledger: