From 1110808a9d39d4b808aef724c861a2e1a38d2a69 Mon Sep 17 00:00:00 2001
From: Devtools Arcadia <arcadia-devtools@yandex-team.ru>
Date: Mon, 7 Feb 2022 18:08:42 +0300
Subject: intermediate changes ref:cde9a383711a11544ce7e107a78147fb96cc4029

---
 library/cpp/getopt/small/formatted_output.cpp | 36 +++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 library/cpp/getopt/small/formatted_output.cpp

(limited to 'library/cpp/getopt/small/formatted_output.cpp')

diff --git a/library/cpp/getopt/small/formatted_output.cpp b/library/cpp/getopt/small/formatted_output.cpp
new file mode 100644
index 0000000000..bf1b366f25
--- /dev/null
+++ b/library/cpp/getopt/small/formatted_output.cpp
@@ -0,0 +1,36 @@
+#include "formatted_output.h"
+
+namespace NLastGetopt {
+
+    TFormattedOutput::IndentGuard::IndentGuard(TFormattedOutput* output)
+        : Output(output)
+    {
+        Output->IndentLevel_ += 2;
+    }
+
+    TFormattedOutput::IndentGuard::~IndentGuard() {
+        Output->IndentLevel_ -= 2;
+    }
+
+    TFormattedOutput::IndentGuard TFormattedOutput::Indent() {
+        return IndentGuard(this);
+    }
+
+    TStringBuilder& TFormattedOutput::Line() {
+        return Lines_.emplace_back(IndentLevel_, TStringBuilder()).second;
+    }
+
+    void TFormattedOutput::Print(IOutputStream& out) {
+        for (auto&[indent, line] : Lines_) {
+            if (indent && !line.empty()) {
+                TTempBuf buf(indent);
+                Fill(buf.Data(), buf.Data() + indent, ' ');
+                out.Write(buf.Data(), indent);
+            }
+            out << line;
+            if (!line.EndsWith('\n')) {
+                out << Endl;
+            }
+        }
+    }
+}
-- 
cgit v1.2.3