#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("
"); } void TexoProducerHTML::Put(const TexoCode &piece) { Close(); opened_block = code; exporter.Put("
"); } void TexoProducerHTML::Put(const TexoQuote &piece) { Close(); opened_block = quote; 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); }"); break; case code: exporter.Put(""); } void TexoProducerHTML::Put(const TexoMono &piece) { static bool closing = false; if (closing) { exporter.Put(""); } else { exporter.Put("
"); break; case quote: 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(""); 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("