Exemple #1
0
    def load(self, ctx=None):
        rendererFactoryClass = None
        if ctx is not None:
            r = inevow.IRendererFactory(ctx, None)
            if r is not None:
                rendererFactoryClass = getClass(r)

        cacheKey = (self._filename, self.pattern, rendererFactoryClass)

        try:
            cachedModified, doc = self._cache[cacheKey]
        except KeyError:
            cachedModified = doc = None
        currentModified = os.path.getmtime(self._filename)

        if currentModified == cachedModified:
            return doc

        doc = flatsax.parse(open(self._filename), self.ignoreDocType, self.ignoreComment)
        doc = flat.precompile(doc, ctx)

        if self.pattern is not None:
            doc = inevow.IQ(doc).onePattern(self.pattern)

        self._mtime = currentModified
        self._cache[cacheKey] = currentModified, doc
        return doc
Exemple #2
0
    def _reallyLoad(self, path, ctx, preprocessors):
        doc = flatsax.parse(open(self._filename), self.ignoreDocType, self.ignoreComment)
        for proc in preprocessors:
            doc = proc(doc)
        doc = flat.precompile(doc, ctx)

        if self.pattern is not None:
            doc = inevow.IQ(doc).onePattern(self.pattern)

        return doc
Exemple #3
0
 def load(self, ctx=None):
     mtime, doc = self._cache.get((self._filename, self.pattern), (None,None))
     self._mtime = os.path.getmtime(self._filename)
     if mtime == self._mtime:
         return doc
     doc = flatsax.parse(open(self._filename), self.ignoreDocType, self.ignoreComment)
     doc = flat.precompile(doc)
     if self.pattern is not None:
         doc = inevow.IQ(doc).onePattern(self.pattern)
     self._cache[(self._filename, self.pattern)] = self._mtime, doc
     return doc
Exemple #4
0
    def _reallyLoad(self, path, ctx, preprocessors):
        doc = flatsax.parse(open(self._filename), self.ignoreDocType,
                            self.ignoreComment)
        for proc in preprocessors:
            doc = proc(doc)
        doc = flat.precompile(doc, ctx)

        if self.pattern is not None:
            doc = inevow.IQ(doc).onePattern(self.pattern)

        return doc
Exemple #5
0
 def load(self, ctx=None):
     mtime, doc = self._cache.get((self._filename, self.pattern), (None,None))
     self._mtime = os.path.getmtime(self._filename)
     if mtime == self._mtime:
         return doc
     doc = flatsax.parse(open(self._filename), self.ignoreDocType, self.ignoreComment)
     doc = flat.precompile(doc)
     if self.pattern is not None:
         doc = inevow.IQ(doc).onePattern(self.pattern)
     self._cache[(self._filename, self.pattern)] = self._mtime, doc
     return doc
 def test_slotLocation(self):
     """
     L{slot} instances returned by L{parse} have the same C{filename},
     C{lineNumber}, and C{columnNumber} attributes as L{Tag} instances do.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write('<html xmlns:nevow="http://nevow.com/ns/nevow/0.1">\n'
                '    <nevow:slot name="foo" />\n'
                '</html>')
     fObj.close()
     [html] = parse(file(fName))
     [foo] = [x for x in html.children if isinstance(x, slot)]
     self.assertEqual(foo.filename, fName)
     self.assertEqual(foo.lineNumber, 2)
     self.assertEqual(foo.columnNumber, 4)
Exemple #7
0
 def test_slotLocation(self):
     """
     L{slot} instances returned by L{parse} have the same C{filename},
     C{lineNumber}, and C{columnNumber} attributes as L{Tag} instances do.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write(
         '<html xmlns:nevow="http://nevow.com/ns/nevow/0.1">\n'
         '    <nevow:slot name="foo" />\n'
         '</html>')
     fObj.close()
     [html] = parse(file(fName))
     [foo] = [x for x in html.children if isinstance(x, slot)]
     self.assertEqual(foo.filename, fName)
     self.assertEqual(foo.lineNumber, 2)
     self.assertEqual(foo.columnNumber, 4)
 def test_attrLocation(self):
     """
     I{attr} L{Tag} instances returned by L{parse} have a C{filename}
     attribute which gives the name of the file from which they were parsed,
     a C{lineNumber} attribute giving the line number on which the tag was
     seen in that file, and a C{columnNumber} attribute giving the column
     number at which the tag was seen in that file.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write('<html xmlns:nevow="http://nevow.com/ns/nevow/0.1">\n'
                '    <nevow:attr name="foo" />\n'
                '</html>\n')
     fObj.close()
     [html] = parse(file(fName))
     attr = html.attributes['foo']
     self.assertEqual(attr.filename, fName)
     self.assertEqual(attr.lineNumber, 2)
     self.assertEqual(attr.columnNumber, 4)
Exemple #9
0
 def test_attrLocation(self):
     """
     I{attr} L{Tag} instances returned by L{parse} have a C{filename}
     attribute which gives the name of the file from which they were parsed,
     a C{lineNumber} attribute giving the line number on which the tag was
     seen in that file, and a C{columnNumber} attribute giving the column
     number at which the tag was seen in that file.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write(
         '<html xmlns:nevow="http://nevow.com/ns/nevow/0.1">\n'
         '    <nevow:attr name="foo" />\n'
         '</html>\n')
     fObj.close()
     [html] = parse(file(fName))
     attr = html.attributes['foo']
     self.assertEqual(attr.filename, fName)
     self.assertEqual(attr.lineNumber, 2)
     self.assertEqual(attr.columnNumber, 4)
