summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--format.cc45
-rw-r--r--format.h2
-rw-r--r--main.cc14
3 files changed, 30 insertions, 31 deletions
diff --git a/format.cc b/format.cc
index 676d079f..035a2c77 100644
--- a/format.cc
+++ b/format.cc
@@ -358,34 +358,33 @@ void format_transaction::operator()(transaction_t * xact) const
xact->total += *xact;
xact->index = last_xact ? last_xact->index + 1 : 0;
- if (! disp_pred_functor(xact))
- return;
-
- xact->flags |= TRANSACTION_DISPLAYED;
+ if (disp_pred_functor(xact)) {
+ xact->flags |= TRANSACTION_DISPLAYED;
- // This makes the assumption that transactions from a single entry
- // are always grouped together.
+ // This makes the assumption that transactions from a single entry
+ // are always grouped together.
#ifdef COLLAPSED_REGISTER
- if (collapsed) {
- // If we've reached a new entry, report on the subtotal
- // accumulated thus far.
-
- if (last_entry && last_entry != xact->entry) {
- report_cumulative_subtotal();
- subtotal = 0;
- count = 0;
- }
+ if (collapsed) {
+ // If we've reached a new entry, report on the subtotal
+ // accumulated thus far.
+
+ if (last_entry && last_entry != xact->entry) {
+ report_cumulative_subtotal();
+ subtotal = 0;
+ count = 0;
+ }
- subtotal += *xact;
- count++;
- } else
+ subtotal += *xact;
+ count++;
+ } else
#endif
- {
- if (last_entry != xact->entry) {
- first_line_format.format_elements(output_stream, details_t(xact));
- } else {
- next_lines_format.format_elements(output_stream, details_t(xact));
+ {
+ if (last_entry != xact->entry) {
+ first_line_format.format_elements(output_stream, details_t(xact));
+ } else {
+ next_lines_format.format_elements(output_stream, details_t(xact));
+ }
}
}
diff --git a/format.h b/format.h
index 172f9a85..562c7a31 100644
--- a/format.h
+++ b/format.h
@@ -82,6 +82,8 @@ struct format_t
}
};
+#define COLLAPSED_REGISTER 1 // support collapsed registers
+
class format_transaction
{
std::ostream& output_stream;
diff --git a/main.cc b/main.cc
index eaa4afd7..8d68de29 100644
--- a/main.cc
+++ b/main.cc
@@ -578,18 +578,15 @@ int main(int argc, char * argv[])
predicate.reset(parse_expr(predicate_string));
}
- if (! show_empty && display_predicate_string.empty()) {
- if (command == "b")
+ if (display_predicate_string.empty()) {
+ if (command == "b" && ! show_empty)
display_predicate_string = "T";
else if (command == "E")
display_predicate_string = "a";
- }
-
- if (! display_predicate_string.empty()) {
+ } else {
#ifdef DEBUG
if (debug)
- std::cerr << "display predicate = " << display_predicate_string
- << std::endl;
+ std::cerr << "display-p = " << display_predicate_string << std::endl;
#endif
display_predicate.reset(parse_expr(display_predicate_string));
}
@@ -599,7 +596,7 @@ int main(int argc, char * argv[])
if (! sort_string.empty())
sort_order.reset(parse_expr(sort_string));
- // Setup the meaning of %t and %T encountered in format strings
+ // Setup the meaning of %t and %T, used in format strings
format_t::value_expr.reset(parse_expr(value_expr));
format_t::total_expr.reset(parse_expr(total_expr));
@@ -705,6 +702,7 @@ int main(int argc, char * argv[])
xact_display_flags);
std::stable_sort(transactions_pool.begin(), transactions_pool.end(),
compare_items<transaction_t>(sort_order.get()));
+
if (show_commodities_revalued) {
changed_value_filter<format_transaction>
filtered_formatter(formatter);