From c6419eed96f2832b1de2b94d711552efaa9b172d Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Wed, 6 Nov 2019 20:09:07 +0300 Subject: [texo] Prettier print (+ fixes). --- src/lines.cpp | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'src/lines.cpp') diff --git a/src/lines.cpp b/src/lines.cpp index 3d93598..bacf048 100644 --- a/src/lines.cpp +++ b/src/lines.cpp @@ -2,9 +2,17 @@ TexoProducerLines::TexoProducerLines(TexoExporter &exporter): - TexoProducer(exporter), newline(false) + TexoProducer(exporter), newline(true) {} +void TexoProducerLines::End() +{ + if (!newline) { + exporter.Put('\n'); + newline = true; + } +} + void TexoProducerLines::Put(const Texo &piece) { if (piece.c == '\n') { @@ -20,19 +28,24 @@ void TexoProducerLines::Put(const Texo &piece) void TexoProducerLines::Put(const TexoParagraph &piece) { - exporter.Put('\n'); - newline = true; + if (!newline) { + exporter.Put('\n'); + newline = true; + } } void TexoProducerLines::Put(const TexoQuote &piece) { - exporter.Put("\n>"); + if (!newline) { + exporter.Put('\n'); + } + exporter.Put("> "); newline = false; } TexoImporterLines::TexoImporterLines(TexoProducer &producer): - TexoImporter(producer), newline(true) + TexoImporter(producer), newline(true), quote(false) {} void TexoImporterLines::Put(char c) @@ -40,15 +53,22 @@ void TexoImporterLines::Put(char c) if (c == '\n') { if (!newline) { newline = true; + quote = false; } } else if (newline) { if (c == '>') { producer.Put(TexoQuote()); + quote = true; } else { producer.Put(TexoParagraph()); producer.Put(c); } newline = false; + } else if (quote) { + if (c != ' ') { + quote = false; + producer.Put(c); + } } else { producer.Put(c); } -- cgit v1.2.3