[Checkins] SVN: z3c.macro/trunk/ Allow use of z3c.pt.
Malthe Borch
mborch at gmail.com
Sat Sep 13 18:53:32 EDT 2008
Log message for revision 91132:
Allow use of z3c.pt.
Changed:
U z3c.macro/trunk/CHANGES.txt
U z3c.macro/trunk/buildout.cfg
U z3c.macro/trunk/setup.py
U z3c.macro/trunk/src/z3c/macro/README.txt
U z3c.macro/trunk/src/z3c/macro/configure.zcml
U z3c.macro/trunk/src/z3c/macro/tales.py
U z3c.macro/trunk/src/z3c/macro/tests.py
U z3c.macro/trunk/src/z3c/macro/zcml.py
U z3c.macro/trunk/src/z3c/macro/zcml.txt
-=-
Modified: z3c.macro/trunk/CHANGES.txt
===================================================================
--- z3c.macro/trunk/CHANGES.txt 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/CHANGES.txt 2008-09-13 22:53:31 UTC (rev 91132)
@@ -2,6 +2,12 @@
CHANGES
=======
+after 1.1.0
+-----------
+
+- Allow use of ``z3c.pt`` using ``z3c.pt.compat`` compatibility later.
+
+
1.1.0 (2007-11-01)
------------------
Modified: z3c.macro/trunk/buildout.cfg
===================================================================
--- z3c.macro/trunk/buildout.cfg 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/buildout.cfg 2008-09-13 22:53:31 UTC (rev 91132)
@@ -5,3 +5,8 @@
[test]
recipe = zc.recipe.testrunner
eggs = z3c.macro [test]
+environment = test-environment
+
+[test-environment]
+Z3C_PT_DEBUG = False
+Z3C_PT_CACHE = False
Modified: z3c.macro/trunk/setup.py
===================================================================
--- z3c.macro/trunk/setup.py 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/setup.py 2008-09-13 22:53:31 UTC (rev 91132)
@@ -57,12 +57,13 @@
namespace_packages = ['z3c'],
extras_require = dict(
test = ['z3c.template',
+ 'z3c.pt',
+ 'lxml>=2.1.1',
'zope.app.testing',
'zope.testing'],
),
install_requires = [
'setuptools',
- 'zope.app.pagetemplate',
'zope.component',
'zope.configuration',
'zope.contentprovider',
@@ -71,6 +72,8 @@
'zope.publisher',
'zope.schema',
'zope.tales',
+ 'zope.app.pagetemplate',
+ 'z3c.pt.compat',
],
include_package_data = True,
zip_safe = False,
Modified: z3c.macro/trunk/src/z3c/macro/README.txt
===================================================================
--- z3c.macro/trunk/src/z3c/macro/README.txt 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/README.txt 2008-09-13 22:53:31 UTC (rev 91132)
@@ -37,7 +37,6 @@
Let's define the macro factory
- >>> from zope.app.pagetemplate import viewpagetemplatefile
>>> from z3c.macro import interfaces
>>> from z3c.macro import zcml
>>> navigationMacro = zcml.MacroFactory(path, 'navigation', 'text/html')
@@ -83,7 +82,20 @@
Let's now create a view using this page template:
- >>> from zope.app.pagetemplate.simpleviewclass import SimpleViewClass
+ >>> from zope.publisher.browser import BrowserView
+ >>> class simple(BrowserView):
+ ... def __getitem__(self, name):
+ ... return self.index.macros[name]
+ ...
+ ... def __call__(self, **kwargs):
+ ... return self.index(**kwargs)
+
+ >>> from z3c.pt.compat import ViewPageTemplateFile
+ >>> def SimpleViewClass(path, name=u''):
+ ... return type(
+ ... "SimpleViewClass", (simple,),
+ ... {'index': ViewPageTemplateFile(path), '__name__': name})
+
>>> FirstPage = SimpleViewClass(path, name='first.html')
>>> zope.component.provideAdapter(
Modified: z3c.macro/trunk/src/z3c/macro/configure.zcml
===================================================================
--- z3c.macro/trunk/src/z3c/macro/configure.zcml 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/configure.zcml 2008-09-13 22:53:31 UTC (rev 91132)
@@ -10,4 +10,11 @@
handler=".tales.MacroExpression"
/>
-</configure>
\ No newline at end of file
+ <configure zcml:condition="installed z3c.pt">
+ <utility
+ name="macro"
+ component=".tales.z3cpt_macro_expression"
+ />
+ </configure>
+
+</configure>
Modified: z3c.macro/trunk/src/z3c/macro/tales.py
===================================================================
--- z3c.macro/trunk/src/z3c/macro/tales.py 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/tales.py 2008-09-13 22:53:31 UTC (rev 91132)
@@ -16,12 +16,18 @@
$Id$
"""
__docformat__ = 'restructuredtext'
+
+import re
+
import zope.component
import zope.interface
from zope.tales import expressions
from z3c.macro import interfaces
+def get_macro_template(context, view, request, name):
+ return zope.component.getMultiAdapter(
+ (context, view, request), interface=interfaces.IMacroTemplate, name=name)
class MacroExpression(expressions.StringExpr):
"""Collect named IMacroTemplate via a TAL namespace called ``macro``."""
@@ -33,6 +39,31 @@
context = econtext.vars['context']
request = econtext.vars['request']
view = econtext.vars['view']
+ return get_macro_template(context, view, request, name)
+
+try:
+ from z3c.pt.interfaces import IExpressionTranslation
+ from z3c.pt import types
+
+ class Z3CPTMacroExpression(object):
+ """Collect named IMacroTemplate via a TAL namespace called ``macro``."""
- return zope.component.getMultiAdapter((context, view, request),
- interface=interfaces.IMacroTemplate, name=name)
+ zope.interface.implements(IExpressionTranslation)
+
+ macro_regex = re.compile(r'^[A-Za-z][A-Za-z0-9_-]*$')
+ symbol = '_get_macro_template'
+
+ def validate(self, string):
+ if self.macro_regex.match(string) is None:
+ raise SyntaxError("%s is not a valid macro name." % string)
+
+ def translate(self, string):
+ value = types.value("%s(context, view, request, '%s')" % \
+ (self.symbol, string))
+ value.symbol_mapping[self.symbol] = get_macro_template
+ return value
+
+ z3cpt = Z3CPTMacroExpression()
+
+except ImportError:
+ pass
Modified: z3c.macro/trunk/src/z3c/macro/tests.py
===================================================================
--- z3c.macro/trunk/src/z3c/macro/tests.py 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/tests.py 2008-09-13 22:53:31 UTC (rev 91132)
@@ -18,15 +18,24 @@
__docformat__ = 'restructuredtext'
import unittest
+import itertools
+
+from zope import component
from zope.testing import doctest
from zope.testing.doctestunit import DocFileSuite
from zope.app.testing import setup
+from zope.configuration import xmlconfig
+import z3c.pt.compat
def setUp(test):
root = setup.placefulSetUp(site=True)
test.globs['root'] = root
+def setUpZPT(test):
+ z3c.pt.compat.config.disable()
+ setUp(test)
+
from zope.app.pagetemplate import metaconfigure
from z3c.macro import tales
metaconfigure.registerType('macro', tales.MacroExpression)
@@ -36,21 +45,29 @@
from zope.contentprovider import tales
metaconfigure.registerType('provider', tales.TALESProviderExpression)
+def setUpZ3CPT(suite):
+ z3c.pt.compat.config.enable()
+ setUp(suite)
+ xmlconfig.XMLConfig('configure.zcml', z3c.pt)()
+ from z3c.macro import tales
+ component.provideUtility(
+ tales.z3cpt, name='macro')
+
def tearDown(test):
setup.placefulTearDown()
-
def test_suite():
- return unittest.TestSuite((
+ tests = ((
DocFileSuite('README.txt',
setUp=setUp, tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
),
DocFileSuite('zcml.txt', setUp=setUp, tearDown=tearDown,
optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,),
- ))
+ ) for setUp in (setUpZ3CPT, setUpZPT))
+ return unittest.TestSuite(itertools.chain(*tests))
if __name__ == '__main__':
unittest.main(defaultTest='test_suite')
Modified: z3c.macro/trunk/src/z3c/macro/zcml.py
===================================================================
--- z3c.macro/trunk/src/z3c/macro/zcml.py 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/zcml.py 2008-09-13 22:53:31 UTC (rev 91132)
@@ -25,11 +25,10 @@
from zope.component import zcml
from zope.publisher.interfaces.browser import IBrowserView
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+from z3c.pt import compat
from z3c.macro import interfaces
-
class IMacroDirective(zope.interface.Interface):
"""Parameters for the template directive."""
@@ -106,7 +105,7 @@
self.contentType = contentType
def __call__(self, context, view, request):
- template = ViewPageTemplateFile(self.path,
+ template = compat.ViewPageTemplateFile(self.path,
content_type=self.contentType)
return template.macros[self.macro]
Modified: z3c.macro/trunk/src/z3c/macro/zcml.txt
===================================================================
--- z3c.macro/trunk/src/z3c/macro/zcml.txt 2008-09-13 22:38:34 UTC (rev 91131)
+++ z3c.macro/trunk/src/z3c/macro/zcml.txt 2008-09-13 22:53:31 UTC (rev 91132)
@@ -1,5 +1,5 @@
===============
-Macro directive
+macro directive
===============
A macro directive can be used for register macros. Take a look at the
@@ -67,7 +67,29 @@
>>> from z3c.macro import interfaces
>>> view = View(content, request)
- >>> zope.component.getMultiAdapter((content, view, request),
+
+ >>> macro = zope.component.queryMultiAdapter((content, view, request),
... interface=interfaces.IMacroTemplate, name='title')
- [('version', '1.6'), ('mode', 'html'), ('setPosition', (5, 4)),...
- [(u'define-macro', u'title', 'metal')]))]...
+
+ >>> macro is not None
+ True
+
+ >>> import os, tempfile
+ >>> temp_dir = tempfile.mkdtemp()
+ >>> file = os.path.join(temp_dir, 'test.pt')
+ >>> open(file, 'w').write('''
+ ... <html>
+ ... <body>
+ ... <metal:macro use-macro="options/macro" />
+ ... </body>
+ ... </html>
+ ... ''')
+
+ >>> from z3c.pt.compat import ViewPageTemplateFile, bind_template
+ >>> template = ViewPageTemplateFile(file)
+ >>> print bind_template(template, view)(macro=macro)
+ <html>
+ <body>
+ <title>Pagelet skin</title>
+ </body>
+ </html>
More information about the Checkins
mailing list