introduce ensure_column and use it for padding account names

korrat
Sep 29, 2022, 4:42 PM
KWGWHKJRMYDMGWRTLTHNM5TM3B7SSZPQFC4XMDWHA2JDSL2FNEQQC

Dependencies

  • [2] ND7GASJ4 track current column position when writing
  • [3] ONRIF4V7 add basic snapshot test for pretty printer
  • [4] QRIJE4AQ add a simple pretty printer for beancount directives

Change contents

  • edit in common/beancount-pretty-printer/src/lib.rs at line 141
    [3.4001]
    [3.4001]
    self.inner.ensure_column(AMOUNT_COLUMN)?;
  • edit in common/beancount-pretty-printer/src/lib.rs at line 153
    [3.4326]
    [3.4326]
  • replacement in common/beancount-pretty-printer/src/lib.rs at line 164
    [3.4573][3.4573:4765]()
    let account_width = if amount.is_some() {
    AMOUNT_COLUMN - ACCOUNT_COLUMN
    } else {
    0
    };
    write!(self.inner, "{account:account_width$}")?;
    [3.4573]
    [3.4765]
    write!(self.inner, "{account}")?;
  • edit in common/beancount-pretty-printer/src/lib.rs at line 195
    [2.295]
    [2.295]
    impl<W> TrackingWriter<W>
    where
    W: Write,
    {
    fn ensure_column(&mut self, target: usize) -> Result<()> {
    let shift = target.saturating_sub(self.column);
    self.inner.write_fmt(format_args!("{:shift$}", ""))
    }
    }