Subversion Repositories Scribus

Rev

Rev 8390 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8383 avox 1
 
2
 
3
#include "uniqueid.h"
4
 
5
 
8832 avox 6
void UniqueID::begin(const Xml_string& tag, Xml_attr attr)
8383 avox 7
{
8
        if (level > 0)  // skip mode
9
                ++level;
10
        else
11
        {
12
                Xml_attr::iterator it = attr.find("id");
13
                if (it != attr.end() && seenIDs.find(Xml_data(it)) != seenIDs.end())
14
                {
15
                        // enter skip mode
16
                        level = 1;
17
                        // replace with  <tag idref="seenid" />
18
                        Xml_attr idattr;
19
                        idattr["idref"] = Xml_data(it);
20
                        SaxFilter::begin(tag, idattr);
21
                        SaxFilter::end(tag);
22
                }
23
                else
24
                {
25
                        if (it != attr.end())
26
                                seenIDs.insert(Xml_data(it));
27
                        SaxFilter::begin(tag, attr);
28
                }
29
        }
30
}
31
 
32
 
8832 avox 33
void UniqueID::end(const Xml_string& tag)
8383 avox 34
{
35
        if (level > 0)  // skip mode
36
                --level;
37
        else
38
                SaxFilter::end(tag);
39
}
40
 
8832 avox 41
void UniqueID::chars(const Xml_string& text)
8383 avox 42
{
43
        if (level == 0)
44
                SaxFilter::chars(text);
8390 avox 45
}