Extract commodity type into separate crate
Dependencies
- [2]
SMBQYFPGEnable access to timestamps for directives - [3]
NG5QXPZHExtract Account into separate crate - [4]
QNGOXZL4Add a basic framework - [5]
SEEWF7KXImplement metadata on transactions - [6]
R7S2CWF7Add type for account segments - [7]
2JBFREZGenable additional warnings - [8]
4W4CDACXUpgrade dependencies - [9]
W3MWSSJ7Add a templating engine for accounts - [10]
24CCPM5OUpdate dependencies - [11]
ZVTVMOZQUpgrade dependencies - [12]
TB2QGHXNUpgrade dependencies - [13]
R524JUUEImplement metadata & price directives - [14]
YDK6X6PPadd a library of important types for beancount - [*]
I2P2FTLEadd basic parser for german decimals
Change contents
- edit in common/beancount-types/src/that.rs at line 36[5.4722]→[5.4722:4777](∅→∅),[5.4777]→[5.3975:4029](∅→∅),[5.4029]→[5.4777:4821](∅→∅),[5.4777]→[5.4777:4821](∅→∅),[5.4874]→[5.4874:5842](∅→∅)
mod commodities {use {crate::Commodity,core::{fmt::Debug, hash::Hash, str::FromStr},static_assertions::assert_impl_all,test_case::test_case,};assert_impl_all!(Commodity: Copy,Debug,FromStr,Hash,Ord,TryFrom<&'static str>);#[test_case("A"; "single letter")]#[test_case("USD"; "dollar")]#[test_case("EUR"; "euro")]#[test_case("MSFT"; "stock")]#[test_case("AIRMILE"; "creative")]#[test_case("DE.-_3"; "with special characters")]fn parse_when_valid(name: &str) {let commodity = Commodity::try_from(name).unwrap();assert_eq!(commodity.to_string(), name);}#[test_case("0"; "starting with number")]#[test_case("D-"; "ending with dash")]#[test_case("E_"; "ending with underscore")]#[test_case("X."; "ending with dot")]#[test_case("X 3"; "containing space")]#[test_case("X\\0"; "containing backslash")]fn do_not_parse_when_invalid(name: &str) {Commodity::try_from(name).unwrap_err();}// TODO proptest?} - replacement in common/beancount-types/src/lib.rs at line 1
#![warn(clippy::all, clippy::pedantic)]#![warn(clippy::all, clippy::nursery, clippy::pedantic)] - edit in common/beancount-types/src/lib.rs at line 9
pub use beancount_commodity::Commodity; - edit in common/beancount-types/src/lib.rs at line 14
pub use crate::commodity::Commodity; - edit in common/beancount-types/src/lib.rs at line 37
mod commodity; - replacement in common/beancount-types/Cargo.toml at line 26
beancount-account.path = "../../beancount/account"beancount-account.path = "../../beancount/account"beancount-commodity.path = "../../beancount/commodity" - file addition: commodity[3.1]
- file addition: tests[0.1]
- file addition: basic.rs[0.24]
use core::fmt::Debug;use core::hash::Hash;use core::str::FromStr;use beancount_commodity::Commodity;use static_assertions::assert_impl_all;use test_case::test_case;assert_impl_all!(Commodity: Copy,Debug,FromStr,Hash,Ord,TryFrom<&'static str>);#[test_case("A"; "single letter")]#[test_case("USD"; "dollar")]#[test_case("EUR"; "euro")]#[test_case("MSFT"; "stock")]#[test_case("AIRMILE"; "creative")]#[test_case("DE.-_3"; "with special characters")]fn parse_when_valid(name: &str) {let commodity = Commodity::try_from(name).unwrap();assert_eq!(commodity.to_string(), name);}#[test_case("0"; "starting with number")]#[test_case("D-"; "ending with dash")]#[test_case("E_"; "ending with underscore")]#[test_case("X."; "ending with dot")]#[test_case("X 3"; "containing space")]#[test_case("X\\0"; "containing backslash")]fn do_not_parse_when_invalid(name: &str) {Commodity::try_from(name).unwrap_err();}// TODO proptest? - file addition: src[0.1]
- file move: commodity.rs → lib.rs
- edit in beancount/commodity/src/lib.rs at line 1
#![warn(clippy::all, clippy::nursery, clippy::pedantic)] - file addition: Cargo.toml[0.1]
[package]name = "beancount-commodity"edition.workspace = truepublish.workspace = truerust-version.workspace = trueversion.workspace = true[dependencies]# Inherited dependenciesarrayvec.workspace = truedelegate.workspace = truelazy-regex.workspace = truemiette.workspace = trueserde.workspace = truesnafu.workspace = true[dev-dependencies]static_assertions.workspace = truetest-case.workspace = true - edit in beancount/account/Cargo.toml at line 3
version = "0.1.0"edition = "2021" - replacement in beancount/account/Cargo.toml at line 4
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.htmledition.workspace = truepublish.workspace = truerust-version.workspace = trueversion.workspace = true - replacement in beancount/account/Cargo.toml at line 11
delegate.workspace = truedelegate.workspace = true - replacement in beancount/account/Cargo.toml at line 13
miette.workspace = truemomo.workspace = trueserde.workspace = truesnafu.workspace = truemiette.workspace = truemomo.workspace = trueserde.workspace = truesnafu.workspace = true - edit in beancount/account/Cargo.toml at line 19
test-case.workspace = true - edit in beancount/account/Cargo.toml at line 20[3.1658]
test-case.workspace = true - replacement in Cargo.lock at line 205
version = "0.1.0"version = "0.0.0-dev.0" - edit in Cargo.lock at line 218
name = "beancount-commodity"version = "0.0.0-dev.0"dependencies = ["arrayvec","delegate","lazy-regex","miette","serde","snafu","static_assertions","test-case",][[package]] - edit in Cargo.lock at line 328
"beancount-commodity",