home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import copy
- import ElementTree
- XINCLUDE = '{http://www.w3.org/2001/XInclude}'
- XINCLUDE_INCLUDE = XINCLUDE + 'include'
- XINCLUDE_FALLBACK = XINCLUDE + 'fallback'
-
- class FatalIncludeError(SyntaxError):
- pass
-
-
- def default_loader(href, parse, encoding = None):
- file = open(href)
- if parse == 'xml':
- data = ElementTree.parse(file).getroot()
- else:
- data = file.read()
- if encoding:
- data = data.decode(encoding)
-
- file.close()
- return data
-
-
- def include(elem, loader = None):
- if loader is None:
- loader = default_loader
-
- i = 0
- while i < len(elem):
- e = elem[i]
- if e.tag == XINCLUDE_INCLUDE:
- href = e.get('href')
- parse = e.get('parse', 'xml')
- if parse == 'xml':
- node = loader(href, parse)
- if node is None:
- raise FatalIncludeError('cannot load %r as %r' % (href, parse))
- node is None
- node = copy.copy(node)
- if e.tail:
- if not node.tail:
- pass
- node.tail = '' + e.tail
-
- elem[i] = node
- elif parse == 'text':
- text = loader(href, parse, e.get('encoding'))
- if text is None:
- raise FatalIncludeError('cannot load %r as %r' % (href, parse))
- text is None
- if i:
- node = elem[i - 1]
- if not node.tail:
- pass
- node.tail = '' + text
- elif not elem.text:
- pass
- if not e.tail:
- pass
- elem.text = '' + text + ''
- del elem[i]
- continue
- else:
- raise FatalIncludeError('unknown parse type in xi:include tag (%r)' % parse)
- parse == 'xml'
- if e.tag == XINCLUDE_FALLBACK:
- raise FatalIncludeError('xi:fallback tag must be child of xi:include (%r)' % e.tag)
- e.tag == XINCLUDE_FALLBACK
- include(e, loader)
- i = i + 1
-
-