diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2019-11-06 20:09:07 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2019-11-06 20:09:07 +0300 |
commit | c6419eed96f2832b1de2b94d711552efaa9b172d (patch) | |
tree | 999d0d08a0fe902be7b07c599c15714e00380656 /src/lines.cpp | |
parent | 73345c7dc06a6488f34d4a76906a62171a519278 (diff) | |
download | texo-c6419eed96f2832b1de2b94d711552efaa9b172d.tar texo-c6419eed96f2832b1de2b94d711552efaa9b172d.tar.xz texo-c6419eed96f2832b1de2b94d711552efaa9b172d.zip |
[texo] Prettier print (+ fixes).
Diffstat (limited to 'src/lines.cpp')
-rw-r--r-- | src/lines.cpp | 30 |
1 files changed, 25 insertions, 5 deletions
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); } |