[CEDET-devel] SRecode: nested dictionaries within template files
Brought to you by:
zappo
From: Jan M. <jan...@un...> - 2010-05-04 00:36:44
|
Hi, when working with slightly more complicated srecode templates, I found it useful to construct nested dictionaries from within template specifications like this: template test-suite :indent "Insert test case class." sectiondictionary "UNIT_TEST" set NAME "unittest" sectiondictionary "SUITE" set NAME macro "?CASENAME" childdictionary "PARENTS" set NAME "unittest.TestCase" ---- {{>UNIT_TEST:declaration:include-tag}} {{>SUITE:declaration:class-tag}} ---- The "childdictionary" keyword creates the nested construction. The dumped template looks like this: == Template "test-suite" in context file Arguments: (:indent) Section Dictionaries: UNIT_TEST --> SUBDICTIONARY #<srecode-dictionary ...> FIRST --> SUBDICTIONARY #<srecode-dictionary ...> LAST --> SUBDICTIONARY #<srecode-dictionary ...> NAME "unittest" SUITE --> SUBDICTIONARY #<srecode-dictionary ...> FIRST --> SUBDICTIONARY #<srecode-dictionary ...> LAST --> SUBDICTIONARY #<srecode-dictionary ...> NAME # Compound Variable # 1) INS: "CASENAME" type "ask" : "Test Suite Name: " PARENTS --> SUBDICTIONARY #<srecode-dictionary ...> FIRST --> SUBDICTIONARY #<srecode-dictionary ...> LAST --> SUBDICTIONARY #<srecode-dictionary ...> NAME "unittest.TestCase" There seems to be a bug in the inserter (at least when using field insert mode) which produces the following result: import unittest class CASENAME (CASENAME): """""" I think, the second occurrence of "CASENAME" should be "unittest.TestCase". This suggests that the inner "NAME" entry does not get its value assigned properly. The attached patch adds support for "childdictonary", but does not fix the described problem. What do you think? Kind regards. Jan |