edit in common/beancount-tree-writer/src/lib.rs at line 1
+ use beancount_pretty_printer::Config as PrettyPrinterConfig;
edit in common/beancount-tree-writer/src/lib.rs at line 26
+
+ pub pretty_printer: PrettyPrinterConfig,
replacement in common/beancount-tree-writer/src/lib.rs at line 97
[3.2575]→[3.2575:2667](∅→∅) − PrettyPrinter::<_, 2, 2, 100>::buffered(file).print_directives(&directives)
+ PrettyPrinter::buffered(self.config.pretty_printer, file)
+ .print_directives(&directives)
edit in common/beancount-pretty-printer/tests/snapshotting.rs at line 1
+ use beancount_pretty_printer::Config;
replacement in common/beancount-pretty-printer/tests/snapshotting.rs at line 14
− let mut printer = PrettyPrinter::<_, 2, 2, 100>::unbuffered(&mut buffer);
+ let mut printer = PrettyPrinter::unbuffered(Config::default(), &mut buffer);
edit in common/beancount-pretty-printer/tests/snapshots/snapshotting__pretty_printed_transaction.snap at line 3
replacement in common/beancount-pretty-printer/tests/snapshots/snapshotting__pretty_printed_transaction.snap at line 7
[3.1881]→[3.1881:2139](∅→∅) − Assets:Checking -100.00 EUR
− Assets:Wallet 100.00 EUR
+ Assets:Checking -100.00 EUR
+ Assets:Wallet 100.00 EUR
replacement in common/beancount-pretty-printer/src/lib.rs at line 13
− // TODO consider reimplementation based on pretty.rs
+ #[derive(Clone, Copy, Debug)]
+ pub struct AmountConfig {
+ pub decimal_separator_column: usize,
+ pub commodity_column: usize,
+ }
+
+ impl Default for AmountConfig {
+ fn default() -> Self {
+ Self {
+ decimal_separator_column: 110,
+ commodity_column: 116,
+ }
+ }
+ }
replacement in common/beancount-pretty-printer/src/lib.rs at line 28
− pub struct PrettyPrinter<
− W,
− const FLAG_COLUMN: usize,
− const ACCOUNT_COLUMN: usize,
− const AMOUNT_COLUMN: usize,
− > {
+ #[derive(Clone, Copy, Debug)]
+ pub struct Config {
+ pub account_column: usize,
+
+ pub amount: AmountConfig,
+
+ pub flag_column: usize,
+ }
+
+ impl Default for Config {
+ fn default() -> Self {
+ Self {
+ account_column: 2,
+ amount: Default::default(),
+ flag_column: 2,
+ }
+ }
+ }
+
+ pub struct PrettyPrinter<W> {
+ config: Config,
+
replacement in common/beancount-pretty-printer/src/lib.rs at line 53
− impl<W, const FLAG_COLUMN: usize, const ACCOUNT_COLUMN: usize, const AMOUNT_COLUMN: usize>
− PrettyPrinter<W, FLAG_COLUMN, ACCOUNT_COLUMN, AMOUNT_COLUMN>
+ impl<W> PrettyPrinter<W>
replacement in common/beancount-pretty-printer/src/lib.rs at line 57
− pub fn unbuffered(inner: W) -> Self {
+ pub fn unbuffered(config: Config, inner: W) -> Self {
replacement in common/beancount-pretty-printer/src/lib.rs at line 59
[3.106]→[3.790:813](∅→∅),
[3.790]→[3.790:813](∅→∅) replacement in common/beancount-pretty-printer/src/lib.rs at line 63
− impl<W, const FLAG_COLUMN: usize, const ACCOUNT_COLUMN: usize, const AMOUNT_COLUMN: usize>
− PrettyPrinter<BufWriter<W>, FLAG_COLUMN, ACCOUNT_COLUMN, AMOUNT_COLUMN>
+ impl<W> PrettyPrinter<BufWriter<W>>
replacement in common/beancount-pretty-printer/src/lib.rs at line 67
[3.1011]→[3.1011:1051](∅→∅),
[3.1051]→[3.2140:2188](∅→∅) − pub fn buffered(inner: W) -> Self {
− Self::unbuffered(BufWriter::new(inner))
+ pub fn buffered(config: Config, inner: W) -> Self {
+ Self::unbuffered(config, BufWriter::new(inner))
replacement in common/beancount-pretty-printer/src/lib.rs at line 72
[3.1126]→[3.1126:1282](∅→∅) − impl<W, const FLAG_COLUMN: usize, const ACCOUNT_COLUMN: usize, const AMOUNT_COLUMN: usize>
− PrettyPrinter<W, FLAG_COLUMN, ACCOUNT_COLUMN, AMOUNT_COLUMN>
+ impl<W> PrettyPrinter<W>
replacement in common/beancount-pretty-printer/src/lib.rs at line 83
[3.1478]→[3.1478:1632](∅→∅) − let account_width = AMOUNT_COLUMN - 19;
− write!(self.inner, "{date} balance {account:account_width$}")?;
− self.print_amount(amount)
+ write!(self.inner, "{date} balance {account}")?;
+ self.print_amount(self.config.amount, amount)
replacement in common/beancount-pretty-printer/src/lib.rs at line 137
[3.3219]→[3.3219:3375](∅→∅) − impl<W, const FLAG_COLUMN: usize, const ACCOUNT_COLUMN: usize, const AMOUNT_COLUMN: usize>
− PrettyPrinter<W, FLAG_COLUMN, ACCOUNT_COLUMN, AMOUNT_COLUMN>
+ impl<W> PrettyPrinter<W>
replacement in common/beancount-pretty-printer/src/lib.rs at line 141
[3.3397]→[3.3397:3461](∅→∅) − fn print_amount(&mut self, amount: &Amount) -> Result<()> {
+ fn print_amount(&mut self, config: AmountConfig, amount: &Amount) -> Result<()> {
replacement in common/beancount-pretty-printer/src/lib.rs at line 144
[3.3513]→[3.3513:3613](∅→∅) − self.print_decimal_aligned(amount, 15, 4)?;
− write!(self.inner, " {commodity:12}")?;
+ self.print_decimal_aligned(config.decimal_separator_column, amount)?;
+
+ self.inner.ensure_column(config.commodity_column)?;
+ write!(self.inner, "{commodity}")?;
edit in common/beancount-pretty-printer/src/lib.rs at line 163
+ decimal_separator_column: usize,
edit in common/beancount-pretty-printer/src/lib.rs at line 165
[3.3926]→[3.3926:3979](∅→∅) − total_width: usize,
− decimals: usize,
replacement in common/beancount-pretty-printer/src/lib.rs at line 166
− self.inner.ensure_column(AMOUNT_COLUMN)?;
+ let decimals = decimal.scale() as usize;
replacement in common/beancount-pretty-printer/src/lib.rs at line 168
[2.51]→[3.4001:4113](∅→∅),
[3.4001]→[3.4001:4113](∅→∅) − // TODO handle this with icu or similar (e.g. for digit grouping)?
− let mut buffer = [b' '; 32];
+ let mut buffer = [b' '; 64];
+ write!(buffer.as_mut_slice(), "{decimal}")?;
replacement in common/beancount-pretty-printer/src/lib.rs at line 171
[3.4114]→[3.4114:4248](∅→∅) − let width = total_width - (decimals - (decimal.scale() as usize));
− write!(&mut buffer[..width], "{decimal:width$}")?;
+ let buffer = buffer.trim();
replacement in common/beancount-pretty-printer/src/lib.rs at line 173
[3.4249]→[3.4249:4320](∅→∅) − self.inner.write_all(&buffer[..total_width])?;
−
− Ok(())
+ // We can ignore the part right of the decimal separator when aligning the amount on the decimal separator
+ let integral_digits = buffer.graphemes().count() - (decimals + 1);
+ self.inner
+ .ensure_column(decimal_separator_column - integral_digits)?;
+ self.inner.write_all(buffer)
replacement in common/beancount-pretty-printer/src/lib.rs at line 193
[3.4805]→[3.4805:4845](∅→∅) − self.print_amount(amount)?;
+ self.print_amount(self.config.amount, amount)?;
replacement in common/beancount-pretty-printer/src/lib.rs at line 228
− self.inner.write_fmt(format_args!("{:shift$}", ""))
+ self.write_fmt(format_args!("{:shift$}", ""))