def on_Print(self, print_stmt): """ Print entries in Beancount format. The general form of a PRINT statement includes an SQL-like FROM selector: PRINT [FROM <from_expr> ...] Where: from_expr: A logical expression that matches on the attributes of the directives. See SELECT command for details (this FROM expression supports all the same expressions including its OPEN, CLOSE and CLEAR operations). """ # Compile the print statement. try: c_print = query_compile.compile(print_stmt, self.env_targets, self.env_postings, self.env_entries) except query_compile.CompilationError as exc: print('ERROR: {}.'.format(str(exc).rstrip('.')), file=self.outfile) return if self.outfile is sys.stdout: query_execute.execute_print(c_print, self.entries, self.options_map, file=self.outfile) else: with self.get_pager() as file: query_execute.execute_print(c_print, self.entries, self.options_map, file)
def test_print_with_no_filter(self): statement = qc.EvalPrint(qc.EvalFrom(None, None, None, None)) oss = io.StringIO() qx.execute_print(statement, self.entries, self.options_map, oss) self.assertEqualEntries(self.INPUT, oss.getvalue()) statement = qc.EvalPrint(None) oss = io.StringIO() qx.execute_print(statement, self.entries, self.options_map, oss) self.assertEqualEntries(self.INPUT, oss.getvalue())
def test_print_with_filter(self): statement = qc.EvalPrint(qc.EvalFrom(qc.EvalEqual(qe.YearEntryColumn(), qc.EvalConstant(2012)), None, None, None)) oss = io.StringIO() qx.execute_print(statement, self.entries, self.options_map, oss) self.assertEqualEntries(""" 2012-02-02 * "Dinner with Dos" Assets:Bank:Checking 102.00 USD Expenses:Restaurant -102.00 USD """, oss.getvalue())