home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / rdflib / syntax / serializers / QNameProvider.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  2.2 KB  |  54 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from rdflib.syntax.xml_names import split_uri
  5. XMLLANG = u'http://www.w3.org/XML/1998/namespace#lang'
  6.  
  7. class QNameProvider(object):
  8.     
  9.     def __init__(self):
  10.         self._QNameProvider__cache = { }
  11.         self._QNameProvider__namespace = { }
  12.         self._QNameProvider__prefix = { }
  13.         self.set_prefix('xml', u'http://www.w3.org/XML/1998/namespace')
  14.         self._QNameProvider__prefix[u'http://www.w3.org/XML/1998/namespace#'] = 'xml'
  15.  
  16.     
  17.     def get(self, uri):
  18.         qname = self._QNameProvider__cache.get(uri, None)
  19.         if qname is None:
  20.             self.compute(uri)
  21.             return self.get(uri)
  22.         return qname
  23.  
  24.     
  25.     def compute(self, uri):
  26.         if uri not in self._QNameProvider__cache:
  27.             (namespace, name) = split_uri(uri)
  28.             prefix = self._QNameProvider__prefix.get(namespace, None)
  29.             if prefix is None:
  30.                 prefix = '_%s' % len(self._QNameProvider__namespace)
  31.                 self.set_prefix(prefix, namespace)
  32.             
  33.             if prefix == '':
  34.                 self._QNameProvider__cache[uri] = name
  35.             else:
  36.                 self._QNameProvider__cache[uri] = ':'.join((prefix, name))
  37.         
  38.  
  39.     
  40.     def set_prefix(self, prefix, namespace):
  41.         if prefix in self._QNameProvider__namespace:
  42.             raise 'NYI: prefix already set'
  43.         prefix in self._QNameProvider__namespace
  44.         self._QNameProvider__namespace[prefix] = namespace
  45.         self._QNameProvider__prefix[namespace] = prefix
  46.  
  47.     
  48.     def namespaces(self):
  49.         for prefix, namespace in self._QNameProvider__namespace.iteritems():
  50.             yield (prefix, namespace)
  51.         
  52.  
  53.  
  54.