Commit 627666f5 authored by jan.koester's avatar jan.koester
Browse files

remove terminated

parent abd60922
Loading
Loading
Loading
Loading
+11 −28
Changes for src/html.cpp: 11 added lines, 28 removed lines.
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "encode.h"

#define HTMLTAG_OPEN '<'
#define HTMLTAG_TERMINATE '/'
#define HTMLTAG_CLOSE '>'

#define HTMLELEMENT 0
@@ -103,10 +102,7 @@ void libhtmlpp::HtmlString::insert(size_t pos, char src){

void libhtmlpp::HtmlString::clear(){
    _Data.clear();
    for(size_t i=0; i<_HTableSize; ++i){
        delete[] _HTable[i];
    }
    delete[]   _HTable;
    delete    *_HTable;
    delete     _RootNode;
    _InitString();
}
@@ -294,7 +290,7 @@ libhtmlpp::Element* libhtmlpp::HtmlString::_buildTree(ssize_t& pos) {


	for (size_t i = 0; i < _HTableSize; ++i) {
        if(_HTable[i][0] == -1 || _HTable[i][2] == -1)
        if(_HTable[i][0] == -1 || _HTable[i][1] == -1)
            continue;

		addelement(&firstEl,&lastEl);
@@ -309,21 +305,21 @@ libhtmlpp::Element* libhtmlpp::HtmlString::_buildTree(ssize_t& pos) {
        _serialelize(_Data.substr(lastEl->spos,(lastEl->epos - lastEl->spos)+1),
                     (HtmlElement**) &lastEl->element);

        size_t epos=0;
        size_t epos=i;

        for(size_t ii=i+1; ii<_HTableSize; ++ii){
            if(_HTable[ii][0]>=0 && _HTable[ii][2]>=0){
            if(_HTable[ii][0]>=0 && _HTable[ii][1]>=0){
                epos=ii;
                break;
            }
        }

        if(epos < _HTableSize){
            int tlen = (_HTable[epos][0]-_HTable[i][2]);
            int tlen = (_HTable[epos][0]-_HTable[i][1]);
            if(tlen>1){
                addelement(&firstEl,&lastEl);
                lastEl->element=new TextElement();
                lastEl->spos = _HTable[i][2]+1;
                lastEl->spos = _HTable[i][1]+1;
                lastEl->epos = _HTable[epos][0]-1;
                ((TextElement*) lastEl->element)->_Text=_Data.substr(lastEl->spos,tlen-1);
                lastEl->terminator=false;
@@ -407,19 +403,15 @@ void libhtmlpp::HtmlString::_serialelize(std::string in, libhtmlpp::HtmlElement
}

void libhtmlpp::HtmlString::_InitString(){
    _HTable=nullptr;
    *_HTable=nullptr;
    _HTableSize=0;
    _RootNode=nullptr;
}

void libhtmlpp::HtmlString::_parseTree(){
    HTMLException excp;
    if(_HTable){
        for(size_t i=0; i< _HTableSize; ++i){
            delete[] _HTable[i];
        }
        delete[] _HTable;
    }
    delete *_HTable;


    size_t closetag = 0;
    for (size_t i = 0; i < _Data.size(); ++i) {
@@ -436,16 +428,13 @@ void libhtmlpp::HtmlString::_parseTree(){

    _HTableSize = closetag;

    _HTable = new ssize_t*[_HTableSize];
    *_HTable = new ssize_t[_HTableSize];
    for (size_t is = 0; is < _HTableSize; is++) {
        _HTable[is] = new ssize_t[3];
        _HTable[is][0] = -1;
        _HTable[is][1] = -1;
        _HTable[is][2] = -1;
    }

    bool open=false;
    bool pterm=false;
    size_t ip=0;
    for(size_t ii=0; ii<_Data.length(); ++ii){
        switch(_Data[ii]){
@@ -453,21 +442,16 @@ void libhtmlpp::HtmlString::_parseTree(){
                if(!open){
                    if (_Data.substr(ii, 4) != "<!--") {
                        open = true;
                        pterm = true;
                        _HTable[ip][0] = ii;
                    }else{
                        ii+=4;
                    }
                }
                break;
            case HTMLTAG_TERMINATE:
                if(pterm==true)
                    _HTable[ip][1]=ii;
                break;
            case HTMLTAG_CLOSE:
                if (_Data.substr(ii - 2, 3) != "-->" && open) {
                    if(_Data.find("/script",_HTable[ip][0],ii-_HTable[ip][0])==std::string::npos){
                        _HTable[ip][2] = ii;
                        _HTable[ip][1] = ii;
                        ++ip;
                        open = false;
                    }
@@ -476,7 +460,6 @@ void libhtmlpp::HtmlString::_parseTree(){
            case ' ':
                break;
            default:
                pterm=false;
                break;
        }
    }
+1 −1
Changes for src/html.h: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -184,7 +184,7 @@ namespace libhtmlpp {
        Element*          _buildTree(ssize_t& pos);
        DocElements      *_buildtreenode(DocElements* prev,DocElements* next,DocElements *start,DocElements *end);
        std::string       _Data;
        ssize_t**         _HTable;
        ssize_t*          _HTable[2];
        size_t            _HTableSize;
        HtmlElement*      _RootNode;
        friend void HtmlEncode(const char *input,HtmlString &output);