Commit 85e1eea4 authored by jan.koester's avatar jan.koester
Browse files

test

parent 04a575ec
Loading
Loading
Loading
Loading
+36 −27
Original line number Diff line number Diff line
@@ -272,13 +272,13 @@ void libhtmlpp::HtmlString::_buildtreenode(std::unique_ptr<libhtmlpp::DocElement

            if (curcel->element && curcel->element->getType()==HtmlEl && !curcel->terminator &&
                  *reinterpret_cast<HtmlElement*>(curcel->element.get()) ==
                  *reinterpret_cast<HtmlElement*>(termel->element.get()) ) {
                  reinterpret_cast<HtmlElement*>(termel->element.get()) ) {
                ++i;
            }

            if (curcel->element && curcel->element->getType()==HtmlEl && curcel->terminator &&
                 *reinterpret_cast<HtmlElement*>(curcel->element.get()) ==
                 *reinterpret_cast<HtmlElement*>(termel->element.get()) ) {
                 reinterpret_cast<HtmlElement*>(termel->element.get()) ) {
                if(i==0){
                    return curcel;
                }else{
@@ -301,6 +301,8 @@ void libhtmlpp::HtmlString::_buildtreenode(std::unique_ptr<libhtmlpp::DocElement
    };
    size_t counter =0 ;
NEXTDOCEL:
    std::cout << "start" << start->element.get() << std::endl;

    if(!start->element){
         HTMLException e;
         e[HTMLException::Error] << "start not found this shouldn't happend in line: " << counter << "!";
@@ -311,11 +313,12 @@ NEXTDOCEL:

    DocElements *parent=checkterminator(start,end);

    if(prev && !start->terminator){
    if(prev && start->element && !start->terminator){
        start->element->_prevElement=prev->element.get();
    }

    if(parent && parent!=next){
        std::cout << "child" << parent << std::endl;
        ((HtmlElement*)(start->element.get()))->_childElement=std::move(next->element);
        cpyel childel;
        childel.start=next->nextel.get();
@@ -324,19 +327,17 @@ NEXTDOCEL:
        next=parent->nextel.get();
    }

    if(next && next->element)
        std::cout << next->element->getType() << std::endl;

    while(next && next->element){
    while(next && next!=end){
        if(!next->terminator){
            start->element->_nextElement=std::move(next->element);
            prev=start;
            start=next->nextel.get();
            if(start->nextel)
                next=start->nextel.get();
            else
                next=nullptr;
            goto NEXTDOCEL;
        }
        if(next==end)
            break;
        next=next->nextel.get();
    };

@@ -372,7 +373,7 @@ void libhtmlpp::HtmlString::_buildTree() {
    for(size_t ii=0; ii<_Data.size(); ++ii){
BUILDTREE_STARTLOOP:
        if(_Data[ii]==HTMLTAG_OPEN){
            if(ii + 4 < _Data.size() && std::equal(_Data.begin()+ii,_Data.begin()+(ii+4), "<!--")){
            if( (ii + 4) < _Data.size() && std::equal(_Data.begin()+ii,_Data.begin()+(ii+4), "<!--")){
                size_t start=ii;
                while(ii<_Data.size()){
                    if(std::equal(_Data.begin()+ii,_Data.begin()+(ii+3),"-->")) {
@@ -385,7 +386,7 @@ BUILDTREE_STARTLOOP:
                    }
                    ++ii;
                }
            }else if(ii+7 < _Data.size() && std::equal(_Data.begin() + ii, _Data.begin() + (ii + 7), "<script")) {
            }else if((ii+7) < _Data.size() && std::equal(_Data.begin()+ii,_Data.begin()+(ii+7),"<script")){
                size_t start=ii;

                while(ii<_Data.size()){
@@ -396,9 +397,7 @@ BUILDTREE_STARTLOOP:

                        std::copy(_Data.begin()+start,_Data.begin()+ii,std::back_inserter(tel));

                         ii+=7;

                        _serialelize(tel,(ScriptElement*)lastEl->element.get());
                        _serialelize(tel,(SvgElement*)lastEl->element.get());

                        break;
                    }
@@ -407,16 +406,17 @@ BUILDTREE_STARTLOOP:

                size_t close=++ii;

                while(ii+8<_Data.size()){
                while(ii<_Data.size()){
                    if( std::equal(_Data.begin()+ii,_Data.begin()+(ii+8),"</script")) {

                        std::copy(_Data.begin()+close,_Data.begin()+ii,
                                  std::back_inserter(((ScriptElement*)lastEl->element.get())->_Script));
                                  std::back_inserter(((SvgElement*)lastEl->element.get())->_Svg));
                        ii+=8;
                        break;
                    }
                    ++ii;
                }
            }else if(std::equal(_Data.begin()+ii,_Data.begin()+(ii+4),"<svg")){
            }else if( (ii+4) < _Data.size() && std::equal(_Data.begin()+ii,_Data.begin()+(ii+4),"<svg")){
                size_t start=ii;

                while(ii<_Data.size()){
@@ -447,7 +447,7 @@ BUILDTREE_STARTLOOP:
                    ++ii;
                }
            }else {
                size_t start=+ii;
                size_t start=ii;
                addelement(&lastEl);
                lastEl->element=std::make_unique<HtmlElement>();
                bool term=false;
@@ -460,7 +460,7 @@ BUILDTREE_STARTLOOP:
                        _serialelize(tel,(HtmlElement*)lastEl->element.get());
                        break;
                    }
                    if(_Data[ii]!=' '){
                    if(_Data[ii]!=' ' && _Data[ii]!=HTMLTAG_OPEN){
                        term=true;
                    }
                    ++ii;
@@ -475,13 +475,14 @@ BUILDTREE_STARTLOOP:
                            addelement(&lastEl);
                            lastEl->element=std::make_unique<TextElement>();
                            std::copy(buf.begin(),buf.end(),std::back_inserter(((TextElement*)(lastEl->element.get()))->_Text));
                            goto BUILDTREE_STARTLOOP;

                        }
                        goto BUILDTREE_STARTLOOP;
                    };
                    case '\r'|'\n' :{
                    case '\r':
                    case '\n':{
                        ++ii;
                        continue;
                    };
                    }break;
                    default:{
                        buf.push_back(_Data[ii++]);
                    };
@@ -490,6 +491,15 @@ BUILDTREE_STARTLOOP:
        }
    }

    for(DocElements *el=firstEl.get(); el; el=el->nextel.get()){
        if(el->element->getType()==HtmlEl)
            std::cerr << "Html: " << reinterpret_cast<HtmlElement*>(el->element.get())->getTagname() << "Term: "<< el->terminator <<std::endl;
        else if(el->element->getType()==ScriptEL)
            std::cerr << "Script: " << reinterpret_cast<ScriptElement*>(el->element.get())->getScript() <<std::endl;
        else if(el->element->getType()==TextEl)
            std::cerr << "Text: " << reinterpret_cast<TextElement*>(el->element.get())->getText() <<std::endl;
    }

    _buildtreenode(firstEl,lastEl);

    rootEl=std::move(firstEl->element);
@@ -1158,12 +1168,11 @@ libhtmlpp::ScriptElement & libhtmlpp::ScriptElement::operator=(const libhtmlpp::
}

void libhtmlpp::ScriptElement::setScript(const std::string& script){
    std::copy(script.begin(),script.end(),
              std::insert_iterator<std::vector<char>>(_Script,_Script.begin()));
    std::copy(script.begin(),script.end(),std::back_inserter(_Script));
}

const std::string libhtmlpp::ScriptElement::getScript(){
    return _Script.data();
    return std::string(_Script.begin(),_Script.end());
}

int libhtmlpp::ScriptElement::getType() const{