#include "html.hpp" TexoProducerHTML::TexoProducerHTML(TexoExporter &exporter): TexoProducer(exporter), opened_block(none) {} void TexoProducerHTML::End() { Close(); opened_block = none; } void TexoProducerHTML::Put(const Texo &piece) { switch (piece.c) { case '<': exporter.Put("<"); break; case '>': exporter.Put(">"); break; case '&': exporter.Put("&"); break; default: exporter.Put(piece.c); break; } } void TexoProducerHTML::Put(const TexoHeader &piece) { Close(); if (piece.level <= 1) { exporter.Put("
"); opened_block = header_6; } else if (piece.level == 2) { exporter.Put("
"); opened_block = header_5; } else if (piece.level == 3) { exporter.Put("

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

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

"); opened_block = header_2; } else { exporter.Put("

"); opened_block = header_1; } } void TexoProducerHTML::Put(const TexoParagraph &piece) { Close(); opened_block = paragraph; exporter.Put("

"); } void TexoProducerHTML::Put(const TexoCode &piece) { Close(); opened_block = code; exporter.Put("

");
}

void TexoProducerHTML::Put(const TexoQuote &piece)
{
    Close();
    opened_block = quote;
    exporter.Put("

"); } void TexoProducerHTML::Put(const TexoMono &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put(""); } closing = !closing; } void TexoProducerHTML::Put(const TexoBold &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put(""); } closing = !closing; } void TexoProducerHTML::Put(const TexoItalic &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put(""); } closing = !closing; } void TexoProducerHTML::Put(const TexoUnderline &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put(""); } closing = !closing; } void TexoProducerHTML::Put(const TexoStrike &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put(""); } closing = !closing; } void TexoProducerHTML::Put(const TexoImage &piece) { if (piece.path != "") { bool link = piece.link != ""; bool title = piece.title != ""; if (link) { exporter.Put(""); } exporter.Put("");
            exporter.Put(piece.alt);
        }
        if (title) {
            exporter.Put(""); if (link) { exporter.Put(""); } } } void TexoProducerHTML::Put(const TexoLink &piece) { if (piece.text != "" && piece.link != "") { exporter.Put(""); exporter.Put(piece.text); exporter.Put(""); } } void TexoProducerHTML::Put(const TexoHorizontalRule &piece) { exporter.Put("


"); } void TexoProducerHTML::Close() { 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; } } TexoImporterHTML::TexoImporterHTML(TexoProducer &producer): TexoImporter(producer) {} void TexoImporterHTML::Put(char c) { // TODO producer.Put(Texo(c)); } void TexoImporterHTML::Put(const ScriptVariable &str) { TexoImporter::Put(str); } void TexoImporterHTML::Put(FILE *file) { TexoImporter::Put(file); }