From 1997de13eb395bc240a84fa609ee95ee61d3b5ba Mon Sep 17 00:00:00 2001 From: Andreas Krennmair Date: Sun, 12 Nov 2006 21:33:02 +0000 Subject: Andreas Krennmair: implemented (broken) renderer. --- src/htmlrenderer.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/htmlrenderer.cpp (limited to 'src/htmlrenderer.cpp') diff --git a/src/htmlrenderer.cpp b/src/htmlrenderer.cpp new file mode 100644 index 00000000..7783800f --- /dev/null +++ b/src/htmlrenderer.cpp @@ -0,0 +1,53 @@ +#include + +using namespace noos; + +htmlrenderer::htmlrenderer(unsigned int width) : w(width) { } + +std::vector htmlrenderer::render(const std::string& source) { + std::vector lines; + std::string curline, cleaned_source; + + const char * begin = source.c_str(); + bool addchar = true; + + // clean up source: + while (*begin) { + if (addchar) { + if (*begin != '<') { + char str[2]; + str[0] = *begin; + str[1] = '\0'; + cleaned_source.append(str); + } else { + addchar = false; + } + } else { + if (*begin == '>') { + addchar = true; + } + } + ++begin; + } + + begin = cleaned_source.c_str(); + while (strlen(begin) >= w) { + const char * end = begin + w; + while (end > begin && !strchr(" \t\r\n",*end)) ++end; + if (begin == end) { + char x[w+1]; + strncpy(x,begin,w); + x[w] = '\0'; + curline = x; + } else { + char x[end-begin+1]; + strncpy(x,begin,end-begin); + x[w] = '\0'; + curline = x; + } + lines.push_back(curline); + begin += w; + } + lines.push_back(begin); + return lines; +} -- cgit v1.2.3