Exemple #10
0
 def test_tagLocation(self):
     """
     L{Tag} instances returned by L{parse} have a C{filename} attribute
     which gives the name of the file from which they were parsed, a
     C{lineNumber} attribute giving the line number on which the tag was
     seen in that file, and a C{columnNumber} attribute giving the column
     number at which the tag was seen in that file.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write(
         '<html>\n'
         '  <head>\n'
         '    <title>\n'
         '      Hello, world.\n'
         '    </title>\n'
         '  </head>\n'
         '  <body>\n'
         '    Hi.\n'
         '  </body>\n'
         '</html>\n')
     fObj.close()
     [html] = parse(file(fName))
     [head, body] = self._tagChildren(html)
     [title] = self._tagChildren(head)
     self.assertEqual(html.filename, fName)
     self.assertEqual(html.lineNumber, 1)
     self.assertEqual(html.columnNumber, 0)
     self.assertEqual(head.filename, fName)
     self.assertEqual(head.lineNumber, 2)
     self.assertEqual(head.columnNumber, 2)
     self.assertEqual(title.filename, fName)
     self.assertEqual(title.lineNumber, 3)
     self.assertEqual(title.columnNumber, 4)
     self.assertEqual(body.filename, fName)
     self.assertEqual(body.lineNumber, 7)
     self.assertEqual(body.columnNumber, 2)
 def test_tagLocation(self):
     """
     L{Tag} instances returned by L{parse} have a C{filename} attribute
     which gives the name of the file from which they were parsed, a
     C{lineNumber} attribute giving the line number on which the tag was
     seen in that file, and a C{columnNumber} attribute giving the column
     number at which the tag was seen in that file.
     """
     fName = self.mktemp()
     fObj = file(fName, 'w')
     fObj.write('<html>\n'
                '  <head>\n'
                '    <title>\n'
                '      Hello, world.\n'
                '    </title>\n'
                '  </head>\n'
                '  <body>\n'
                '    Hi.\n'
                '  </body>\n'
                '</html>\n')
     fObj.close()
     [html] = parse(file(fName))
     [head, body] = self._tagChildren(html)
     [title] = self._tagChildren(head)
     self.assertEqual(html.filename, fName)
     self.assertEqual(html.lineNumber, 1)
     self.assertEqual(html.columnNumber, 0)
     self.assertEqual(head.filename, fName)
     self.assertEqual(head.lineNumber, 2)
     self.assertEqual(head.columnNumber, 2)
     self.assertEqual(title.filename, fName)
     self.assertEqual(title.lineNumber, 3)
     self.assertEqual(title.columnNumber, 4)
     self.assertEqual(body.filename, fName)
     self.assertEqual(body.lineNumber, 7)
     self.assertEqual(body.columnNumber, 2)