summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add support for --hashes=sha512_256 as another algorithmJohn Wiegley2024-08-0511-26/+35
|
* Make xact hashes independent of posting orderJohn Wiegley2024-08-057-37/+41
| | | | | Also, support matching provided hashes against a prefixed of the generated hash.
* --hashes option requires an argument to specify the algorithmJohn Wiegley2024-08-052-6/+21
| | | | | At the moment only "sha512" or "SHA512" is accepted, but this could extend to more algorithms in the future.
* Add support for hash chaining to detect modifications in postingsJohn Wiegley2024-08-0515-28/+592
| | | | | | | | | | | | | | | | | | | The following details of a posting contribute to its hash: fullname of account string representation of amount Each posting hashes contributes to the transaction hash, which is compromised of: previous transaction’s hash (as encountered in parsing order) actual date optional auxiliary date optional code payee hashes of all postings Note that this means that changes in the “code” or any of the comments
* Fix denominator of roundto resultMax Nikulin2024-08-051-2/+39
| | | | | | | | | | | | | | | | | | Multiprecision rational created from a double value may have large power of 2 denominator since fractional decimal numbers can not be represented as binary floating point numbers. It leads to failed assertion when result is compared to a value converted directly from strings. Use integer multiprecision arithmetics to round numbers to ensure proper denominator. Inspired by python gmpy2 package <https://github.com/aleaxit/gmpy/blob/3e4564ae9d/src/gmpy2_mpq_misc.c#L315> The change makes `roundto` symmetric for positive/negative arguments. Halves are rounded to nearest even. Rounded away from zero are discussed in #1663 and it may be achieved with minimal modification. - See #2329 - Closes #1983
* print: Align amounts even when account names are longGwyneth Morgan2024-07-101-30/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When the account name is longer than the --account-width (default 36), the amounts stop aligning: 2023/01/01 Transaction with long account names Assets:Very:Long:Account:Name:That:Will:Push:The:Amount -10 ABC Assets:Another:Long:Account:Name:That:Will:Push:The:Amount -10 ABC Expenses:Short 20 ABC One can set a larger --account-width, but that is not a great solution for cases where you have only a few accounts with problematically long names. Instead, keep the current account width wherever possible, but when an account name is longer than the account width, account for that and still align the values: 2023/01/01 Transaction with short account names Assets:Short -10 ABC Assets:Short -10 ABC Expenses:Short 20 ABC 2023/01/01 Transaction with long account names Assets:Very:Long:Account:Name:That:Will:Push:The:Amount -10 ABC Assets:Another:Long:Account:Name:That:Will:Push:The:Amount -10 ABC Expenses:Short 20 ABC This is similar to hledger's behavior.
* Fix conditional compilation of Python <3.12 codeAlexis Hildebrandt2024-07-081-4/+3
|
* Fix Python 3.12 deprecation warningAlexis Hildebrandt2024-07-081-3/+18
| | | | | | as "the global configuration variable Py_UnbufferedStdioFlag was deprecated in Python 3.12 and using PyConfig.buffered_stdio is recommended instead." — https://peps.python.org/pep-0741/
* Restore expr context after calc, #2330 #2343Tavis Ormandy2024-07-081-2/+3
| | | | | | | Part of the expr_t::compile() process is to store the current scope, but In post_t::add_to_value that scope is temporary and on the stack. Restore the original context after that process is complete.
* Fix Query Parser for Automated Transactions (#1)Igbanam Ogbuluijah2024-06-252-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add failing test for use case TBH I don't know what I'm doing here, but this seems to fail for the right reasons enough to reflect the parser bug here. * Append to the ident on a closing brace ')' When parsing the automated rule, a scanner reads the line left-to-right char-by-char. The default behaviour is to append the char under the cursor to some `ident` string. When the cursor is on a ')', it skips the default handling and switches into some special handling: it tries to test the string it's reading if it's one of the keywords it knows, to select which type of token just got scanned. If what was scanned is not a known token, it defaults to `token_t::TERM` and returns a new token with the currently accumulated `ident` as a `token_t::TERM`. Issue is, since it skipped the appending to do some custom handling, the `token_t::TERM` will always be without its closing brace. The scanner needs to append the character under the cursor if it's falling through to default processing. * fix test case - ensure proper spacing for the posting to have an amount - ensure the posting balances against an account - the meaning of the number after `->` is the exit code * undo wrong approach * consume_next if unbalanced_braces * how this can be extended
* Fix build with Boost 1.85.0Michael Cho2024-04-251-1/+0
| | | | Signed-off-by: Michael Cho <michael@michaelcho.dev>
* Expand the size of an arbitrary safety limitJohn Wiegley2024-01-191-1/+1
|
* Change an assertion into an if testJohn Wiegley2024-01-191-1/+2
|
* Fix compiler warning about std::binary_functionAlexis Hildebrandt2023-12-123-2/+8
| | | | being deprecated as of C++11
* Fix =regex note query syntaxGwyneth Morgan2023-10-121-0/+4
| | | | | | | | | | | | The manpage documents `=regex` as equivalent to the `note regex` query syntax, but the former does not actually work as the parser only handles an equals sign in the case of `tag type=dining` syntax, and doesn't handle the case where an equals sign starts a note query. Fixing this does break queries like `tag type = dining` with spaces around the equals sign, but that syntax was not intended or documented. Closes: #2275
* include zero-amounts in balance_t::map_sorted_amountsdbear4962023-07-162-2/+5
|
* Merge pull request #2260 from afh/modernize-cmakeAlexis Hildebrandt2023-06-101-3/+3
|\ | | | | cmake: Replace add_defitions with superseding alternatives
| * cmake: Replace add_defitions with superseding alternativesAlexis Hildebrandt2023-06-071-3/+3
| |
* | Merge pull request #2259 from afh/afh-readlineAlexis Hildebrandt2023-06-102-4/+8
|\ \ | | | | | | Improve support for libedit and readline
| * | Add build support readlineAlexis Hildebrandt2023-06-072-4/+8
| |/
* | Merge pull request #2261 from afh/bsd-picAlexis Hildebrandt2023-06-101-0/+2
|\ \ | | | | | | cmake: Add -fPIC to compile flags
| * | cmake: Add -fPIC to compile flagsAlexis Hildebrandt2023-06-071-0/+2
| |/ | | | | | | | | | | when building ledger cli. Fixes #1913
* | Merge pull request #2250 from afh/fix-no-assertAlexis Hildebrandt2023-06-101-1/+2
|\ \ | |/ |/| Fix compilation errors with NO_ASSERT
| * Fix compilation errors with NO_ASSERTAlexis Hildebrandt2023-04-251-1/+2
| |
* | Merge pull request #2248 from afh/improve-web-docsAlexis Hildebrandt2023-04-264-3/+22
|\ \ | |/ |/| Improve web docs
| * doc: Generate Ledger Python module documentationAlexis Hildebrandt2023-04-254-3/+22
| | | | | | | | using pydoc when building web docs.
* | boost: Fix compilation warningsAlexis Hildebrandt2023-04-256-1/+10
|/ | | | Closes #2227
* Merge pull request #2245 from taviso/masterAlexis Hildebrandt2023-04-192-1/+2
|\ | | | | Fix bucket transactions with reg --related
| * fix #2220, bucket transactions ignored with reg --relatedTavis Ormandy2023-04-182-1/+2
| | | | | | | | | | | | This adds a new item flag, `ITEM_INFERRED`, that differentiates generated items from bucket items. This makes them show up as related items in reports.
* | Merge pull request #2238 from afh/cleanup-system-definesAlexis Hildebrandt2023-04-1912-113/+123
|\ \ | |/ |/| Cleanup system defines
| * Remove unused REVERSE_PREDECESSOR_MAP guarded codeAlexis Hildebrandt2023-04-191-23/+0
| |
| * Reorder system.hh includesAlexis Hildebrandt2023-04-191-15/+12
| |
| * Move app defines into ledger.hh.inAlexis Hildebrandt2023-04-192-3/+3
| |
| * Introduce ledger.hhAlexis Hildebrandt2023-04-165-34/+76
| |
| * Move DEBUG_MODE related defines to system.hh.inAlexis Hildebrandt2023-04-152-25/+23
| |
| * Use #cmakedefine01 for system capability checksAlexis Hildebrandt2023-04-158-35/+35
| | | | | | | | and reply #ifdev HAVE_ with #if HAVE_
| * Modernize system.hh.inAlexis Hildebrandt2023-04-151-5/+1
| |
* | gpgme: Remove obsoleted rewind wrapper functionAlexis Hildebrandt2023-04-181-6/+2
| | | | | | | | kudos to @spacefrogg
* | gpgme: Remove code handling versions prior to required versionAlexis Hildebrandt2023-04-181-10/+0
| |
* | Clean-up doxygen modulesAlexis Hildebrandt2023-04-167-7/+11
|/
* Refactor python related types into ledger::python namespaceAlexis Hildebrandt2023-04-1215-54/+65
|
* Refactor basic_flags_t to ledger::flags::basic_tAlexis Hildebrandt2023-04-1213-27/+32
|
* Refactor flag and pstream related types into ledger namespaceAlexis Hildebrandt2023-04-123-1/+8
|
* Merge branch 'master' into pragma-onceAlexis Hildebrandt2023-04-116-5/+62
|\
| * Merge pull request #2228 from afh/api-documentationAlexis Hildebrandt2023-04-116-4/+63
| |\ | | | | | | Fix generation of API documentation and prepare for publishing on ledger-cli.org
| | * Update api docsAlexis Hildebrandt2023-04-103-1/+41
| | |
| | * doc: Minor clean-upAlexis Hildebrandt2023-04-103-3/+22
| | |
| * | Fix typoAlexis Hildebrandt2023-04-111-1/+1
| |/
* / Use #pragma onceAlexis Hildebrandt2023-04-1057-228/+57
|/
* Bump required Boost version to 1.72Alexis Hildebrandt2023-03-244-25/+0
|