summaryrefslogtreecommitdiff
path: root/talgenerator.py
diff options
context:
space:
mode:
Diffstat (limited to 'talgenerator.py')
-rw-r--r--talgenerator.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/talgenerator.py b/talgenerator.py
index 203c68d..03819bc 100644
--- a/talgenerator.py
+++ b/talgenerator.py
@@ -508,6 +508,7 @@ class TALGenerator(object):
todo = {}
defineMacro = metaldict.get("define-macro")
+ extendMacro = metaldict.get("extend-macro")
useMacro = metaldict.get("use-macro")
defineSlot = metaldict.get("define-slot")
fillSlot = metaldict.get("fill-slot")
@@ -537,11 +538,24 @@ class TALGenerator(object):
raise I18NError("i18n:data must be accompanied by i18n:translate",
position)
- if defineMacro or useMacro:
+ if extendMacro:
+ if useMacro:
+ raise METALError(
+ "extend-macro cannot be used with use-macro", position)
+ if not defineMacro:
+ raise METALError(
+ "extend-macro must be used with define-macro", position)
+
+ if defineMacro or extendMacro or useMacro:
if fillSlot or defineSlot:
raise METALError(
"define-slot and fill-slot cannot be used with "
- "define-macro or use-macro", position)
+ "define-macro, extend-macro, or use-macro", position)
+ if defineMacro and useMacro:
+ raise METALError(
+ "define-macro may not be used with use-macro", position)
+
+ useMacro = useMacro or extendMacro
if content and msgid:
raise I18NError(