Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions hledger/Hledger/Cli/Commands/Descriptions.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ module Hledger.Cli.Commands.Descriptions (
,descriptions
) where

import Data.List.Extra (nubSort)
import Data.List.Extra (nubSortBy)
import qualified Data.Text.Collate as Collate
import qualified Data.Text.IO as T

import Hledger
Expand All @@ -33,6 +34,7 @@ descriptionsmode = hledgerCommandMode
descriptions :: CliOpts -> Journal -> IO ()
descriptions CliOpts{reportspec_=rspec} j = do
let ts = entriesReport rspec j
descs = nubSort $ map tdescription ts
collator = Collate.collatorFor "en" (Collate.CollatorOptions {Collate.strength = Collate.Primary})
descs = nubSort (Collate.compare collator) $ map tdescription ts

mapM_ T.putStrLn descs
6 changes: 4 additions & 2 deletions hledger/Hledger/Cli/Commands/Notes.hs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ module Hledger.Cli.Commands.Notes (
,notes
) where

import Data.List.Extra (nubSort)
import Data.List.Extra (nubSortBy)
import qualified Data.Text.Collate as Collate
import qualified Data.Text.IO as T

import Hledger
Expand All @@ -34,5 +35,6 @@ notesmode = hledgerCommandMode
notes :: CliOpts -> Journal -> IO ()
notes CliOpts{reportspec_=rspec} j = do
let ts = entriesReport rspec j
notes' = nubSort $ map transactionNote ts
collator = Collate.collatorFor "en" (Collate.CollatorOptions {Collate.strength = Collate.Primary})
notes' = nubSortBy (Collate.compare collator) $ map transactionNote ts
mapM_ T.putStrLn notes'
8 changes: 6 additions & 2 deletions hledger/Hledger/Cli/Commands/Payees.hs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ module Hledger.Cli.Commands.Payees (
) where

import qualified Data.Set as S
import Data.List.Extra (nubSortBy)
import qualified Data.Text.Collate as Collate
import qualified Data.Text.IO as T
import System.Console.CmdArgs.Explicit as C

Expand All @@ -37,12 +39,14 @@ payees :: CliOpts -> Journal -> IO ()
payees CliOpts{rawopts_=rawopts, reportspec_=ReportSpec{_rsQuery=query}} j = do
let
decl = boolopt "declared" rawopts
used = boolopt "used" rawopts
used = boolopt "used" rawopts
-- XXX matchesPayee is currently an alias for matchesDescription, not sure if it matters
matcheddeclaredpayees = S.fromList . filter (matchesPayeeWIP query) $ journalPayeesDeclared j
matchedusedpayees = S.fromList . map transactionPayee $ filter (matchesTransaction query) $ jtxns j
payees' =
if | decl && not used -> matcheddeclaredpayees
| not decl && used -> matchedusedpayees
| otherwise -> matcheddeclaredpayees <> matchedusedpayees
mapM_ T.putStrLn payees'
collator = Collate.collatorFor "en" (Collate.CollatorOptions {Collate.strength = Collate.Primary})
payees'' = nubSortBy (Collate.compare collator) payees'
mapM_ T.putStrLn payees''
1 change: 1 addition & 0 deletions hledger/hledger.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ library
, time >=1.5
, timeit
, transformers
, unicode-collation
, unordered-containers
, utf8-string >=0.3.5
, utility-ht >=0.0.13
Expand Down
1 change: 1 addition & 0 deletions hledger/package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ dependencies:
- time >=1.5
- timeit
- transformers
- unicode-collation
- unordered-containers
- utf8-string >=0.3.5
- utility-ht >=0.0.13
Expand Down
8 changes: 8 additions & 0 deletions hledger/test/accounts-sorting.test
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@
2018/1/1
(a:k) 1

2018/1/1
(d:u) 1

2018/1/1
(d:ö) 1

$ hledger -f- acc
a:k
b:i
b:j
c
d:ö
d:u
>=


Expand Down
Loading