Support conversion from Open to Directive

korrat
Apr 10, 2024, 4:26 PM
TRPNBZBOC7BSQSTDN3N7UKDIJCRC4Q4ZOOAI2IJPMOBMXXXJ5Z7AC

Dependencies

  • [2] PXR534B2 Fix sorting between different directives on the same day
  • [3] 576M5IPA Add type for raw price specs
  • [4] SMBQYFPG Enable access to timestamps for directives
  • [5] HWT4JVUE Fix clippy warnings
  • [6] R524JUUE Implement metadata & price directives
  • [7] RI7HQBYA Add generator and parser for ISO20022 messages
  • [8] D6UTHZA4 add a simple writer for saving a set of directives to a tree of files
  • [9] TQMNNOOE Fix clippy warnings
  • [10] 2JBFREZG enable additional warnings
  • [11] YDK6X6PP add a library of important types for beancount
  • [12] 6MYJDQ3I Handle price directives
  • [*] NG5QXPZH Extract Account into separate crate
  • [*] XWHISGCP Extract Amount into separate crate
  • [*] QRIJE4AQ add a simple pretty printer for beancount directives
  • [*] NSWL54NM allow deriving pretty printing config from a set of directives

Change contents

  • edit in common/beancount-types/src/lib.rs at line 21
    [3.465]
    [14.2176]
    use delegate::delegate;
  • edit in common/beancount-types/src/lib.rs at line 47
    [4.4427]
    [4.42]
    Open(Open),
  • edit in common/beancount-types/src/lib.rs at line 62
    [4.11234]
    [15.1793]
    Self::Open(inner) => {
    inner.add_meta(key, value);
    }
  • replacement in common/beancount-types/src/lib.rs at line 81
    [2.197][2.197:359]()
    Self::Balance(balance) => balance.date,
    Self::Price(price) => price.date,
    Self::Transaction(transaction) => transaction.date,
    [2.197]
    [2.359]
    Self::Balance(inner) => inner.date,
    Self::Open(inner) => inner.date,
    Self::Price(inner) => inner.date,
    Self::Transaction(inner) => inner.date,
  • replacement in common/beancount-types/src/lib.rs at line 104
    [4.6711][4.208:270]()
    Self::Balance(balance) => Some(&balance.account),
    [4.6711]
    [4.270]
    Self::Balance(inner) => Some(&inner.account),
    Self::Open(inner) => Some(&inner.account),
  • replacement in common/beancount-types/src/lib.rs at line 107
    [4.306][4.306:380]()
    Self::Transaction(transaction) => transaction.main_account(),
    [4.306]
    [4.909]
    Self::Transaction(inner) => inner.main_account(),
  • replacement in common/beancount-types/src/lib.rs at line 114
    [4.1003][4.381:440]()
    Self::Balance(balance) => balance.timestamp(),
    [4.1003]
    [4.440]
    Self::Balance(inner) => inner.timestamp(),
    Self::Open(inner) => inner.timestamp(),
  • replacement in common/beancount-types/src/lib.rs at line 117
    [4.484][4.484:555]()
    Self::Transaction(transaction) => transaction.timestamp(),
    [4.484]
    [4.6949]
    Self::Transaction(inner) => inner.timestamp(),
  • replacement in common/beancount-types/src/lib.rs at line 123
    [4.6997][4.4458:4516](),[4.4516][4.7070:7145](),[4.7070][4.7070:7145](),[4.7145][4.556:604](),[4.253][4.7145:7211](),[4.604][4.7145:7211](),[4.7145][4.7145:7211]()
    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    match self {
    Self::Balance(balance) => balance.fmt(f),
    Self::Price(price) => price.fmt(f),
    Self::Transaction(transaction) => transaction.fmt(f),
    [4.6997]
    [4.7211]
    delegate! {
    to match self {
    Self::Balance(inner) => inner,
    Self::Open(inner) => inner,
    Self::Price(inner) => inner,
    Self::Transaction(inner) => inner,
    } {
    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result;
  • replacement in common/beancount-types/src/lib.rs at line 136
    [4.4552][4.4552:4592](),[4.4592][4.7323:7354](),[4.7323][4.7323:7354]()
    fn from(balance: Balance) -> Self {
    Self::Balance(balance)
    [4.4552]
    [4.7354]
    fn from(inner: Balance) -> Self {
    Self::Balance(inner)
    }
    }
    impl From<Open> for Directive {
    fn from(inner: Open) -> Self {
    Self::Open(inner)
  • replacement in common/beancount-types/src/lib.rs at line 148
    [4.11810][4.11810:11873]()
    fn from(price: Price) -> Self {
    Self::Price(price)
    [4.11810]
    [4.11873]
    fn from(inner: Price) -> Self {
    Self::Price(inner)
  • replacement in common/beancount-types/src/lib.rs at line 154
    [4.4632][4.4632:4680](),[4.4680][4.7476:7515](),[4.7476][4.7476:7515]()
    fn from(transaction: Transaction) -> Self {
    Self::Transaction(transaction)
    [4.4632]
    [4.7515]
    fn from(inner: Transaction) -> Self {
    Self::Transaction(inner)
  • edit in common/beancount-tree-writer/src/lib.rs at line 18
    [4.191]
    [4.13584]
    use beancount_types::Open;
  • replacement in common/beancount-tree-writer/src/lib.rs at line 118
    [4.14123][4.14123:14249]()
    Directive::Balance(Balance { date, account, .. }) => {
    Some(account_file(base, account, *date))
    }
    [4.14123]
    [4.14249]
    Directive::Balance(Balance { date, account, .. })
    | Directive::Open(Open { date, account, .. }) => Some(account_file(base, account, *date)),
  • edit in common/beancount-pretty-printer/src/lib.rs at line 10
    [16.210]
    [16.210]
    use beancount_types::Open;
  • edit in common/beancount-pretty-printer/src/lib.rs at line 159
    [4.414]
    [4.414]
    Directive::Open(open) => self.print_open(open),
  • edit in common/beancount-pretty-printer/src/lib.rs at line 182
    [16.2487]
    [16.2487]
    }
    fn print_open(&mut self, open: &Open) -> Result<()> {
    write!(self.inner, "{open}")
  • edit in common/beancount-pretty-printer/src/lib.rs at line 399
    [17.5071]
    [4.590]
    Directive::Open(_) => Either::Left(rayon::iter::once(Self::zero())),