From 73345c7dc06a6488f34d4a76906a62171a519278 Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Tue, 5 Nov 2019 19:46:50 +0300 Subject: [texo] Medium has been changed. --- src/plain.cpp | 80 +++++++++++++++++++++-------------------------------------- 1 file changed, 28 insertions(+), 52 deletions(-) (limited to 'src/plain.cpp') diff --git a/src/plain.cpp b/src/plain.cpp index d6d262d..2639c65 100644 --- a/src/plain.cpp +++ b/src/plain.cpp @@ -24,31 +24,15 @@ void TexoProducerPlain::Put(const Texo &piece) void TexoProducerPlain::Put(const TexoParagraph &piece) { - if (piece.closing) { - exporter.Put("\n\n"); - newline = true; - } + exporter.Put("\n\n"); + quoted = false; + newline = true; } void TexoProducerPlain::Put(const TexoQuote &piece) { - if (piece.closing) { - exporter.Put("\n\n"); - quoted = false; - newline = true; - } else { - if (!newline) { - exporter.Put('\n'); - } - exporter.Put(">"); - quoted = true; - } -} - -void TexoProducerPlain::Put(const TexoLineBreak &piece) -{ - exporter.Put("\n\n"); - newline = true; + exporter.Put("\n\n>"); + quoted = true; } void TexoProducerPlain::Put(const TexoHorizontalRule &piece) @@ -57,7 +41,7 @@ void TexoProducerPlain::Put(const TexoHorizontalRule &piece) exporter.Put('\n'); } exporter.Put("--------------------------------------------------\n"); - newline = false; + newline = true; } @@ -67,34 +51,25 @@ TexoImporterPlain::TexoImporterPlain(TexoProducer &producer): producer.Put(TexoParagraph()); } -TexoImporterPlain::~TexoImporterPlain() +void TexoImporterPlain::End() { - switch (state) { - case rule: - producer.Put('\n'); - for (;dash_count > 0; --dash_count) { - producer.Put('-'); - } - case text: case newline: - producer.Put(TexoParagraph(true)); - break; - case quote: case quote_newline: - producer.Put(TexoQuote(true)); - break; - case paragraph: - break; + if (state == rule) { + producer.Put(TexoHorizontalRule()); + state = text; } + producer.End(); } void TexoImporterPlain::Put(char c) { switch (state) { - case text: Text(c); break; - case newline: Newline(c); break; - case paragraph: Paragraph(c); break; - case quote: Quote(c); break; - case quote_newline: QuoteNewline(c); break; - case rule: Rule(c); break; + case text: Text(c); break; + case newline: Newline(c); break; + case paragraph: Paragraph(c); break; + case quote: Quote(c); break; + case quote_newline: QuoteNewline(c); break; + case rule: Rule(c); break; + case paragraph_rule: ParagraphRule(c); break; } } @@ -133,14 +108,12 @@ void TexoImporterPlain::Newline(char c) void TexoImporterPlain::Paragraph(char c) { if (c == '>') { - producer.Put(TexoParagraph(true)); producer.Put(TexoQuote()); state = quote; } else if (c == '-') { dash_count = 1; - state = rule; + state = paragraph_rule; } else if (c != '\n') { - producer.Put(TexoParagraph(true)); producer.Put(TexoParagraph()); state = text; Text(c); @@ -161,16 +134,11 @@ void TexoImporterPlain::QuoteNewline(char c) producer.Put('\n'); state = quote; } else if (c == '\n') { - producer.Put(TexoQuote(true)); - producer.Put(TexoParagraph()); state = paragraph; } else if (c == '-') { - producer.Put(TexoQuote(true)); - producer.Put(TexoParagraph()); dash_count = 1; - state = rule; + state = paragraph_rule; } else { - producer.Put(TexoQuote(true)); producer.Put(TexoParagraph()); state = text; Text(c); @@ -193,3 +161,11 @@ void TexoImporterPlain::Rule(char c) Text(c); } } + +void TexoImporterPlain::ParagraphRule(char c) +{ + if (c == '\n') { + producer.Put(TexoParagraph()); + } + Rule(c); +} -- cgit v1.2.3