summaryrefslogtreecommitdiff
path: root/src/smlrendererhtml.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/smlrendererhtml.cpp')
-rw-r--r--src/smlrendererhtml.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/smlrendererhtml.cpp b/src/smlrendererhtml.cpp
new file mode 100644
index 0000000..372d1e3
--- /dev/null
+++ b/src/smlrendererhtml.cpp
@@ -0,0 +1,62 @@
1#include "smlrendererhtml.h"
2#include "smlnode.h"
3
4SmlRendererHtml::SmlRendererHtml()
5{
6}
7
8SmlRendererHtml::~SmlRendererHtml()
9{
10}
11
12void SmlRendererHtml::render( Bu::Formatter &f, const SmlNode *pSml )
13{
14 switch( pSml->getType() )
15 {
16 case SmlNode::typeRoot:
17 f << "<p>";
18 for( SmlNode::SmlNodeList::const_iterator i =
19 pSml->getChildren().begin(); i; i++ )
20 {
21 render( f, *i );
22 }
23 f << "</p>";
24 break;
25
26 case SmlNode::typeText:
27 f << pSml->getText();
28 break;
29
30 case SmlNode::typeTag:
31 if( pSml->getChildren().isEmpty() )
32 {
33 if( pSml->getText() == "break" )
34 f << "</p><p>";
35 }
36 else
37 {
38 if( pSml->getText() == "red" )
39 {
40 f << "<span style=\"color: red;\">";
41 for( SmlNode::SmlNodeList::const_iterator i =
42 pSml->getChildren().begin(); i; i++ )
43 {
44 render( f, *i );
45 }
46 f << "</span>";
47 }
48 else if( pSml->getText() == "green" )
49 {
50 f << "<span style=\"color: green;\">";
51 for( SmlNode::SmlNodeList::const_iterator i =
52 pSml->getChildren().begin(); i; i++ )
53 {
54 render( f, *i );
55 }
56 f << "</span>";
57 }
58 }
59 break;
60 }
61}
62