LCOV - code coverage report
Current view: top level - svtools/source/svhtml - HtmlWriter.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 54 66 81.8 %
Date: 2014-04-11 Functions: 8 10 80.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  */
      10             : 
      11             : #include <svtools/HtmlWriter.hxx>
      12             : 
      13         265 : HtmlWriter::HtmlWriter(SvStream& rStream) :
      14             :     mrStream(rStream),
      15             :     mbElementOpen(false),
      16             :     mbContentWritten(false),
      17         265 :     mbPrettyPrint(true)
      18         265 : {}
      19             : 
      20         265 : HtmlWriter::~HtmlWriter()
      21         265 : {}
      22             : 
      23           7 : void HtmlWriter::prettyPrint(bool bChoice)
      24             : {
      25           7 :     mbPrettyPrint = bChoice;
      26           7 : }
      27             : 
      28         267 : void HtmlWriter::start(const OString &aElement)
      29             : {
      30         267 :     if (mbElementOpen)
      31             :     {
      32           1 :         mrStream.WriteChar('>');
      33           1 :         if (!mbContentWritten && mbPrettyPrint)
      34           0 :             mrStream.WriteChar('\n');
      35           1 :         mbContentWritten = false;
      36             :     }
      37         267 :     maElementStack.push_back(aElement);
      38             : 
      39         267 :     if (mbPrettyPrint)
      40             :     {
      41         259 :         for(size_t i = 0; i < maElementStack.size() - 1; i++)
      42             :         {
      43           0 :             mrStream.WriteCharPtr("  ");
      44             :         }
      45             :     }
      46             : 
      47         267 :     mrStream.WriteChar('<');
      48         267 :     mrStream.WriteOString(aElement);
      49         267 :     mbElementOpen = true;
      50         267 : }
      51             : 
      52         260 : void HtmlWriter::single(const OString &aContent)
      53             : {
      54         260 :     start(aContent);
      55         260 :     end();
      56         260 : }
      57             : 
      58           0 : void HtmlWriter::endAttribute()
      59             : {
      60           0 :     if (mbElementOpen)
      61             :     {
      62           0 :         mrStream.WriteCharPtr("/>");
      63           0 :         if (mbPrettyPrint)
      64           0 :             mrStream.WriteCharPtr("\n");
      65           0 :         mbElementOpen = false;
      66             :     }
      67           0 : }
      68             : 
      69         267 : void HtmlWriter::end()
      70             : {
      71         267 :     if (mbElementOpen)
      72             :     {
      73         263 :         mrStream.WriteCharPtr("/>");
      74         263 :         if (mbPrettyPrint)
      75         259 :             mrStream.WriteCharPtr("\n");
      76             :     }
      77             :     else
      78             :     {
      79           4 :         if (!mbContentWritten && mbPrettyPrint)
      80             :         {
      81           0 :             for(size_t i = 0; i < maElementStack.size() - 1; i++)
      82             :             {
      83           0 :                 mrStream.WriteCharPtr("  ");
      84             :             }
      85             :         }
      86           4 :         mrStream.WriteCharPtr("</");
      87           4 :         mrStream.WriteOString(maElementStack.back());
      88           4 :         mrStream.WriteCharPtr(">");
      89           4 :         if (mbPrettyPrint)
      90           0 :             mrStream.WriteCharPtr("\n");
      91             :     }
      92         267 :     maElementStack.pop_back();
      93         267 :     mbElementOpen = false;
      94         267 :     mbContentWritten = false;
      95         267 : }
      96             : 
      97           3 : void HtmlWriter::write(const OString &aContent)
      98             : {
      99           3 :     if (mbElementOpen)
     100             :     {
     101           3 :         mrStream.WriteChar('>');
     102           3 :         mbElementOpen = false;
     103             :     }
     104           3 :     mbContentWritten = true;
     105           3 :     mrStream.WriteOString(aContent);
     106           3 : }
     107             : 
     108           5 : void HtmlWriter::attribute(const OString &aAttribute, const OString &aValue)
     109             : {
     110           5 :     if (mbElementOpen && !aAttribute.isEmpty() && !aValue.isEmpty())
     111             :     {
     112           5 :         mrStream.WriteChar(' ');
     113           5 :         mrStream.WriteOString(aAttribute);
     114           5 :         mrStream.WriteChar('=');
     115           5 :         mrStream.WriteChar('"');
     116           5 :         mrStream.WriteOString(aValue);
     117           5 :         mrStream.WriteChar('"');
     118             :     }
     119           5 : }
     120             : 
     121             : 
     122             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10