Commit dc47056b authored by jan.koester's avatar jan.koester
Browse files

repaired decode/encode

parent db2b8106
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -682,26 +682,38 @@ void libhtmlpp::HtmlString::_serialelize(std::vector<char> in, libhtmlpp::HtmlEl
}

void libhtmlpp::HtmlEncode(const std::string &input, std::string &output){
    HtmlString tmp(output);
    HtmlEncode(input,&tmp);
    output=tmp.str();
    size_t ilen=input.length();
    for(size_t i=0; i<ilen; ++i){
        size_t ii=0;
        bool changed=false;
        while(HtmlSigns[ii][0]){
            if(input[i]==HtmlSigns[ii][0][0]){
                output+=HtmlSigns[ii][1];
                changed=true;
            }
            ++ii;
        }
        if(!changed)
            output.push_back(input[i]);
    }
}

void libhtmlpp::HtmlEncode(const std::string &input, HtmlString* output){
void libhtmlpp::HtmlDecode(const std::string &input,HtmlString &output){
    size_t ilen=input.length();
    for(size_t i=0; i<ilen; ++i){
        size_t ii=0;
        bool changed=false;
        while(HtmlSigns[ii][0]){
            if(input[i]==HtmlSigns[ii][0][0]){
                output->append(HtmlSigns[ii][1]);
            if(input.compare(i,strlen(HtmlSigns[ii][1]),HtmlSigns[ii][1]) == 0){
                output << HtmlSigns[ii][0];
                changed=true;
            }
            ++ii;
        }
        if(!changed)
            output->push_back(input[i]);
            output << input[i];
    }
    output.parse();
}


+1 −1
Original line number Diff line number Diff line
@@ -386,7 +386,7 @@ namespace libhtmlpp {
 */


    void HtmlEncode(const std::string &input,HtmlString *output);
    void HtmlDecode(const std::string &input,HtmlString &output);
/**
 * @brief Encodes special HTML characters in a string and writes into std::string.
 * @param input Plain input string.