diff --git a/src/libexpr/print.cc b/src/libexpr/print.cc index 572db25ed..df79718fb 100644 --- a/src/libexpr/print.cc +++ b/src/libexpr/print.cc @@ -179,6 +179,21 @@ private: } } + /** + * Print a space (for separating items or attributes). + * + * If pretty-printing is enabled, a newline and the current `indent` is + * printed instead. + */ + void printSpace(bool prettyPrint) + { + if (prettyPrint) { + output << "\n" << indent; + } else { + output << " "; + } + } + void printRepeated() { if (options.ansiColors) @@ -322,11 +337,7 @@ private: auto prettyPrint = shouldPrettyPrintAttrs(sorted); for (auto & i : sorted) { - if (prettyPrint) { - output << "\n" << indent; - } else { - output << " "; - } + printSpace(prettyPrint); if (attrsPrinted >= options.maxAttrs) { printElided(sorted.size() - attrsPrinted, "attribute", "attributes"); @@ -341,11 +352,7 @@ private: } decreaseIndent(); - if (prettyPrint) { - output << "\n" << indent; - } else { - output << " "; - } + printSpace(prettyPrint); output << "}"; } else { output << "{ ... }"; @@ -387,11 +394,7 @@ private: auto listItems = v.listItems(); auto prettyPrint = shouldPrettyPrintList(listItems); for (auto elem : listItems) { - if (prettyPrint) { - output << "\n" << indent; - } else { - output << " "; - } + printSpace(prettyPrint); if (listItemsPrinted >= options.maxListItems) { printElided(v.listSize() - listItemsPrinted, "item", "items"); @@ -407,11 +410,7 @@ private: } decreaseIndent(); - if (prettyPrint) { - output << "\n" << indent; - } else { - output << " "; - } + printSpace(prettyPrint); output << "]"; } else { output << "[ ... ]";