hledger/hledger-lib/hledger-lib.cabal
Stephen Morgan 80cf1d1995 !dev: lib: Allow Account to store date-indexed balances.
This upgrades Account to enable it to store a multiperiod balance, with
a separate balance for each date period. This enables it do the hard
work in MultiBalanceReport.

Some new types are created to enable convenient operation of accounts.
- `BalanceData` is a type which stores an exclusive balance, inclusive
  balance, and number of postings. This was previously directly stored
  in Account, but is now factored into a separate data type.
- `PeriodData` is a container which stores date-indexed data, as well as
  pre-period data. In post cases, this represents the report spans,
  along with the historical data.
- Account becomes polymorphic, allowing customisation of the type of
  data it stores. This will usually be `BalanceData`, but in
  `BudgetReport` it can use `These BalanceData BalanceData` to store
  both actuals and budgets in the same structure. The data structure
  changes to contain a `PeriodData`, allowing multiperiod accounts.

Some minor changes are made to behaviour for consistency:
- --declared treats parent accounts consistently.
- --flat --empty ensures that implied accounts with no postings are not displayed, but
  accounts with zero balance and actual postings are.
2025-06-04 23:10:00 -10:00

301 lines
7.9 KiB
Plaintext

cabal-version: 2.2
-- This file has been generated from package.yaml by hpack version 0.38.0.
--
-- see: https://github.com/sol/hpack
name: hledger-lib
version: 1.43.99
synopsis: A library providing the core functionality of hledger
description: This library contains hledger's core functionality.
It is used by most hledger* packages so that they support the same
command line options, file formats, reports, etc.
.
hledger is a robust, cross-platform set of tools for tracking money,
time, or any other commodity, using double-entry accounting and a
simple, editable file format, with command-line, terminal and web
interfaces. It is a Haskell rewrite of Ledger, and one of the leading
implementations of Plain Text Accounting.
.
See also:
.
- https://hledger.org - hledger's home page
.
- https://hledger.org/dev.html - starting point for hledger's developer docs
.
- https://hackage.haskell.org/package/hledger-lib/docs/Hledger.html - starting point for hledger's haddock docs
category: Finance
stability: stable
homepage: http://hledger.org
bug-reports: http://bugs.hledger.org
author: Simon Michael <simon@joyful.com>
maintainer: Simon Michael <simon@joyful.com>
license: GPL-3.0-or-later
license-file: LICENSE
build-type: Simple
tested-with:
ghc==8.10.7, ghc==9.0.2, ghc==9.2.8, ghc==9.4.8, ghc==9.6.7, ghc==9.8.4, ghc==9.10.2, ghc==9.12.1
extra-source-files:
CHANGES.md
README.md
test/unittest.hs
test/doctests.hs
source-repository head
type: git
location: https://github.com/simonmichael/hledger
flag debug
description: Build with GHC 9.10+'s stack traces enabled
manual: True
default: False
library
exposed-modules:
Hledger
Hledger.Data
Hledger.Data.Account
Hledger.Data.AccountName
Hledger.Data.Amount
Hledger.Data.Balancing
Hledger.Data.Currency
Hledger.Data.Dates
Hledger.Data.Errors
Hledger.Data.Journal
Hledger.Data.JournalChecks
Hledger.Data.JournalChecks.Ordereddates
Hledger.Data.JournalChecks.Uniqueleafnames
Hledger.Data.Json
Hledger.Data.Ledger
Hledger.Data.Period
Hledger.Data.PeriodicTransaction
Hledger.Data.StringFormat
Hledger.Data.Posting
Hledger.Data.RawOptions
Hledger.Data.Timeclock
Hledger.Data.Transaction
Hledger.Data.TransactionModifier
Hledger.Data.Types
Hledger.Data.Valuation
Hledger.Query
Hledger.Read
Hledger.Read.Common
Hledger.Read.CsvReader
Hledger.Read.InputOptions
Hledger.Read.JournalReader
Hledger.Read.RulesReader
Hledger.Read.TimedotReader
Hledger.Read.TimeclockReader
Hledger.Write.Beancount
Hledger.Write.Csv
Hledger.Write.Ods
Hledger.Write.Html
Hledger.Write.Html.Attribute
Hledger.Write.Html.Blaze
Hledger.Write.Html.Lucid
Hledger.Write.Html.HtmlCommon
Hledger.Write.Spreadsheet
Hledger.Reports
Hledger.Reports.ReportOptions
Hledger.Reports.ReportTypes
Hledger.Reports.AccountTransactionsReport
Hledger.Reports.BalanceReport
Hledger.Reports.BudgetReport
Hledger.Reports.EntriesReport
Hledger.Reports.MultiBalanceReport
Hledger.Reports.PostingsReport
Hledger.Utils
Hledger.Utils.Debug
Hledger.Utils.IO
Hledger.Utils.Parse
Hledger.Utils.Regex
Hledger.Utils.String
Hledger.Utils.Test
Hledger.Utils.Text
Text.Tabular.AsciiWide
Text.WideString
other-modules:
Hledger.Data.BalanceData
Hledger.Data.PeriodData
Paths_hledger_lib
autogen-modules:
Paths_hledger_lib
hs-source-dirs:
./
ghc-options: -Wall -Wno-incomplete-uni-patterns -Wno-missing-signatures -Wno-orphans -Wno-type-defaults -Wno-unused-do-bind
build-depends:
Decimal >=0.5.1
, Glob >=0.9
, aeson >=1 && <2.3
, aeson-pretty
, ansi-terminal >=0.9
, array
, base >=4.14 && <4.22
, blaze-html
, blaze-markup >=0.5.1
, bytestring
, call-stack
, cassava
, cassava-megaparsec
, cmdargs >=0.10
, colour >=2.3.6
, containers >=0.5.9
, data-default >=0.5
, deepseq
, directory >=1.2.6.1
, doclayout >=0.3 && <0.6
, encoding >=0.10
, extra >=1.7.11
, file-embed >=0.0.10
, filepath
, hashtables >=1.2.3.1
, lucid
, megaparsec >=7.0.0 && <9.8
, microlens >=0.4
, microlens-th >=0.4
, mtl >=2.2.1
, parser-combinators >=0.4.0
, pretty-simple >4 && <5
, process
, regex-tdfa
, safe >=0.3.20
, tabular >=0.2
, tasty >=1.2.3
, tasty-hunit >=0.10.0.2
, template-haskell
, terminal-size >=0.3.3
, text >=1.2.4.1
, these >=1.0.0
, time >=1.5
, timeit
, transformers >=0.2
, uglymemo
, unordered-containers >=0.2
, utf8-string >=0.3.5
default-language: Haskell2010
if (flag(debug))
cpp-options: -DDEBUG
test-suite doctest
type: exitcode-stdio-1.0
main-is: doctests.hs
hs-source-dirs:
test
ghc-options: -Wall -Wno-incomplete-uni-patterns -Wno-missing-signatures -Wno-orphans -Wno-type-defaults -Wno-unused-do-bind
build-depends:
Decimal >=0.5.1
, Glob >=0.7
, aeson >=1 && <2.3
, aeson-pretty
, ansi-terminal >=0.9
, array
, base >=4.14 && <4.22
, blaze-html
, blaze-markup >=0.5.1
, bytestring
, call-stack
, cassava
, cassava-megaparsec
, cmdargs >=0.10
, colour >=2.3.6
, containers >=0.5.9
, data-default >=0.5
, deepseq
, directory >=1.2.6.1
, doclayout >=0.3 && <0.6
, doctest >=0.18.1
, encoding >=0.10
, extra >=1.7.11
, file-embed >=0.0.10
, filepath
, hashtables >=1.2.3.1
, lucid
, megaparsec >=7.0.0 && <9.8
, microlens >=0.4
, microlens-th >=0.4
, mtl >=2.2.1
, parser-combinators >=0.4.0
, pretty-simple >4 && <5
, process
, regex-tdfa
, safe >=0.3.20
, tabular >=0.2
, tasty >=1.2.3
, tasty-hunit >=0.10.0.2
, template-haskell
, terminal-size >=0.3.3
, text >=1.2.4.1
, these >=1.0.0
, time >=1.5
, timeit
, transformers >=0.2
, uglymemo
, unordered-containers >=0.2
, utf8-string >=0.3.5
default-language: Haskell2010
if (flag(debug))
cpp-options: -DDEBUG
if impl(ghc >= 9.0) && impl(ghc < 9.2)
buildable: False
test-suite unittest
type: exitcode-stdio-1.0
main-is: unittest.hs
hs-source-dirs:
test
ghc-options: -Wall -Wno-incomplete-uni-patterns -Wno-missing-signatures -Wno-orphans -Wno-type-defaults -Wno-unused-do-bind
build-depends:
Decimal >=0.5.1
, Glob >=0.9
, aeson >=1 && <2.3
, aeson-pretty
, ansi-terminal >=0.9
, array
, base >=4.14 && <4.22
, blaze-html
, blaze-markup >=0.5.1
, bytestring
, call-stack
, cassava
, cassava-megaparsec
, cmdargs >=0.10
, colour >=2.3.6
, containers >=0.5.9
, data-default >=0.5
, deepseq
, directory >=1.2.6.1
, doclayout >=0.3 && <0.6
, encoding >=0.10
, extra >=1.7.11
, file-embed >=0.0.10
, filepath
, hashtables >=1.2.3.1
, hledger-lib
, lucid
, megaparsec >=7.0.0 && <9.8
, microlens >=0.4
, microlens-th >=0.4
, mtl >=2.2.1
, parser-combinators >=0.4.0
, pretty-simple >4 && <5
, process
, regex-tdfa
, safe >=0.3.20
, tabular >=0.2
, tasty >=1.2.3
, tasty-hunit >=0.10.0.2
, template-haskell
, terminal-size >=0.3.3
, text >=1.2.4.1
, these >=1.0.0
, time >=1.5
, timeit
, transformers >=0.2
, uglymemo
, unordered-containers >=0.2
, utf8-string >=0.3.5
buildable: True
default-language: Haskell2010
if (flag(debug))
cpp-options: -DDEBUG