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.
224 lines
6.0 KiB
YAML
224 lines
6.0 KiB
YAML
name: hledger-lib
|
|
version: 1.43.99
|
|
license: GPL-3.0-or-later
|
|
maintainer: Simon Michael <simon@joyful.com>
|
|
author: Simon Michael <simon@joyful.com>
|
|
stability: stable
|
|
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
|
|
homepage: http://hledger.org
|
|
bug-reports: http://bugs.hledger.org
|
|
github: simonmichael/hledger
|
|
category: Finance
|
|
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
|
|
|
|
extra-source-files:
|
|
- CHANGES.md
|
|
- README.md
|
|
- test/unittest.hs
|
|
- test/doctests.hs
|
|
|
|
flags:
|
|
debug:
|
|
description: Build with GHC 9.10+'s stack traces enabled
|
|
default: false
|
|
manual: true
|
|
# ghcdebug:
|
|
# description: Build with support for attaching a ghc-debug client
|
|
# default: false
|
|
# manual: true
|
|
|
|
dependencies:
|
|
- base >=4.14 && <4.22
|
|
- aeson >=1 && <2.3
|
|
- aeson-pretty
|
|
- ansi-terminal >=0.9
|
|
- array
|
|
- blaze-markup >=0.5.1
|
|
- blaze-html
|
|
- bytestring
|
|
- call-stack
|
|
- cmdargs >=0.10
|
|
- containers >=0.5.9
|
|
- cassava
|
|
- cassava-megaparsec
|
|
- colour >=2.3.6
|
|
- data-default >=0.5
|
|
- deepseq
|
|
- Decimal >=0.5.1
|
|
- directory >=1.2.6.1
|
|
- doclayout >=0.3 && <0.6
|
|
- encoding >=0.10
|
|
- 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
|
|
- unordered-containers >=0.2
|
|
- uglymemo
|
|
- utf8-string >=0.3.5
|
|
- extra >=1.7.11
|
|
- Glob >= 0.9
|
|
|
|
ghc-options:
|
|
- -Wall
|
|
- -Wno-incomplete-uni-patterns
|
|
- -Wno-missing-signatures
|
|
- -Wno-orphans
|
|
- -Wno-type-defaults
|
|
- -Wno-unused-do-bind
|
|
|
|
when:
|
|
- condition: (flag(debug))
|
|
cpp-options: -DDEBUG
|
|
# - condition: (flag(ghcdebug))
|
|
# cpp-options: -DGHCDEBUG
|
|
# dependencies:
|
|
# - ghc-debug-stub >=0.6.0.0 && <0.7
|
|
|
|
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.LedgerReader
|
|
- 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:
|
|
# - Ledger.Parser.Text
|
|
source-dirs:
|
|
#- other/ledger-parse
|
|
- .
|
|
|
|
|
|
# "cabal test hledger-lib" currently fails, see doctest suite below
|
|
tests:
|
|
|
|
unittest:
|
|
buildable: true
|
|
source-dirs: test
|
|
main: unittest.hs
|
|
other-modules: [] # prevent double compilation, https://github.com/sol/hpack/issues/188
|
|
dependencies:
|
|
- hledger-lib
|
|
|
|
# Note when run by cabal, doctest requires a ghc environment file,
|
|
# so we ensure this is generated, see cabal.project.
|
|
# https://github.com/simonmichael/hledger/issues/1139
|
|
doctest:
|
|
source-dirs: test
|
|
main: doctests.hs # can't call it doctest.hs ("File name does not match module name")
|
|
other-modules: [] # prevent double compilation, https://github.com/sol/hpack/issues/188
|
|
dependencies:
|
|
# prefer the latest doctest
|
|
- doctest >=0.18.1
|
|
- Glob >=0.7
|
|
|
|
when:
|
|
# disable doctest with GHC 9.0, https://github.com/sol/doctest/issues/301
|
|
- condition: impl(ghc >= 9.0) && impl(ghc < 9.2)
|
|
buildable: false
|
|
|
|
# ghc 8.4+ on mac needs this workaround. See
|
|
# https://github.com/sol/doctest/issues/199
|
|
# https://ghc.haskell.org/trac/ghc/ticket/15105#comment:10 :
|
|
# ~$ locate HSinteger-gmp-1.0.2.0.o
|
|
# /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o
|
|
# ~$ mv /Users/simon/.stack/programs/x86_64-osx/ghc-8.4.3/lib/ghc-8.4.2/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o{,_DISABLE_GHC_ISSUE_15105}
|
|
# Should probably disable it by default:
|
|
#when:
|
|
# - condition: os(darwin) && impl(ghc >= 8.4)
|
|
# buildable: false
|