textfunctions.cpp

#include "textfunctions.h"

using namespace std;

/**
 *  Replace all quote characters etc in a
 *  string with the correct escape characters
 *  to place into a Javascript string. So the text
 * 
 *  "Double quotes",'single quotes'
 *
 *  would become \"Double quotes\",\'single quotes\'.
 */
std::string escapeJavascriptString( const std::string& in ) {
    int n = in.size();
    stringstream s;
    for (int i=0; i<n; i++) {
        char c = in[i];
        if (c=='\'') {
            s<<"\\\'";
        } else if (c=='\"') {
            s<<"\\\"";
        } else if (c=='\\') {
            s<<"\\\\";
        } else if (c=='\t') {
            s<<"\\t";
        } else if (c=='\n') {
            s<<"\\n";
        } else if (c=='\r') {
            s<<"\\r";
        } else {
            s<<c;
        }
    }
    return s.str();
}


//
//   TESTS
//


static void testEscapeJavascriptString() {
    string in = "\"\'\\\r\n\tNot escaped";
    string out = "\\\"\\\'\\\\\\r\\n\\tNot escaped";
    ASSERT( escapeJavascriptString( in )==out );
}

void testTextFunctions() {
    TEST( testEscapeJavascriptString );
}