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/html.cpp | 94 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 35 deletions(-) (limited to 'src/html.cpp') diff --git a/src/html.cpp b/src/html.cpp index 6dd6098..4cf8174 100644 --- a/src/html.cpp +++ b/src/html.cpp @@ -2,9 +2,15 @@ TexoProducerHTML::TexoProducerHTML(TexoExporter &exporter): - TexoProducer(exporter) + TexoProducer(exporter), opened_block(none) {} +void TexoProducerHTML::End() +{ + Close(); + opened_block = none; +} + void TexoProducerHTML::Put(const Texo &piece) { switch (piece.c) { @@ -17,95 +23,102 @@ void TexoProducerHTML::Put(const Texo &piece) void TexoProducerHTML::Put(const TexoHeader &piece) { - exporter.Put('<'); - if (piece.closing) { - exporter.Put('/'); - } + Close(); if (piece.level <= 1) { - exporter.Put("h6>"); + exporter.Put("
"); + opened_block = header_6; } else if (piece.level == 2) { - exporter.Put("h5>"); + exporter.Put("
"); + opened_block = header_5; } else if (piece.level == 3) { - exporter.Put("h4>"); + exporter.Put("

"); + opened_block = header_4; } else if (piece.level == 4) { - exporter.Put("h3>"); + exporter.Put("

"); + opened_block = header_3; } else if (piece.level == 5) { - exporter.Put("h2>"); + exporter.Put("

"); + opened_block = header_2; } else { - exporter.Put("h1>"); + exporter.Put("

"); + opened_block = header_1; } } void TexoProducerHTML::Put(const TexoParagraph &piece) { - if (piece.closing) { - exporter.Put("

"); - } else { - exporter.Put("

"); - } + Close(); + opened_block = paragraph; + exporter.Put("

"); } void TexoProducerHTML::Put(const TexoCode &piece) { - if (piece.closing) { - exporter.Put(""); - } else { - exporter.Put("

");
-    }
+    Close();
+    opened_block = code;
+    exporter.Put("
");
 }
 
 void TexoProducerHTML::Put(const TexoQuote &piece)
 {
-    if (piece.closing) {
-        exporter.Put("

"); - } else { - exporter.Put("

"); - } + Close(); + opened_block = quote; + exporter.Put("

"); } void TexoProducerHTML::Put(const TexoMono &piece) { - if (piece.closing) { + static bool closing = false; + if (closing) { exporter.Put(""); } else { exporter.Put(""); } + closing = !closing; } void TexoProducerHTML::Put(const TexoBold &piece) { - if (piece.closing) { + static bool closing = false; + if (closing) { exporter.Put(""); } else { exporter.Put(""); } + closing = !closing; } void TexoProducerHTML::Put(const TexoItalic &piece) { - if (piece.closing) { + static bool closing = false; + if (closing) { exporter.Put(""); } else { exporter.Put(""); } + closing = !closing; } void TexoProducerHTML::Put(const TexoUnderline &piece) { - if (piece.closing) { + static bool closing = false; + if (closing) { exporter.Put(""); } else { exporter.Put(""); } + closing = !closing; } void TexoProducerHTML::Put(const TexoStrike &piece) { - if (piece.closing) { + static bool closing = false; + if (closing) { exporter.Put(""); } else { exporter.Put(""); } + closing = !closing; } void TexoProducerHTML::Put(const TexoImage &piece) @@ -154,14 +167,25 @@ void TexoProducerHTML::Put(const TexoLink &piece) } } -void TexoProducerHTML::Put(const TexoLineBreak &piece) +void TexoProducerHTML::Put(const TexoHorizontalRule &piece) { - exporter.Put("
"); + exporter.Put("


"); } -void TexoProducerHTML::Put(const TexoHorizontalRule &piece) +void TexoProducerHTML::Close() { - exporter.Put("
"); + switch (opened_block) { + case none: break; + case header_1: exporter.Put("

"); break; + case header_2: exporter.Put(""); break; + case header_3: exporter.Put(""); break; + case header_4: exporter.Put(""); break; + case header_5: exporter.Put(""); break; + case header_6: exporter.Put(""); break; + case paragraph: exporter.Put("

"); break; + case quote: exporter.Put("

"); break; + case code: exporter.Put(""); break; + } } -- cgit v1.2.3