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

javascript ignores

parent 45b03a6c
Loading
Loading
Loading
Loading
+25 −27
Changes for src/html.cpp: 25 added lines, 27 removed lines.
Original line number Diff line number Diff line
@@ -291,7 +291,12 @@ 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)
            continue;

		addelement(&firstEl,&lastEl);

        lastEl->spos = _HTable[i][0];
@@ -304,18 +309,28 @@ libhtmlpp::Element* libhtmlpp::HtmlString::_buildTree(ssize_t& pos) {
        _serialelize(_Data.substr(lastEl->spos,(lastEl->epos - lastEl->spos)+1),
                     (HtmlElement**) &lastEl->element);

        if((i+1) < _HTableSize){
            int tlen = (_HTable[i+1][0]-_HTable[i][2]);
        size_t epos=_HTableSize;

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

        if(epos < _HTableSize){
            int tlen = (_HTable[epos][0]-_HTable[i][2]);
            if(tlen>1){
                addelement(&firstEl,&lastEl);
                lastEl->element=new TextElement();
                lastEl->spos = _HTable[i][2]+1;
                lastEl->epos = _HTable[i+1][0]-1;
                lastEl->epos = _HTable[epos][0]-1;
                ((TextElement*) lastEl->element)->_Text=_Data.substr(lastEl->spos,tlen-1);
                lastEl->terminator=false;
            }
        }

        i=epos;
    }

    if(!firstEl)
@@ -408,19 +423,9 @@ void libhtmlpp::HtmlString::_parseTree(){
        delete[] _HTable;
    }

    size_t opentag = 0, closetag = 0;
    size_t closetag = 0;
    for (size_t i = 0; i < _Data.size(); ++i) {
        switch (_Data[i]) {
        case HTMLTAG_OPEN:
            if (_Data.substr(i, 4) != "<!--") {
                size_t end = _Data.find(i,' ') >  _Data.find(i,'>') ? _Data.find(i,' ') : _Data.find(i,'>');
                if(_Data.substr(i, end).find("script")){
                    i+=_Data.find("/script",end);
                    ++closetag;
                }
                ++opentag;
            }
            break;
            case HTMLTAG_CLOSE:
                if (_Data.substr(i - 2, 3) != "-->") {
                    ++closetag;
@@ -431,12 +436,6 @@ void libhtmlpp::HtmlString::_parseTree(){
        }
    }

    if (opentag == 0 || opentag != closetag) {
        HTMLException excp;
        throw excp[HTMLException::Critical] << "Wrong formated Document!";
    }


    _HTableSize = closetag;

    _HTable = new ssize_t*[_HTableSize];
@@ -453,6 +452,7 @@ void libhtmlpp::HtmlString::_parseTree(){
    for(size_t ii=0; ii<_Data.length(); ++ii){
        switch(_Data[ii]){
            case HTMLTAG_OPEN:
                if(!open){
                    if (_Data.substr(ii, 4) != "<!--") {
                        open = true;
                        pterm = true;
@@ -460,22 +460,20 @@ void libhtmlpp::HtmlString::_parseTree(){
                    }else{
                        ii+=4;
                    }
                }
                break;
            case HTMLTAG_TERMINATE:
                if(pterm==true)
                    _HTable[ip][1]=ii;
                break;
            case HTMLTAG_CLOSE:
                if (_Data.substr(ii - 2, 3) != "-->") {
                    if (!open) {
                        excp[HTMLException::Error] << "HtmlString: parseTree parse Error couldn't fid opentag";
                        throw excp;
                    }
                if(_Data.find("/script",_HTable[ip][0],ii-_HTable[ip][0])==std::string::npos){
                    if (_Data.substr(ii - 2, 3) != "-->" && !open) {
                        _HTable[ip][2] = ii;
                        ++ip;
                    open = false;
                    }
                break;
                }
                open = false;
            case ' ':
                break;
            default: