Back to index

plone3  3.1.7
Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes
plone.app.portlets.portlets.feedparser._FeedParserMixin Class Reference
Inheritance diagram for plone.app.portlets.portlets.feedparser._FeedParserMixin:
Inheritance graph
[legend]
Collaboration diagram for plone.app.portlets.portlets.feedparser._FeedParserMixin:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def __init__
def unknown_starttag
def unknown_endtag
def handle_charref
def handle_entityref
def handle_data
def handle_comment
def handle_pi
def handle_decl
def parse_declaration
def mapContentType
def trackNamespace
def resolveURI
def decodeEntities
def push
def pop
def pushContent
def popContent

Public Attributes

 feeddata
 encoding
 entries
 version
 namespacesInUse
 infeed
 inentry
 incontent
 intextinput
 inimage
 inauthor
 incontributor
 inpublisher
 insource
 sourcedata
 contentparams
 namespacemap
 elementstack
 basestack
 langstack
 baseuri
 lang
 guidislink

Static Public Attributes

dictionary namespaces
list can_be_relative_uri = ['link', 'id', 'wfw_comment', 'wfw_commentrss', 'docs', 'url', 'href', 'comments', 'license', 'icon', 'logo']
list can_contain_relative_uris = ['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description']
list can_contain_dangerous_markup = ['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description']
list html_types = ['text/html', 'application/xhtml+xml']

Private Member Functions

def _mapToStandardPrefix
def _getAttribute
def _isBase64
def _itsAnHrefDamnIt
def _save
def _start_rss
def _start_dlhottitles
def _start_channel
def _cdf_common
def _start_feed
def _end_channel
def _start_image
def _end_image
def _start_textinput
def _end_textinput
def _start_author
def _end_author
def _start_itunes_owner
def _end_itunes_owner
def _start_contributor
def _end_contributor
def _start_dc_contributor
def _end_dc_contributor
def _start_name
def _end_name
def _start_width
def _end_width
def _start_height
def _end_height
def _start_url
def _end_url
def _start_email
def _end_email
def _getContext
def _save_author
def _save_contributor
def _sync_author_detail
def _start_subtitle
def _end_subtitle
def _start_rights
def _end_rights
def _start_item
def _end_item
def _start_dc_language
def _end_dc_language
def _start_dc_publisher
def _end_dc_publisher
def _start_published
def _end_published
def _start_updated
def _end_updated
def _start_created
def _end_created
def _start_expirationdate
def _end_expirationdate
def _start_cc_license
def _start_creativecommons_license
def _end_creativecommons_license
def _addTag
def _start_category
def _end_itunes_keywords
def _start_itunes_category
def _end_category
def _start_cloud
def _start_link
def _end_link
def _start_guid
def _end_guid
def _start_title
def _end_title
def _start_description
def _start_abstract
def _end_description
def _start_info
def _end_info
def _start_generator
def _end_generator
def _start_admin_generatoragent
def _start_admin_errorreportsto
def _start_summary
def _end_summary
def _start_enclosure
def _start_source
def _end_source
def _start_content
def _start_prodlink
def _start_body
def _start_content_encoded
def _end_content
def _start_itunes_image
def _end_itunes_block
def _end_itunes_explicit

Private Attributes

 _summaryKey

Static Private Attributes

dictionary _matchnamespaces = {}
 _start_feedinfo = _start_channel
 _end_feed = _end_channel
 _start_textInput = _start_textinput
 _end_textInput = _end_textinput
 _start_managingeditor = _start_author
 _start_dc_author = _start_author
 _start_dc_creator = _start_author
 _start_itunes_author = _start_author
 _end_managingeditor = _end_author
 _end_dc_author = _end_author
 _end_dc_creator = _end_author
 _end_itunes_author = _end_author
 _start_itunes_name = _start_name
 _end_itunes_name = _end_name
 _start_homepage = _start_url
 _start_uri = _start_url
 _end_homepage = _end_url
 _end_uri = _end_url
 _start_itunes_email = _start_email
 _end_itunes_email = _end_email
 _start_tagline = _start_subtitle
 _start_itunes_subtitle = _start_subtitle
 _end_tagline = _end_subtitle
 _end_itunes_subtitle = _end_subtitle
 _start_dc_rights = _start_rights
 _start_copyright = _start_rights
 _end_dc_rights = _end_rights
 _end_copyright = _end_rights
 _start_entry = _start_item
 _start_product = _start_item
 _end_entry = _end_item
 _start_language = _start_dc_language
 _end_language = _end_dc_language
 _start_webmaster = _start_dc_publisher
 _end_webmaster = _end_dc_publisher
 _start_dcterms_issued = _start_published
 _start_issued = _start_published
 _end_dcterms_issued = _end_published
 _end_issued = _end_published
 _start_modified = _start_updated
 _start_dcterms_modified = _start_updated
 _start_pubdate = _start_updated
 _start_dc_date = _start_updated
 _end_modified = _end_updated
 _end_dcterms_modified = _end_updated
 _end_pubdate = _end_updated
 _end_dc_date = _end_updated
 _start_dcterms_created = _start_created
 _end_dcterms_created = _end_created
 _start_dc_subject = _start_category
 _start_keywords = _start_category
 _end_dc_subject = _end_category
 _end_keywords = _end_category
 _end_itunes_category = _end_category
 _start_producturl = _start_link
 _end_producturl = _end_link
 _start_dc_title = _start_title
 _start_media_title = _start_title
 _end_dc_title = _end_title
 _end_media_title = _end_title
 _end_abstract = _end_description
 _start_feedburner_browserfriendly = _start_info
 _end_feedburner_browserfriendly = _end_info
 _start_itunes_summary = _start_summary
 _end_itunes_summary = _end_summary
 _start_xhtml_body = _start_body
 _start_fullitem = _start_content_encoded
 _end_body = _end_content
 _end_xhtml_body = _end_content
 _end_content_encoded = _end_content
 _end_fullitem = _end_content
 _end_prodlink = _end_content
 _start_itunes_link = _start_itunes_image

Detailed Description

Definition at line 288 of file feedparser.py.


Constructor & Destructor Documentation

def plone.app.portlets.portlets.feedparser._FeedParserMixin.__init__ (   self,
  baseuri = None,
  baselang = None,
  encoding = 'utf-8' 
)

Reimplemented in plone.app.portlets.portlets.feedparser._LooseFeedParser, and plone.app.portlets.portlets.feedparser._StrictFeedParser.

Definition at line 357 of file feedparser.py.

00357 
00358     def __init__(self, baseuri=None, baselang=None, encoding='utf-8'):
00359         if _debug: sys.stderr.write('initializing FeedParser\n')
00360         if not self._matchnamespaces:
00361             for k, v in self.namespaces.items():
00362                 self._matchnamespaces[k.lower()] = v
00363         self.feeddata = FeedParserDict() # feed-level data
00364         self.encoding = encoding # character encoding
00365         self.entries = [] # list of entry-level data
00366         self.version = '' # feed type/version, see SUPPORTED_VERSIONS
00367         self.namespacesInUse = {} # dictionary of namespaces defined by the feed
00368 
00369         # the following are used internally to track state;
00370         # this is really out of control and should be refactored
00371         self.infeed = 0
00372         self.inentry = 0
00373         self.incontent = 0
00374         self.intextinput = 0
00375         self.inimage = 0
00376         self.inauthor = 0
00377         self.incontributor = 0
00378         self.inpublisher = 0
00379         self.insource = 0
00380         self.sourcedata = FeedParserDict()
00381         self.contentparams = FeedParserDict()
00382         self._summaryKey = None
00383         self.namespacemap = {}
00384         self.elementstack = []
00385         self.basestack = []
00386         self.langstack = []
00387         self.baseuri = baseuri or ''
00388         self.lang = baselang or None
00389         if baselang:
00390             self.feeddata['language'] = baselang

Here is the caller graph for this function:


Member Function Documentation

def plone.app.portlets.portlets.feedparser._FeedParserMixin._addTag (   self,
  term,
  scheme,
  label 
) [private]

Definition at line 1104 of file feedparser.py.

01104 
01105     def _addTag(self, term, scheme, label):
01106         context = self._getContext()
01107         tags = context.setdefault('tags', [])
01108         if (not term) and (not scheme) and (not label): return
01109         value = FeedParserDict({'term': term, 'scheme': scheme, 'label': label})
01110         if value not in tags:
01111             tags.append(FeedParserDict({'term': term, 'scheme': scheme, 'label': label}))

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 769 of file feedparser.py.

00769 
00770     def _cdf_common(self, attrsD):
00771         if attrsD.has_key('lastmod'):
00772             self._start_modified({})
00773             self.elementstack[-1][-1] = attrsD['lastmod']
00774             self._end_modified()
00775         if attrsD.has_key('href'):
00776             self._start_link({})
00777             self.elementstack[-1][-1] = attrsD['href']
00778             self._end_link()
    

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 826 of file feedparser.py.

00826 
00827     def _end_author(self):
00828         self.pop('author')
00829         self.inauthor = 0
        self._sync_author_detail()

Here is the call graph for this function:

Definition at line 1130 of file feedparser.py.

01130 
01131     def _end_category(self):
01132         value = self.pop('category')
01133         if not value: return
01134         context = self._getContext()
01135         tags = context['tags']
01136         if value and len(tags) and not tags[-1]['term']:
01137             tags[-1]['term'] = value
01138         else:
            self._addTag(value, None, None)

Here is the call graph for this function:

Definition at line 792 of file feedparser.py.

00792 
00793     def _end_channel(self):
        self.infeed = 0

Definition at line 1316 of file feedparser.py.

01316 
01317     def _end_content(self):
01318         copyToDescription = self.mapContentType(self.contentparams.get('type')) in (['text/plain'] + self.html_types)
01319         value = self.popContent('content')
01320         if copyToDescription:
            self._save('description', value)

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 851 of file feedparser.py.

00851 
00852     def _end_contributor(self):
00853         self.pop('contributor')
00854         self.incontributor = 0

Here is the call graph for this function:

Definition at line 1080 of file feedparser.py.

01080 
01081     def _end_created(self):
01082         value = self.pop('created')
        self._save('created_parsed', _parse_date(value))

Here is the call graph for this function:

Definition at line 1101 of file feedparser.py.

01101 
01102     def _end_creativecommons_license(self):
01103         self.pop('license')

Here is the call graph for this function:

Definition at line 862 of file feedparser.py.

00862 
00863     def _end_dc_contributor(self):
00864         self._end_name()
00865         self.incontributor = 0

Here is the call graph for this function:

Definition at line 1036 of file feedparser.py.

01036 
01037     def _end_dc_language(self):
        self.lang = self.pop('language')

Here is the call graph for this function:

Definition at line 1044 of file feedparser.py.

01044 
01045     def _end_dc_publisher(self):
01046         self.pop('publisher')
        self._sync_author_detail('publisher')

Here is the call graph for this function:

Definition at line 1213 of file feedparser.py.

01213 
01214     def _end_description(self):
01215         if self._summaryKey == 'content':
01216             self._end_content()
01217         else:
01218             value = self.popContent('description')
01219             context = self._getContext()
01220             if self.intextinput:
01221                 context['textinput']['description'] = value
01222             elif self.inimage:
01223                 context['image']['description'] = value
        self._summaryKey = None

Here is the call graph for this function:

Definition at line 933 of file feedparser.py.

00933 
00934     def _end_email(self):
00935         value = self.pop('email')
00936         if self.inpublisher:
00937             self._save_author('email', value, 'publisher')
00938         elif self.inauthor:
00939             self._save_author('email', value)
00940         elif self.incontributor:
            self._save_contributor('email', value)

Here is the call graph for this function:

Definition at line 1088 of file feedparser.py.

01088 
01089     def _end_expirationdate(self):
01090         self._save('expired_parsed', _parse_date(self.pop('expired')))

Here is the call graph for this function:

Definition at line 1242 of file feedparser.py.

01242 
01243     def _end_generator(self):
01244         value = self.pop('generator')
01245         context = self._getContext()
01246         if context.has_key('generator_detail'):
01247             context['generator_detail']['name'] = value
            

Here is the call graph for this function:

Definition at line 1179 of file feedparser.py.

01179 
01180     def _end_guid(self):
01181         value = self.pop('id')
01182         self._save('guidislink', self.guidislink and not self._getContext().has_key('link'))
01183         if self.guidislink:
01184             # guid acts as link, but only if 'ispermalink' is not present or is 'true',
01185             # and only if the item doesn't already have a link element
01186             self._save('link', value)

Here is the call graph for this function:

Definition at line 899 of file feedparser.py.

00899 
00900     def _end_height(self):
00901         value = self.pop('height')
00902         try:
00903             value = int(value)
00904         except:
00905             value = 0
00906         if self.inimage:
00907             context = self._getContext()
00908             context['image']['height'] = value

Here is the call graph for this function:

Definition at line 802 of file feedparser.py.

00802 
00803     def _end_image(self):
00804         self.pop('image')
00805         self.inimage = 0

Here is the call graph for this function:

Definition at line 1230 of file feedparser.py.

01230 
01231     def _end_info(self):
        self.popContent('info')

Here is the call graph for this function:

Definition at line 1027 of file feedparser.py.

01027 
01028     def _end_item(self):
01029         self.pop('item')
        self.inentry = 0

Here is the call graph for this function:

Definition at line 1332 of file feedparser.py.

01332 
01333     def _end_itunes_block(self):
01334         value = self.pop('itunes_block', 0)
01335         self._getContext()['itunes_block'] = (value == 'yes') and 1 or 0

Here is the call graph for this function:

Definition at line 1336 of file feedparser.py.

01336 
01337     def _end_itunes_explicit(self):
01338         value = self.pop('itunes_explicit', 0)
01339         self._getContext()['itunes_explicit'] = (value == 'yes') and 1 or 0

Here is the call graph for this function:

Definition at line 1122 of file feedparser.py.

01122 
01123     def _end_itunes_keywords(self):
01124         for term in self.pop('itunes_keywords').split():
01125             self._addTag(term, 'http://www.itunes.com/', None)
        

Here is the call graph for this function:

Definition at line 839 of file feedparser.py.

00839 
00840     def _end_itunes_owner(self):
00841         self.pop('publisher')
00842         self.inpublisher = 0
00843         self._sync_author_detail('publisher')

Here is the call graph for this function:

Definition at line 1166 of file feedparser.py.

01166 
01167     def _end_link(self):
01168         value = self.pop('link')
01169         context = self._getContext()
01170         if self.intextinput:
01171             context['textinput']['link'] = value
01172         if self.inimage:
            context['image']['link'] = value

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 870 of file feedparser.py.

00870 
00871     def _end_name(self):
00872         value = self.pop('name')
00873         if self.inpublisher:
00874             self._save_author('name', value, 'publisher')
00875         elif self.inauthor:
00876             self._save_author('name', value)
00877         elif self.incontributor:
00878             self._save_contributor('name', value)
00879         elif self.intextinput:
00880             context = self._getContext()
            context['textinput']['name'] = value

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1054 of file feedparser.py.

01054 
01055     def _end_published(self):
01056         value = self.pop('published')
        self._save('published_parsed', _parse_date(value))

Here is the call graph for this function:

Definition at line 1009 of file feedparser.py.

01009 
01010     def _end_rights(self):
        self.popContent('rights')

Here is the call graph for this function:

Definition at line 1293 of file feedparser.py.

01293 
01294     def _end_source(self):
01295         self.insource = 0
01296         self._getContext()['source'] = copy.deepcopy(self.sourcedata)
01297         self.sourcedata.clear()

Here is the call graph for this function:

Definition at line 999 of file feedparser.py.

00999 
01000     def _end_subtitle(self):
        self.popContent('subtitle')

Here is the call graph for this function:

Definition at line 1273 of file feedparser.py.

01273 
01274     def _end_summary(self):
01275         if self._summaryKey == 'content':
01276             self._end_content()
01277         else:
01278             self.popContent(self._summaryKey or 'summary')
        self._summaryKey = None

Here is the call graph for this function:

Definition at line 813 of file feedparser.py.

00813 
00814     def _end_textinput(self):
00815         self.pop('textinput')
        self.intextinput = 0

Here is the call graph for this function:

Definition at line 1192 of file feedparser.py.

01192 
01193     def _end_title(self):
01194         value = self.popContent('title')
01195         context = self._getContext()
01196         if self.intextinput:
01197             context['textinput']['title'] = value
01198         elif self.inimage:
            context['image']['title'] = value

Here is the call graph for this function:

Definition at line 1067 of file feedparser.py.

01067 
01068     def _end_updated(self):
01069         value = self.pop('updated')
01070         parsed_value = _parse_date(value)
        self._save('updated_parsed', parsed_value)

Here is the call graph for this function:

Definition at line 914 of file feedparser.py.

00914 
00915     def _end_url(self):
00916         value = self.pop('href')
00917         if self.inauthor:
00918             self._save_author('href', value)
00919         elif self.incontributor:
00920             self._save_contributor('href', value)
00921         elif self.inimage:
00922             context = self._getContext()
00923             context['image']['href'] = value
00924         elif self.intextinput:
00925             context = self._getContext()
            context['textinput']['link'] = value

Here is the call graph for this function:

Definition at line 886 of file feedparser.py.

00886 
00887     def _end_width(self):
00888         value = self.pop('width')
00889         try:
00890             value = int(value)
00891         except:
00892             value = 0
00893         if self.inimage:
00894             context = self._getContext()
00895             context['image']['width'] = value

Here is the call graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin._getAttribute (   self,
  attrsD,
  name 
) [private]

Definition at line 714 of file feedparser.py.

00714 
00715     def _getAttribute(self, attrsD, name):
00716         return attrsD.get(self._mapToStandardPrefix(name))

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 943 of file feedparser.py.

00943 
00944     def _getContext(self):
00945         if self.insource:
00946             context = self.sourcedata
00947         elif self.inentry:
00948             context = self.entries[-1]
00949         else:
00950             context = self.feeddata
00951         return context

Here is the caller graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin._isBase64 (   self,
  attrsD,
  contentparams 
) [private]

Definition at line 717 of file feedparser.py.

00717 
00718     def _isBase64(self, attrsD, contentparams):
00719         if attrsD.get('mode', '') == 'base64':
00720             return 1
00721         if self.contentparams['type'].startswith('text/'):
00722             return 0
00723         if self.contentparams['type'].endswith('+xml'):
00724             return 0
00725         if self.contentparams['type'].endswith('/xml'):
00726             return 0
00727         return 1

Here is the caller graph for this function:

Definition at line 728 of file feedparser.py.

00728 
00729     def _itsAnHrefDamnIt(self, attrsD):
00730         href = attrsD.get('url', attrsD.get('uri', attrsD.get('href', None)))
00731         if href:
00732             try:
00733                 del attrsD['url']
00734             except KeyError:
00735                 pass
00736             try:
00737                 del attrsD['uri']
00738             except KeyError:
00739                 pass
00740             attrsD['href'] = href
00741         return attrsD
    

Here is the caller graph for this function:

Definition at line 705 of file feedparser.py.

00705 
00706     def _mapToStandardPrefix(self, name):
00707         colonpos = name.find(':')
00708         if colonpos <> -1:
00709             prefix = name[:colonpos]
00710             suffix = name[colonpos+1:]
00711             prefix = self.namespacemap.get(prefix, prefix)
00712             name = prefix + ':' + suffix
00713         return name
        

Here is the caller graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin._save (   self,
  key,
  value 
) [private]

Definition at line 742 of file feedparser.py.

00742 
00743     def _save(self, key, value):
00744         context = self._getContext()
00745         context.setdefault(key, value)

Here is the call graph for this function:

Here is the caller graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin._save_author (   self,
  key,
  value,
  prefix = 'author' 
) [private]

Definition at line 952 of file feedparser.py.

00952 
00953     def _save_author(self, key, value, prefix='author'):
00954         context = self._getContext()
00955         context.setdefault(prefix + '_detail', FeedParserDict())
00956         context[prefix + '_detail'][key] = value
00957         self._sync_author_detail()

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 958 of file feedparser.py.

00958 
00959     def _save_contributor(self, key, value):
00960         context = self._getContext()
00961         context.setdefault('contributors', [FeedParserDict()])
00962         context['contributors'][-1][key] = value

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1210 of file feedparser.py.

01210 
01211     def _start_abstract(self, attrsD):
01212         self.pushContent('description', attrsD, 'text/plain', self.infeed or self.inentry or self.insource)

Here is the call graph for this function:

Definition at line 1256 of file feedparser.py.

01256 
01257     def _start_admin_errorreportsto(self, attrsD):
01258         self.push('errorreportsto', 1)
01259         value = self._getAttribute(attrsD, 'rdf:resource')
01260         if value:
01261             self.elementstack[-1][2].append(value)
01262         self.pop('errorreportsto')
        

Here is the call graph for this function:

Definition at line 1248 of file feedparser.py.

01248 
01249     def _start_admin_generatoragent(self, attrsD):
01250         self.push('generator', 1)
01251         value = self._getAttribute(attrsD, 'rdf:resource')
01252         if value:
01253             self.elementstack[-1][2].append(value)
01254         self.pop('generator')
01255         self._getContext()['generator_detail'] = FeedParserDict({'href': value})

Here is the call graph for this function:

Definition at line 818 of file feedparser.py.

00818 
00819     def _start_author(self, attrsD):
00820         self.inauthor = 1
        self.push('author', 1)

Here is the call graph for this function:

Definition at line 1308 of file feedparser.py.

01308 
01309     def _start_body(self, attrsD):
        self.pushContent('content', attrsD, 'application/xhtml+xml', 1)

Here is the call graph for this function:

Definition at line 1112 of file feedparser.py.

01112 
01113     def _start_category(self, attrsD):
01114         if _debug: sys.stderr.write('entering _start_category with %s\n' % repr(attrsD))
01115         term = attrsD.get('term')
01116         scheme = attrsD.get('scheme', attrsD.get('domain'))
01117         label = attrsD.get('label')
01118         self._addTag(term, scheme, label)
        self.push('category', 1)

Here is the call graph for this function:

Definition at line 1091 of file feedparser.py.

01091 
01092     def _start_cc_license(self, attrsD):
01093         self.push('license', 1)
01094         value = self._getAttribute(attrsD, 'rdf:resource')
01095         if value:
01096             self.elementstack[-1][2].append(value)
01097         self.pop('license')
        

Here is the call graph for this function:

Definition at line 764 of file feedparser.py.

00764 
00765     def _start_channel(self, attrsD):
00766         self.infeed = 1
        self._cdf_common(attrsD)

Here is the call graph for this function:

Definition at line 1143 of file feedparser.py.

01143 
01144     def _start_cloud(self, attrsD):
01145         self._getContext()['cloud'] = FeedParserDict(attrsD)
        

Here is the call graph for this function:

Definition at line 1298 of file feedparser.py.

01298 
01299     def _start_content(self, attrsD):
01300         self.pushContent('content', attrsD, 'text/plain', 1)
01301         src = attrsD.get('src')
01302         if src:
01303             self.contentparams['src'] = src
01304         self.push('content', 1)

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1312 of file feedparser.py.

01312 
01313     def _start_content_encoded(self, attrsD):
        self.pushContent('content', attrsD, 'text/html', 1)

Here is the call graph for this function:

Definition at line 844 of file feedparser.py.

00844 
00845     def _start_contributor(self, attrsD):
00846         self.incontributor = 1
00847         context = self._getContext()
00848         context.setdefault('contributors', [])
00849         context['contributors'].append(FeedParserDict())
00850         self.push('contributor', 0)

Here is the call graph for this function:

Definition at line 1076 of file feedparser.py.

01076 
01077     def _start_created(self, attrsD):
        self.push('created', 1)

Here is the call graph for this function:

Definition at line 1098 of file feedparser.py.

01098 
01099     def _start_creativecommons_license(self, attrsD):
01100         self.push('license', 1)

Here is the call graph for this function:

Definition at line 855 of file feedparser.py.

00855 
00856     def _start_dc_contributor(self, attrsD):
00857         self.incontributor = 1
00858         context = self._getContext()
00859         context.setdefault('contributors', [])
00860         context['contributors'].append(FeedParserDict())
00861         self.push('name', 0)

Here is the call graph for this function:

Definition at line 1032 of file feedparser.py.

01032 
01033     def _start_dc_language(self, attrsD):
        self.push('language', 1)

Here is the call graph for this function:

Definition at line 1040 of file feedparser.py.

01040 
01041     def _start_dc_publisher(self, attrsD):
        self.push('publisher', 1)

Here is the call graph for this function:

Definition at line 1202 of file feedparser.py.

01202 
01203     def _start_description(self, attrsD):
01204         context = self._getContext()
01205         if context.has_key('summary'):
01206             self._summaryKey = 'content'
01207             self._start_content(attrsD)
01208         else:
01209             self.pushContent('description', attrsD, 'text/html', self.infeed or self.inentry or self.insource)

Here is the call graph for this function:

Definition at line 761 of file feedparser.py.

00761 
00762     def _start_dlhottitles(self, attrsD):
00763         self.version = 'hotrss'

Definition at line 929 of file feedparser.py.

00929 
00930     def _start_email(self, attrsD):
        self.push('email', 0)

Here is the call graph for this function:

Definition at line 1281 of file feedparser.py.

01281 
01282     def _start_enclosure(self, attrsD):
01283         attrsD = self._itsAnHrefDamnIt(attrsD)
01284         self._getContext().setdefault('enclosures', []).append(FeedParserDict(attrsD))
01285         href = attrsD.get('href')
01286         if href:
01287             context = self._getContext()
01288             if not context.get('id'):
01289                 context['id'] = href
            

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1085 of file feedparser.py.

01085 
01086     def _start_expirationdate(self, attrsD):
01087         self.push('expired', 1)

Here is the call graph for this function:

Definition at line 779 of file feedparser.py.

00779 
00780     def _start_feed(self, attrsD):
00781         self.infeed = 1
00782         versionmap = {'0.1': 'atom01',
00783                       '0.2': 'atom02',
00784                       '0.3': 'atom03'}
00785         if not self.version:
00786             attr_version = attrsD.get('version')
00787             version = versionmap.get(attr_version)
00788             if version:
00789                 self.version = version
00790             else:
00791                 self.version = 'atom'

Definition at line 1234 of file feedparser.py.

01234 
01235     def _start_generator(self, attrsD):
01236         if attrsD:
01237             attrsD = self._itsAnHrefDamnIt(attrsD)
01238             if attrsD.has_key('href'):
01239                 attrsD['href'] = self.resolveURI(attrsD['href'])
01240         self._getContext()['generator_detail'] = FeedParserDict(attrsD)
01241         self.push('generator', 1)

Here is the call graph for this function:

Definition at line 1175 of file feedparser.py.

01175 
01176     def _start_guid(self, attrsD):
01177         self.guidislink = (attrsD.get('ispermalink', 'true') == 'true')
01178         self.push('id', 1)

Here is the call graph for this function:

Definition at line 896 of file feedparser.py.

00896 
00897     def _start_height(self, attrsD):
00898         self.push('height', 0)

Here is the call graph for this function:

Definition at line 796 of file feedparser.py.

00796 
00797     def _start_image(self, attrsD):
00798         self.inimage = 1
00799         self.push('image', 0)
00800         context = self._getContext()
00801         context.setdefault('image', FeedParserDict())
            

Here is the call graph for this function:

Definition at line 1226 of file feedparser.py.

01226 
01227     def _start_info(self, attrsD):
        self.pushContent('info', attrsD, 'text/plain', 1)

Here is the call graph for this function:

Definition at line 1014 of file feedparser.py.

01014 
01015     def _start_item(self, attrsD):
01016         self.entries.append(FeedParserDict())
01017         self.push('item', 0)
01018         self.inentry = 1
01019         self.guidislink = 0
01020         id = self._getAttribute(attrsD, 'rdf:about')
01021         if id:
01022             context = self._getContext()
01023             context['id'] = id
        self._cdf_common(attrsD)

Here is the call graph for this function:

Definition at line 1126 of file feedparser.py.

01126 
01127     def _start_itunes_category(self, attrsD):
01128         self._addTag(attrsD.get('text'), 'http://www.itunes.com/', None)
01129         self.push('category', 1)
        

Here is the call graph for this function:

Definition at line 1327 of file feedparser.py.

01327 
01328     def _start_itunes_image(self, attrsD):
01329         self.push('itunes_image', 0)
        self._getContext()['image'] = FeedParserDict({'href': attrsD.get('href')})

Here is the call graph for this function:

Definition at line 835 of file feedparser.py.

00835 
00836     def _start_itunes_owner(self, attrsD):
00837         self.inpublisher = 1
00838         self.push('publisher', 0)

Here is the call graph for this function:

Definition at line 1146 of file feedparser.py.

01146 
01147     def _start_link(self, attrsD):
01148         attrsD.setdefault('rel', 'alternate')
01149         attrsD.setdefault('type', 'text/html')
01150         attrsD = self._itsAnHrefDamnIt(attrsD)
01151         if attrsD.has_key('href'):
01152             attrsD['href'] = self.resolveURI(attrsD['href'])
01153         expectingText = self.infeed or self.inentry or self.insource
01154         context = self._getContext()
01155         context.setdefault('links', [])
01156         context['links'].append(FeedParserDict(attrsD))
01157         if attrsD['rel'] == 'enclosure':
01158             self._start_enclosure(attrsD)
01159         if attrsD.has_key('href'):
01160             expectingText = 0
01161             if (attrsD.get('rel') == 'alternate') and (self.mapContentType(attrsD.get('type')) in self.html_types):
01162                 context['link'] = attrsD['href']
01163         else:
            self.push('link', expectingText)

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 866 of file feedparser.py.

00866 
00867     def _start_name(self, attrsD):
        self.push('name', 0)

Here is the call graph for this function:

Definition at line 1305 of file feedparser.py.

01305 
01306     def _start_prodlink(self, attrsD):
01307         self.pushContent('content', attrsD, 'text/html', 1)

Here is the call graph for this function:

Definition at line 1049 of file feedparser.py.

01049 
01050     def _start_published(self, attrsD):
        self.push('published', 1)

Here is the call graph for this function:

Definition at line 1004 of file feedparser.py.

01004 
01005     def _start_rights(self, attrsD):
        self.pushContent('rights', attrsD, 'text/plain', 1)

Here is the call graph for this function:

Definition at line 746 of file feedparser.py.

00746 
00747     def _start_rss(self, attrsD):
00748         versionmap = {'0.91': 'rss091u',
00749                       '0.92': 'rss092',
00750                       '0.93': 'rss093',
00751                       '0.94': 'rss094'}
00752         if not self.version:
00753             attr_version = attrsD.get('version', '')
00754             version = versionmap.get(attr_version)
00755             if version:
00756                 self.version = version
00757             elif attr_version.startswith('2.'):
00758                 self.version = 'rss20'
00759             else:
00760                 self.version = 'rss'
    

Definition at line 1290 of file feedparser.py.

01290 
01291     def _start_source(self, attrsD):
01292         self.insource = 1

Definition at line 994 of file feedparser.py.

00994 
00995     def _start_subtitle(self, attrsD):
        self.pushContent('subtitle', attrsD, 'text/plain', 1)

Here is the call graph for this function:

Definition at line 1263 of file feedparser.py.

01263 
01264     def _start_summary(self, attrsD):
01265         context = self._getContext()
01266         if context.has_key('summary'):
01267             self._summaryKey = 'content'
01268             self._start_content(attrsD)
01269         else:
01270             self._summaryKey = 'summary'
            self.pushContent(self._summaryKey, attrsD, 'text/plain', 1)

Here is the call graph for this function:

Definition at line 806 of file feedparser.py.

00806 
00807     def _start_textinput(self, attrsD):
00808         self.intextinput = 1
00809         self.push('textinput', 0)
00810         context = self._getContext()
        context.setdefault('textinput', FeedParserDict())

Here is the call graph for this function:

Definition at line 1187 of file feedparser.py.

01187 
01188     def _start_title(self, attrsD):
        self.pushContent('title', attrsD, 'text/plain', self.infeed or self.inentry or self.insource)

Here is the call graph for this function:

Definition at line 1060 of file feedparser.py.

01060 
01061     def _start_updated(self, attrsD):
        self.push('updated', 1)

Here is the call graph for this function:

Definition at line 909 of file feedparser.py.

00909 
00910     def _start_url(self, attrsD):
        self.push('href', 1)

Here is the call graph for this function:

Definition at line 883 of file feedparser.py.

00883 
00884     def _start_width(self, attrsD):
00885         self.push('width', 0)

Here is the call graph for this function:

Definition at line 963 of file feedparser.py.

00963 
00964     def _sync_author_detail(self, key='author'):
00965         context = self._getContext()
00966         detail = context.get('%s_detail' % key)
00967         if detail:
00968             name = detail.get('name')
00969             email = detail.get('email')
00970             if name and email:
00971                 context[key] = '%s (%s)' % (name, email)
00972             elif name:
00973                 context[key] = name
00974             elif email:
00975                 context[key] = email
00976         else:
00977             author = context.get(key)
00978             if not author: return
00979             emailmatch = re.search(r'''(([a-zA-Z0-9\_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?))''', author)
00980             if not emailmatch: return
00981             email = emailmatch.group(0)
00982             # probably a better way to do the following, but it passes all the tests
00983             author = author.replace(email, '')
00984             author = author.replace('()', '')
00985             author = author.strip()
00986             if author and (author[0] == '('):
00987                 author = author[1:]
00988             if author and (author[-1] == ')'):
00989                 author = author[:-1]
00990             author = author.strip()
00991             context.setdefault('%s_detail' % key, FeedParserDict())
00992             context['%s_detail' % key]['name'] = author
00993             context['%s_detail' % key]['email'] = email

Here is the call graph for this function:

Here is the caller graph for this function:

Reimplemented in plone.app.portlets.portlets.feedparser._LooseFeedParser.

Definition at line 595 of file feedparser.py.

00595 
00596     def decodeEntities(self, element, data):
00597         return data

Here is the caller graph for this function:

Definition at line 498 of file feedparser.py.

00498 
00499     def handle_charref(self, ref):
00500         # called for each character reference, e.g. for '&#160;', ref will be '160'
00501         if not self.elementstack: return
00502         ref = ref.lower()
00503         if ref in ('34', '38', '39', '60', '62', 'x22', 'x26', 'x27', 'x3c', 'x3e'):
00504             text = '&#%s;' % ref
00505         else:
00506             if ref[0] == 'x':
00507                 c = int(ref[1:], 16)
00508             else:
00509                 c = int(ref)
00510             text = unichr(c).encode('utf-8')
00511         self.elementstack[-1][2].append(text)

Here is the call graph for this function:

Definition at line 541 of file feedparser.py.

00541 
00542     def handle_comment(self, text):
00543         # called for each comment, e.g. <!-- insert message here -->
00544         pass

Definition at line 533 of file feedparser.py.

00533 
00534     def handle_data(self, text, escape=1):
00535         # called for each block of plain text, i.e. outside of any tag and
00536         # not containing any character or entity references
00537         if not self.elementstack: return
00538         if escape and self.contentparams.get('type') == 'application/xhtml+xml':
00539             text = _xmlescape(text)
00540         self.elementstack[-1][2].append(text)

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 549 of file feedparser.py.

00549 
00550     def handle_decl(self, text):
00551         pass

Definition at line 512 of file feedparser.py.

00512 
00513     def handle_entityref(self, ref):
00514         # called for each entity reference, e.g. for '&copy;', ref will be 'copy'
00515         if not self.elementstack: return
00516         if _debug: sys.stderr.write('entering handle_entityref with %s\n' % ref)
00517         if ref in ('lt', 'gt', 'quot', 'amp', 'apos'):
00518             text = '&%s;' % ref
00519         else:
00520             # entity resolution graciously donated by Aaron Swartz
00521             def name2cp(k):
00522                 import htmlentitydefs
00523                 if hasattr(htmlentitydefs, 'name2codepoint'): # requires Python 2.3
00524                     return htmlentitydefs.name2codepoint[k]
00525                 k = htmlentitydefs.entitydefs[k]
00526                 if k.startswith('&#') and k.endswith(';'):
00527                     return int(k[2:-1]) # not in latin-1
00528                 return ord(k)
00529             try: name2cp(ref)
00530             except KeyError: text = '&%s;' % ref
00531             else: text = unichr(name2cp(ref)).encode('utf-8')
00532         self.elementstack[-1][2].append(text)

Here is the call graph for this function:

Definition at line 545 of file feedparser.py.

00545 
00546     def handle_pi(self, text):
00547         # called for each processing instruction, e.g. <?instruction>
00548         pass

Definition at line 564 of file feedparser.py.

00564 
00565     def mapContentType(self, contentType):
00566         contentType = contentType.lower()
00567         if contentType == 'text':
00568             contentType = 'text/plain'
00569         elif contentType == 'html':
00570             contentType = 'text/html'
00571         elif contentType == 'xhtml':
00572             contentType = 'application/xhtml+xml'
00573         return contentType
    

Here is the caller graph for this function:

Definition at line 552 of file feedparser.py.

00552 
00553     def parse_declaration(self, i):
00554         # override internal declaration handler to handle CDATA blocks
00555         if _debug: sys.stderr.write('entering parse_declaration\n')
00556         if self.rawdata[i:i+9] == '<![CDATA[':
00557             k = self.rawdata.find(']]>', i)
00558             if k == -1: k = len(self.rawdata)
00559             self.handle_data(_xmlescape(self.rawdata[i+9:k]), 0)
00560             return k+3
00561         else:
00562             k = self.rawdata.find('>', i)
00563             return k+1

Here is the call graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin.pop (   self,
  element,
  stripWhitespace = 1 
)

Definition at line 601 of file feedparser.py.

00601 
00602     def pop(self, element, stripWhitespace=1):
00603         if not self.elementstack: return
00604         if self.elementstack[-1][0] != element: return
00605         
00606         element, expectingText, pieces = self.elementstack.pop()
00607         output = ''.join(pieces)
00608         if stripWhitespace:
00609             output = output.strip()
00610         if not expectingText: return output
00611 
00612         # decode base64 content
00613         if base64 and self.contentparams.get('base64', 0):
00614             try:
00615                 output = base64.decodestring(output)
00616             except binascii.Error:
00617                 pass
00618             except binascii.Incomplete:
00619                 pass
00620                 
00621         # resolve relative URIs
00622         if (element in self.can_be_relative_uri) and output:
00623             output = self.resolveURI(output)
00624         
00625         # decode entities within embedded markup
00626         if not self.contentparams.get('base64', 0):
00627             output = self.decodeEntities(element, output)
00628 
00629         # remove temporary cruft from contentparams
00630         try:
00631             del self.contentparams['mode']
00632         except KeyError:
00633             pass
00634         try:
00635             del self.contentparams['base64']
00636         except KeyError:
00637             pass
00638 
00639         # resolve relative URIs within embedded markup
00640         if self.mapContentType(self.contentparams.get('type', 'text/html')) in self.html_types:
00641             if element in self.can_contain_relative_uris:
00642                 output = _resolveRelativeURIs(output, self.baseuri, self.encoding)
00643         
00644         # sanitize embedded markup
00645         if self.mapContentType(self.contentparams.get('type', 'text/html')) in self.html_types:
00646             if element in self.can_contain_dangerous_markup:
00647                 output = _sanitizeHTML(output, self.encoding)
00648 
00649         if self.encoding and type(output) != type(u''):
00650             try:
00651                 output = unicode(output, self.encoding)
00652             except:
00653                 pass
00654 
00655         # categories/tags/keywords/whatever are handled in _end_category
00656         if element == 'category':
00657             return output
00658         
00659         # store output in appropriate place(s)
00660         if self.inentry and not self.insource:
00661             if element == 'content':
00662                 self.entries[-1].setdefault(element, [])
00663                 contentparams = copy.deepcopy(self.contentparams)
00664                 contentparams['value'] = output
00665                 self.entries[-1][element].append(contentparams)
00666             elif element == 'link':
00667                 self.entries[-1][element] = output
00668                 if output:
00669                     self.entries[-1]['links'][-1]['href'] = output
00670             else:
00671                 if element == 'description':
00672                     element = 'summary'
00673                 self.entries[-1][element] = output
00674                 if self.incontent:
00675                     contentparams = copy.deepcopy(self.contentparams)
00676                     contentparams['value'] = output
00677                     self.entries[-1][element + '_detail'] = contentparams
00678         elif (self.infeed or self.insource) and (not self.intextinput) and (not self.inimage):
00679             context = self._getContext()
00680             if element == 'description':
00681                 element = 'subtitle'
00682             context[element] = output
00683             if element == 'link':
00684                 context['links'][-1]['href'] = output
00685             elif self.incontent:
00686                 contentparams = copy.deepcopy(self.contentparams)
00687                 contentparams['value'] = output
00688                 context[element + '_detail'] = contentparams
00689         return output

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 699 of file feedparser.py.

00699 
00700     def popContent(self, tag):
00701         value = self.pop(tag)
00702         self.incontent -= 1
00703         self.contentparams.clear()
00704         return value
        

Here is the call graph for this function:

Here is the caller graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin.push (   self,
  element,
  expectingText 
)

Definition at line 598 of file feedparser.py.

00598 
00599     def push(self, element, expectingText):
00600         self.elementstack.append([element, expectingText, []])

Here is the caller graph for this function:

def plone.app.portlets.portlets.feedparser._FeedParserMixin.pushContent (   self,
  tag,
  attrsD,
  defaultContentType,
  expectingText 
)

Definition at line 690 of file feedparser.py.

00690 
00691     def pushContent(self, tag, attrsD, defaultContentType, expectingText):
00692         self.incontent += 1
00693         self.contentparams = FeedParserDict({
00694             'type': self.mapContentType(attrsD.get('type', defaultContentType)),
00695             'language': self.lang,
00696             'base': self.baseuri})
00697         self.contentparams['base64'] = self._isBase64(attrsD, self.contentparams)
00698         self.push(tag, expectingText)

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 592 of file feedparser.py.

00592 
00593     def resolveURI(self, uri):
00594         return _urljoin(self.baseuri or '', uri)
    

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 574 of file feedparser.py.

00574 
00575     def trackNamespace(self, prefix, uri):
00576         loweruri = uri.lower()
00577         if (prefix, loweruri) == (None, 'http://my.netscape.com/rdf/simple/0.9/') and not self.version:
00578             self.version = 'rss090'
00579         if loweruri == 'http://purl.org/rss/1.0/' and not self.version:
00580             self.version = 'rss10'
00581         if loweruri == 'http://www.w3.org/2005/atom' and not self.version:
00582             self.version = 'atom10'
00583         if loweruri.find('backend.userland.com/rss') <> -1:
00584             # match any backend.userland.com namespace
00585             uri = 'http://backend.userland.com/rss'
00586             loweruri = uri
00587         if self._matchnamespaces.has_key(loweruri):
00588             self.namespacemap[prefix] = self._matchnamespaces[loweruri]
00589             self.namespacesInUse[self._matchnamespaces[loweruri]] = uri
00590         else:
00591             self.namespacesInUse[prefix or ''] = uri

Here is the caller graph for this function:

Definition at line 461 of file feedparser.py.

00461 
00462     def unknown_endtag(self, tag):
00463         if _debug: sys.stderr.write('end %s\n' % tag)
00464         # match namespaces
00465         if tag.find(':') <> -1:
00466             prefix, suffix = tag.split(':', 1)
00467         else:
00468             prefix, suffix = '', tag
00469         prefix = self.namespacemap.get(prefix, prefix)
00470         if prefix:
00471             prefix = prefix + '_'
00472 
00473         # call special handler (if defined) or default handler
00474         methodname = '_end_' + prefix + suffix
00475         try:
00476             method = getattr(self, methodname)
00477             method()
00478         except AttributeError:
00479             self.pop(prefix + suffix)
00480 
00481         # track inline content
00482         if self.incontent and self.contentparams.has_key('type') and not self.contentparams.get('type', 'xml').endswith('xml'):
00483             # element declared itself as escaped markup, but it isn't really
00484             self.contentparams['type'] = 'application/xhtml+xml'
00485         if self.incontent and self.contentparams.get('type') == 'application/xhtml+xml':
00486             tag = tag.split(':')[-1]
00487             self.handle_data('</%s>' % tag, escape=0)
00488 
00489         # track xml:base and xml:lang going out of scope
00490         if self.basestack:
00491             self.basestack.pop()
00492             if self.basestack and self.basestack[-1]:
00493                 self.baseuri = self.basestack[-1]
00494         if self.langstack:
00495             self.langstack.pop()
00496             if self.langstack: # and (self.langstack[-1] is not None):
00497                 self.lang = self.langstack[-1]

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 391 of file feedparser.py.

00391 
00392     def unknown_starttag(self, tag, attrs):
00393         if _debug: sys.stderr.write('start %s with %s\n' % (tag, attrs))
00394         # normalize attrs
00395         attrs = [(k.lower(), v) for k, v in attrs]
00396         attrs = [(k, k in ('rel', 'type') and v.lower() or v) for k, v in attrs]
00397         
00398         # track xml:base and xml:lang
00399         attrsD = dict(attrs)
00400         baseuri = attrsD.get('xml:base', attrsD.get('base')) or self.baseuri
00401         self.baseuri = _urljoin(self.baseuri, baseuri)
00402         lang = attrsD.get('xml:lang', attrsD.get('lang'))
00403         if lang == '':
00404             # xml:lang could be explicitly set to '', we need to capture that
00405             lang = None
00406         elif lang is None:
00407             # if no xml:lang is specified, use parent lang
00408             lang = self.lang
00409         if lang:
00410             if tag in ('feed', 'rss', 'rdf:RDF'):
00411                 self.feeddata['language'] = lang
00412         self.lang = lang
00413         self.basestack.append(self.baseuri)
00414         self.langstack.append(lang)
00415         
00416         # track namespaces
00417         for prefix, uri in attrs:
00418             if prefix.startswith('xmlns:'):
00419                 self.trackNamespace(prefix[6:], uri)
00420             elif prefix == 'xmlns':
00421                 self.trackNamespace(None, uri)
00422 
00423         # track inline content
00424         if self.incontent and self.contentparams.has_key('type') and not self.contentparams.get('type', 'xml').endswith('xml'):
00425             # element declared itself as escaped markup, but it isn't really
00426             self.contentparams['type'] = 'application/xhtml+xml'
00427         if self.incontent and self.contentparams.get('type') == 'application/xhtml+xml':
00428             # Note: probably shouldn't simply recreate localname here, but
00429             # our namespace handling isn't actually 100% correct in cases where
00430             # the feed redefines the default namespace (which is actually
00431             # the usual case for inline content, thanks Sam), so here we
00432             # cheat and just reconstruct the element based on localname
00433             # because that compensates for the bugs in our namespace handling.
00434             # This will horribly munge inline content with non-empty qnames,
00435             # but nobody actually does that, so I'm not fixing it.
00436             tag = tag.split(':')[-1]
00437             return self.handle_data('<%s%s>' % (tag, ''.join([' %s="%s"' % t for t in attrs])), escape=0)
00438 
00439         # match namespaces
00440         if tag.find(':') <> -1:
00441             prefix, suffix = tag.split(':', 1)
00442         else:
00443             prefix, suffix = '', tag
00444         prefix = self.namespacemap.get(prefix, prefix)
00445         if prefix:
00446             prefix = prefix + '_'
00447 
00448         # special hack for better tracking of empty textinput/image elements in illformed feeds
00449         if (not prefix) and tag not in ('title', 'link', 'description', 'name'):
00450             self.intextinput = 0
00451         if (not prefix) and tag not in ('title', 'link', 'description', 'url', 'href', 'width', 'height'):
00452             self.inimage = 0
00453         
00454         # call special handler (if defined) or default handler
00455         methodname = '_start_' + prefix + suffix
00456         try:
00457             method = getattr(self, methodname)
00458             return method(attrsD)
00459         except AttributeError:
00460             return self.push(prefix + suffix, 1)

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

