Back to index

scribus-ng  1.3.4.dfsg+svn20071115
saxfilter.cpp
Go to the documentation of this file.
00001 
00002 #include "saxfilter.h"
00003 
00004 
00005 void SaxFilter::beginDoc()
00006 {
00007        m_delegate->beginDoc();
00008 }
00009 
00010 void SaxFilter::endDoc()
00011 {
00012        m_delegate->endDoc();
00013 }
00014 
00015 void SaxFilter::begin(const Xml_string& tag, Xml_attr attr)
00016 {
00017        m_delegate->begin(tag, attr);
00018 }
00019 
00020 void SaxFilter::end(const Xml_string& tag)
00021 {
00022        m_delegate->end(tag);
00023 }
00024 
00025 void SaxFilter::chars(const Xml_string& text)
00026 {
00027        m_delegate->chars(text);
00028 }
00029 
00030 
00031 KeepOpen::KeepOpen(SaxHandler* delegate) : SaxFilter(delegate), m_level(0) {}
00032 
00033 void KeepOpen::begin(const Xml_string& tag, Xml_attr attr)
00034 {
00035        ++m_level;
00036        if (m_level == 1)
00037               m_tag = tag;
00038        SaxFilter::begin(tag, attr);
00039 }
00040 
00041 void KeepOpen::end(const Xml_string& tag)
00042 {
00043        --m_level;
00044        if (m_level > 0)
00045               SaxFilter::end(tag);
00046 }
00047 
00048 Xml_string KeepOpen::openTag()
00049 {
00050        return m_tag;
00051 }
00052 
00053 RenameElem::RenameElem(SaxHandler* delegate, const Xml_string& oldname, const Xml_string& newname)
00054 : SaxFilter(delegate), m_level(0), m_old(oldname), m_new(newname) {}
00055 
00056 RenameElem::RenameElem(SaxHandler* delegate, const Xml_string& newname)
00057 : SaxFilter(delegate), m_level(0), m_old(""), m_new(newname) {}
00058 
00059 void RenameElem::begin(const Xml_string& tag, Xml_attr attr)
00060 {
00061        ++m_level;
00062        if (m_level == 1 || m_old == tag)
00063               SaxFilter::begin(m_new, attr);
00064        else
00065               SaxFilter::begin(tag, attr);
00066 }
00067 
00068 void RenameElem::end(const Xml_string& tag)
00069 {
00070        if (m_level == 1 || m_old == tag)
00071               SaxFilter::end(m_new);
00072        else
00073               SaxFilter::end(tag);
00074        --m_level;
00075 }
00076 
00077 
00078 AddAttributes::AddAttributes(SaxHandler* delegate, Xml_attr add) 
00079 : SaxFilter(delegate), m_oneshot(false), m_attributes(add) {}
00080 
00081 
00082 void AddAttributes::begin(const Xml_string& tag, Xml_attr attr)
00083 {
00084        if ( !m_oneshot )
00085        {
00086               m_oneshot = true;
00087               Xml_attr::iterator it;
00088               for (it = attr.begin(); it != attr.end(); ++it)
00089                      m_attributes[Xml_key(it)] = Xml_data(it);
00090               SaxFilter::begin(tag, m_attributes);
00091        }
00092        else
00093               SaxFilter::begin(tag, attr);
00094 }
00095