Extract Amount into separate crate
Dependencies
- [2]
TB2QGHXNUpgrade dependencies - [3]
WS3UUOV3Extract commodity type into separate crate - [4]
R7S2CWF7Add type for account segments - [5]
R524JUUEImplement metadata & price directives - [6]
6MR76MLLReplace build script with cargo-px - [7]
SEEWF7KXImplement metadata on transactions - [8]
W3MWSSJ7Add a templating engine for accounts - [9]
SMBQYFPGEnable access to timestamps for directives - [10]
2JBFREZGenable additional warnings - [11]
NG5QXPZHExtract Account into separate crate - [12]
RI7HQBYAAdd generator and parser for ISO20022 messages - [13]
YDK6X6PPadd a library of important types for beancount - [*]
I2P2FTLEadd basic parser for german decimals - [*]
UESS5YZEmigrate dependencies into workspace manifest - [*]
ZVTVMOZQUpgrade dependencies - [*]
4W4CDACXUpgrade dependencies
Change contents
- file deletion: that.rs
mod amount {use {crate::Amount,core::{fmt::Debug, hash::Hash, str::FromStr},static_assertions::assert_impl_all,test_case::test_case,};assert_impl_all!(Amount: Copy,Debug,FromStr,Hash,PartialOrd,TryFrom<&'static str>);#[test_case("0 EUR"; "zero")]#[test_case("15 USD"; "integer amount")]#[test_case("0.30 CAD"; "fractional amount")]#[test_case("0.0000067 ETH"; "arbitrary precision")]#[test_case("-16.93 USD"; "negative amount")]fn parse_when_valid(amount: &str) {let account = Amount::try_from(amount).unwrap();assert_eq!(account.to_string(), amount);}#[test_case(" EUR"; "missing units")]#[test_case("15 "; "missing commodity")]#[test_case("15,000.00 USD"; "thousands separator")]#[test_case("15000,00 USD"; "invalid decimal separator")]fn do_not_parse_when_invalid(amount: &str) {Amount::try_from(amount).unwrap_err();}} - edit in common/beancount-types/src/lib.rs at line 9
pub use beancount_amount::Amount; - edit in common/beancount-types/src/lib.rs at line 13
pub use crate::amount::Amount; - edit in common/beancount-types/src/lib.rs at line 35
mod amount; - replacement in common/beancount-types/src/lib.rs at line 55
Directive::Balance(inner) => {Self::Balance(inner) => { - replacement in common/beancount-types/src/lib.rs at line 58
Directive::Price(inner) => {Self::Price(inner) => { - replacement in common/beancount-types/src/lib.rs at line 61
Directive::Transaction(inner) => {Self::Transaction(inner) => { - edit in common/beancount-types/src/lib.rs at line 136
#[cfg(test)]mod that; - edit in common/beancount-types/src/cost.rs at line 1
use crate::amount::Amount; - edit in common/beancount-types/src/cost.rs at line 6
use crate::Amount; - replacement in common/beancount-types/src/account.rs at line 1
pub(crate) mod template;[4.1838]pub mod template; - edit in common/beancount-types/Cargo.toml at line 27
beancount-amount.path = "../../beancount/amount" - file addition: amount[4.1]
- file addition: tests[0.1]
- file addition: basic.rs[0.21]
use core::fmt::Debug;use core::hash::Hash;use core::str::FromStr;use beancount_amount::Amount;use static_assertions::assert_impl_all;use test_case::test_case;assert_impl_all!(Amount: Copy,Debug,FromStr,Hash,PartialOrd,TryFrom<&'static str>);#[test_case("0 EUR"; "zero")]#[test_case("15 USD"; "integer amount")]#[test_case("0.30 CAD"; "fractional amount")]#[test_case("0.0000067 ETH"; "arbitrary precision")]#[test_case("-16.93 USD"; "negative amount")]fn parse_when_valid(amount: &str) {let account = Amount::try_from(amount).unwrap();assert_eq!(account.to_string(), amount);}#[test_case(" EUR"; "missing units")]#[test_case("15 "; "missing commodity")]#[test_case("15,000.00 USD"; "thousands separator")]#[test_case("15000,00 USD"; "invalid decimal separator")]fn do_not_parse_when_invalid(amount: &str) {Amount::try_from(amount).unwrap_err();} - file addition: src[0.1]
- file move: amount.rs → lib.rs
- edit in beancount/amount/src/lib.rs at line 1
#![warn(clippy::all, clippy::nursery, clippy::pedantic)] - edit in beancount/amount/src/lib.rs at line 19
use beancount_commodity::Commodity;use miette::Diagnostic; - edit in beancount/amount/src/lib.rs at line 25
use crate::Commodity; - replacement in beancount/amount/src/lib.rs at line 139
pub fn new(amount: Decimal, commodity: Commodity) -> Self {pub const fn new(amount: Decimal, commodity: Commodity) -> Self { - replacement in beancount/amount/src/lib.rs at line 308
#[derive(Debug, Snafu)]#[derive(Debug, Diagnostic, Snafu)] - file addition: Cargo.toml[0.1]
[package]name = "beancount-amount"edition.workspace = truepublish.workspace = truerust-version.workspace = trueversion.workspace = true[dependencies]# Inherited dependenciesdelegate.workspace = truelazy-regex.workspace = truemiette.workspace = truemomo.workspace = truerust_decimal.workspace = trueserde.workspace = truesnafu.workspace = true# Workspace dependenciesbeancount-commodity.workspace = true[dev-dependencies]static_assertions.workspace = truetest-case.workspace = true - edit in Cargo.toml at line 32
forward_ref_generic = "0.2.1" - replacement in Cargo.toml at line 58
quick-xml = "0.28.2"quick-xml = "0.29.0" - edit in Cargo.toml at line 119
## Workspace crates[workspace.dependencies.beancount-commodity]path = "beancount/commodity" - edit in Cargo.lock at line 218
name = "beancount-amount"version = "0.0.0-dev.0"dependencies = ["beancount-commodity","delegate","lazy-regex","miette","momo","rust_decimal","serde","snafu","static_assertions","test-case",][[package]] - edit in Cargo.lock at line 343[18.2353][3.2540]
"beancount-amount", - replacement in Cargo.lock at line 3081
version = "0.28.2"version = "0.29.0" - replacement in Cargo.lock at line 3083
checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1"checksum = "81b9228215d82c7b61490fec1de287136b5de6f5700f6e58ea9ad61a7964ca51"