Definition at line 1224 of file feedparser.py.

Definition at line 1321 of file feedparser.py.

Definition at line 1323 of file feedparser.py.

Definition at line 1012 of file feedparser.py.

Definition at line 831 of file feedparser.py.

Definition at line 832 of file feedparser.py.

Definition at line 1074 of file feedparser.py.

Definition at line 1011 of file feedparser.py.

Definition at line 1139 of file feedparser.py.

Definition at line 1199 of file feedparser.py.

Definition at line 1083 of file feedparser.py.

Definition at line 1057 of file feedparser.py.

Definition at line 1072 of file feedparser.py.

Definition at line 1030 of file feedparser.py.

Definition at line 794 of file feedparser.py.

Definition at line 1232 of file feedparser.py.

Definition at line 1324 of file feedparser.py.

Definition at line 926 of file feedparser.py.

Definition at line 1058 of file feedparser.py.

Definition at line 833 of file feedparser.py.

Definition at line 1141 of file feedparser.py.

Definition at line 941 of file feedparser.py.

Definition at line 881 of file feedparser.py.

Definition at line 1002 of file feedparser.py.

Definition at line 1279 of file feedparser.py.

Definition at line 1140 of file feedparser.py.

Definition at line 1038 of file feedparser.py.

Definition at line 830 of file feedparser.py.

Definition at line 1200 of file feedparser.py.

Definition at line 1071 of file feedparser.py.

Definition at line 1325 of file feedparser.py.

Definition at line 1173 of file feedparser.py.

Definition at line 1073 of file feedparser.py.

Definition at line 1001 of file feedparser.py.

Definition at line 816 of file feedparser.py.

Definition at line 927 of file feedparser.py.

Definition at line 1047 of file feedparser.py.

Definition at line 1322 of file feedparser.py.

Definition at line 350 of file feedparser.py.

Definition at line 1007 of file feedparser.py.

Definition at line 822 of file feedparser.py.

Definition at line 823 of file feedparser.py.

Definition at line 1065 of file feedparser.py.

Definition at line 1006 of file feedparser.py.

Definition at line 1119 of file feedparser.py.

Definition at line 1189 of file feedparser.py.

Definition at line 1078 of file feedparser.py.

Definition at line 1051 of file feedparser.py.

Definition at line 1063 of file feedparser.py.

Definition at line 1024 of file feedparser.py.

Definition at line 1228 of file feedparser.py.

Definition at line 767 of file feedparser.py.

Definition at line 1314 of file feedparser.py.

Definition at line 911 of file feedparser.py.

Definition at line 1052 of file feedparser.py.

Definition at line 824 of file feedparser.py.

Definition at line 931 of file feedparser.py.

Definition at line 1330 of file feedparser.py.

Definition at line 868 of file feedparser.py.

Definition at line 997 of file feedparser.py.

Definition at line 1271 of file feedparser.py.

Definition at line 1120 of file feedparser.py.

Definition at line 1034 of file feedparser.py.

Definition at line 821 of file feedparser.py.

Definition at line 1190 of file feedparser.py.

Definition at line 1062 of file feedparser.py.

Definition at line 1025 of file feedparser.py.

Definition at line 1164 of file feedparser.py.

Definition at line 1064 of file feedparser.py.

Definition at line 996 of file feedparser.py.

Definition at line 811 of file feedparser.py.

Definition at line 912 of file feedparser.py.

Definition at line 1042 of file feedparser.py.

Definition at line 1310 of file feedparser.py.

Definition at line 381 of file feedparser.py.

Definition at line 384 of file feedparser.py.

Definition at line 386 of file feedparser.py.

list plone.app.portlets.portlets.feedparser._FeedParserMixin.can_be_relative_uri = ['link', 'id', 'wfw_comment', 'wfw_commentrss', 'docs', 'url', 'href', 'comments', 'license', 'icon', 'logo'] [static]

Definition at line 352 of file feedparser.py.

list plone.app.portlets.portlets.feedparser._FeedParserMixin.can_contain_dangerous_markup = ['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description'] [static]

Definition at line 354 of file feedparser.py.

list plone.app.portlets.portlets.feedparser._FeedParserMixin.can_contain_relative_uris = ['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description'] [static]

Definition at line 353 of file feedparser.py.

Definition at line 380 of file feedparser.py.

Definition at line 383 of file feedparser.py.

Definition at line 363 of file feedparser.py.

Definition at line 364 of file feedparser.py.

Definition at line 362 of file feedparser.py.

Definition at line 1018 of file feedparser.py.

list plone.app.portlets.portlets.feedparser._FeedParserMixin.html_types = ['text/html', 'application/xhtml+xml'] [static]

Definition at line 355 of file feedparser.py.

Definition at line 375 of file feedparser.py.

Definition at line 372 of file feedparser.py.

Definition at line 376 of file feedparser.py.

Definition at line 371 of file feedparser.py.

Definition at line 370 of file feedparser.py.

Definition at line 374 of file feedparser.py.

Definition at line 377 of file feedparser.py.

Definition at line 378 of file feedparser.py.

Definition at line 373 of file feedparser.py.

Definition at line 387 of file feedparser.py.

Definition at line 385 of file feedparser.py.

Definition at line 382 of file feedparser.py.

Definition at line 289 of file feedparser.py.

Definition at line 366 of file feedparser.py.

Definition at line 379 of file feedparser.py.

Definition at line 365 of file feedparser.py.


The documentation for this class was generated from the following file: