Subversion Repositories Scribus

Rev

Rev 8383 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed



#include "uniqueid.h"


void UniqueID::begin(Xml_string tag, Xml_attr attr)
{
        if (level > 0)  // skip mode
                ++level;
        else
        {
                Xml_attr::iterator it = attr.find("id");
                if (it != attr.end() && seenIDs.find(Xml_data(it)) != seenIDs.end())
                {
                        // enter skip mode
                        level = 1;
                        // replace with  <tag idref="seenid" />
                        Xml_attr idattr;
                        idattr["idref"] = Xml_data(it);
                        SaxFilter::begin(tag, idattr);
                        SaxFilter::end(tag);
                }
                else
                {
                        if (it != attr.end())
                                seenIDs.insert(Xml_data(it));
                        SaxFilter::begin(tag, attr);
                }
        }
}


void UniqueID::end(Xml_string tag)
{
        if (level > 0)  // skip mode
                --level;
        else
                SaxFilter::end(tag);
}

void UniqueID::chars(Xml_string text)
{
        if (level == 0)
                SaxFilter::chars(text);
}