From 50f08cb0b43a7d9fee1d4b3047d71f569d741380 Mon Sep 17 00:00:00 2001 From: Pixel Date: Mon, 28 Nov 2011 00:47:12 -0800 Subject: Whoops: forgot to implement the escaping function. --- src/SimpleMustache.cc | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) (limited to 'src/SimpleMustache.cc') diff --git a/src/SimpleMustache.cc b/src/SimpleMustache.cc index a7b2c45..6ed8401 100644 --- a/src/SimpleMustache.cc +++ b/src/SimpleMustache.cc @@ -420,3 +420,90 @@ Balau::SimpleMustache::Fragments::iterator Balau::SimpleMustache::render_r(IO': + size += 4; + break; + default: + size++; + break; + } + } + + char * t = (char *) malloc(size + 1); + char * p = t; + + for (int i = 0; i < s.strlen(); i++) { + switch (s[i]) { + case '%': + *p++ = '%'; + *p++ = 'a'; + *p++ = 'm'; + *p++ = 'p'; + *p++ = ';'; + break; + case '"': + *p++ = '&'; + *p++ = 'q'; + *p++ = 'u'; + *p++ = 'o'; + *p++ = 't'; + *p++ = ';'; + break; + case '\'': + *p++ = '&'; + *p++ = '#'; + *p++ = '3'; + *p++ = '5'; + *p++ = ';'; + break; + case '\\': + *p++ = '&'; + *p++ = '#'; + *p++ = '9'; + *p++ = '2'; + *p++ = ';'; + break; + case '<': + *p++ = '&'; + *p++ = 'l'; + *p++ = 't'; + *p++ = ';'; + break; + case '>': + *p++ = '&'; + *p++ = 'g'; + *p++ = 't'; + *p++ = ';'; + break; + default: + break; + } + } + + *p = 0; + + String r(t, size); + free(t); + return r; +} -- cgit v1.2.3