• R/O
  • SSH

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

修訂7a14eb11098977b0148a595bbbc6c7ccf518da09 (tree)
時間2023-11-01 23:12:46
作者Albert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

Aside: refactor RPY's Template (class), rename the (1st) parameter: template= to name=, as create a (Jinja) Template, based on a file(name)

Change Summary

差異

diff -r 0d8bb1bc8200 -r 7a14eb110989 castle/writers/RPy/templates.py
--- a/castle/writers/RPy/templates.py Tue Oct 31 20:41:20 2023 +0100
+++ b/castle/writers/RPy/templates.py Wed Nov 01 15:12:46 2023 +0100
@@ -10,23 +10,25 @@
1010 return tuple(d if d.is_absolute() else top_dir/d for d in (Path(d) for d in search_path))
1111
1212 class Template():
13- def __init__(self, template=None, *, top_dir=None, search_path=("templates",)):
14- if isinstance(search_path, (str, Path)): search_path=(search_path,) # make it a sequence
13+ def __init__(self, name=None, *, top_dir=None, search_path=("templates",)):
14+ if isinstance(search_path, (str, Path)): search_path=(search_path,) # make it a sequence
1515 if top_dir is None:
1616 top_dir= Path(os.path.realpath(__file__)).parent #use module-dir a top, "templates/" works
1717 search_path = _addTopDir(top_dir, search_path)
1818
19- logger.info(f"template={template}, top_dir={top_dir}, search_path={search_path}")
19+ logger.info(f"(template)name={name}, top_dir={top_dir}, search_path={search_path}")
2020
2121 self.environment = jinja.Environment(loader=jinja.FileSystemLoader(search_path), trim_blocks=True, lstrip_blocks=True) # pragma: no mutate
22- self.def_template = self.environment.get_template(template) if template else None
22+ self.default_template = self.environment.get_template(name) if name else None
2323
24+ @property
25+ def _template(self, name=None):
26+ return self.environment.get_template(name) if name else self.default_template
2427
2528
26- def render(self, template=None, **kwargs):
27- if not template and not self.def_template:
28- raise FileNotFoundError("No template nor default template specified") # pragma: no mutate
29+ def render(self, name=None, **kwargs):
30+ if not name and not self.default_template:
31+ raise FileNotFoundError("No template (name), nor default template specified") # pragma: no mutate
2932
30- template = self.environment.get_template(template) if template else self.def_template
31- return template.render(**kwargs)
33+ return self._template.render(**kwargs)
3234
diff -r 0d8bb1bc8200 -r 7a14eb110989 pytst/writers/RPy/test_0_templating.py
--- a/pytst/writers/RPy/test_0_templating.py Tue Oct 31 20:41:20 2023 +0100
+++ b/pytst/writers/RPy/test_0_templating.py Wed Nov 01 15:12:46 2023 +0100
@@ -14,7 +14,7 @@
1414
1515 def test_simpel_template():
1616 HW_file = 'HW_template.txt'
17- template = RPy.Template(template=HW_file, search_path=template_a_dir)
17+ template = RPy.Template(name=HW_file, search_path=template_a_dir)
1818 out=template.render(Hello='{{Hello}}', World='{{World}}') # Generates itself
1919
2020 ref=open(template_a_dir / HW_file).read()
@@ -22,7 +22,7 @@
2222
2323 def test_simpel_template_2():
2424 HW_file = 'HW_template.txt'
25- template = RPy.Template(template=HW_file, top_dir=my_dir)
25+ template = RPy.Template(name=HW_file, top_dir=my_dir)
2626 out=template.render(Hello='{{Hello}}', World='{{World}}') # Generates itself
2727
2828 ref=open(template_a_dir / HW_file).read()
@@ -33,7 +33,7 @@
3333 child = 'child.txt'
3434 base = 'base.txt' # Not used to render, only to test
3535
36- template = RPy.Template(template=child, search_path=template_a_dir)
36+ template = RPy.Template(name=child, search_path=template_a_dir)
3737 out = template.render(v1 ='Var 1', v2 ='Var 2', TOP='top: but not completely', BOTTOM="bottom, really")
3838
3939 ref_lines = open(template_a_dir / base).readlines()
@@ -52,7 +52,7 @@
5252 def test_template_parts():
5353 big_file = "big.txt" # Uses: part-include.txt & part-import.txt
5454
55- template = RPy.Template(template=big_file, search_path=template_a_dir)
55+ template = RPy.Template(name=big_file, search_path=template_a_dir)
5656 out = template.render()
5757
5858 assert 'INCLUDED' in out, "this line in part-include.txt"