Align signs within one column

korrat
May 12, 2023, 12:41 PM
37UTZL2GGPRRFAOSVAROQNJXGCWBFJL5R2FLU6PPGOPSJD5JQMSQC

Dependencies

  • [2] KBSTC23N Clean up testing using new builder methods on types
  • [3] NSWL54NM allow deriving pretty printing config from a set of directives
  • [4] SJ6AFVZL remove const configuration in favor of runtime config
  • [5] KWGWHKJR introduce ensure_column and use it for padding account names
  • [6] GUNI4ZUI use larger numbers in test
  • [7] QRIJE4AQ add a simple pretty printer for beancount directives
  • [8] ONRIF4V7 add basic snapshot test for pretty printer
  • [9] M7VINXOF use fixed_decimal for decimal formatting
  • [10] 5S4MZHL5 pretty print decimals using icu
  • [11] ND7GASJ4 track current column position when writing

Change contents

  • edit in common/beancount-pretty-printer/tests/snapshotting.rs at line 23
    [2.433]
    [2.433]
    .build_posting(Account::try_from("Assets:Investment").unwrap(), |posting| {
    posting.set_amount(Amount::new(dec!(-3000.00), commodity));
    })
  • edit in common/beancount-pretty-printer/tests/snapshots/snapshotting__pretty_printed_transaction.snap at line 3
    [3.1842][3.1402:1421]()
    assertion_line: 57
  • edit in common/beancount-pretty-printer/tests/snapshots/snapshotting__pretty_printed_transaction.snap at line 7
    [3.1462]
    [3.1462]
    Assets:Investment - 3,000.00 EUR
  • edit in common/beancount-pretty-printer/src/lib.rs at line 39
    [3.673]
    [3.673]
    pub sign_column: usize,
  • edit in common/beancount-pretty-printer/src/lib.rs at line 52
    [3.1990]
    [3.1990]
    let sign_column = start_column;
  • replacement in common/beancount-pretty-printer/src/lib.rs at line 59
    [3.2192][3.2192:2258]()
    let decimal_separator_column = start_column + left_width;
    [3.2192]
    [3.2258]
    let decimal_separator_column = sign_column + left_width;
  • edit in common/beancount-pretty-printer/src/lib.rs at line 66
    [3.2465]
    [3.2465]
    sign_column,
  • edit in common/beancount-pretty-printer/src/lib.rs at line 73
    [3.750][3.750:920](),[3.920][3.2550:2551]()
    impl Default for AmountConfig {
    fn default() -> Self {
    Self {
    decimal_separator_column: 110,
    commodity_column: 116,
    }
    }
    }
  • edit in common/beancount-pretty-printer/src/lib.rs at line 108
    [3.1065][3.1065:1251]()
    impl Default for Config {
    fn default() -> Self {
    Self {
    account_column: 2,
    amount: Default::default(),
    flag_column: 2,
    }
    }
    }
  • replacement in common/beancount-pretty-printer/src/lib.rs at line 227
    [3.3513][3.1821:1899]()
    self.print_decimal_aligned(config.decimal_separator_column, amount)?;
    [3.3513]
    [3.1899]
    self.print_decimal_aligned(config.sign_column, config.decimal_separator_column, amount)?;
  • edit in common/beancount-pretty-printer/src/lib.rs at line 246
    [3.3899]
    [3.2005]
    sign_column: usize,
  • replacement in common/beancount-pretty-printer/src/lib.rs at line 259
    [3.666][3.205:256](),[3.4001][3.205:256]()
    let decimal = fixed_decimal_from(decimal);
    [3.666]
    [3.4248]
    self.inner.ensure_column(sign_column)?;
    self.inner.write_all(if decimal.is_sign_negative() {
    b"-"
    } else {
    b" "
    })?;
    // Ensure decimal is now positive
    let decimal = decimal.abs();
    let decimal = fixed_decimal_from(&decimal);
  • replacement in common/beancount-pretty-printer/src/lib.rs at line 280
    [3.4415][3.4415:4436]()
    flag: _,
    [3.4415]
    [3.4436]
    flag,
  • edit in common/beancount-pretty-printer/src/lib.rs at line 288
    [3.4573]
    [3.54]
    if let Some(flag) = flag {
    write!(self.inner, "{flag} ")?;
    }