Back to index

scribus-ng  1.3.4.dfsg+svn20071115
uniqueid.cpp
Go to the documentation of this file.
00001 
00002 
00003 #include "uniqueid.h"
00004 
00005 
00006 void UniqueID::begin(const Xml_string& tag, Xml_attr attr)
00007 {
00008        if (level > 0)  // skip mode
00009               ++level;
00010        else 
00011        {
00012               Xml_attr::iterator it = attr.find("id");
00013               if (it != attr.end() && seenIDs.find(Xml_data(it)) != seenIDs.end())
00014               {
00015                      // enter skip mode
00016                      level = 1;
00017                      // replace with  <tag idref="seenid" />
00018                      Xml_attr idattr;
00019                      idattr["idref"] = Xml_data(it);
00020                      SaxFilter::begin(tag, idattr);
00021                      SaxFilter::end(tag);
00022               }
00023               else 
00024               {
00025                      if (it != attr.end())
00026                             seenIDs.insert(Xml_data(it));
00027                      SaxFilter::begin(tag, attr);
00028               }
00029        }
00030 }
00031 
00032 
00033 void UniqueID::end(const Xml_string& tag)
00034 {
00035        if (level > 0)  // skip mode
00036               --level;
00037        else
00038               SaxFilter::end(tag);
00039 }
00040 
00041 void UniqueID::chars(const Xml_string& text)
00042 {
00043        if (level == 0)
00044               SaxFilter::chars(text);
00045 }