| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/usr/bin/env python
- import os
- import json
- from config import PATH_PARTIAL, PATH_SRC, PATH_THEME, PATH_THEME_DEST, \
- PATH_DEST, FILE_SITE, THEME
- from chevron import render
- from typing import Dict
- from shutil import copytree, rmtree
- DEF_THEME = 'shop'
- def read_json(json_file:str) -> Dict:
- """ read site.json
-
- """
- with open(json_file, "rt") as fh:
- val = json.loads(fh.read())
- val['lambdas'] = {
- 'equal_output': equal_output,
- }
- return val
- return {}
- def build_file(hash, file:str) -> str:
- """
- @file: str filename of mustache
- @return: str html populated.
- """
- with open(file, "rt") as fh:
- return render(template=fh, data=hash, partials_path=PATH_PARTIAL)
- def build_all():
- # theme
- global THEME
- if not THEME:
- THEME = DEF_THEME
- theme_src_dir = os.path.join(PATH_THEME, THEME)
- theme_dest_dir = PATH_THEME_DEST
- # remote old theme
- try:
- rmtree(theme_dest_dir)
- except Exception:
- pass
-
- # copy theme
- try:
- copytree(theme_src_dir, theme_dest_dir)
- except Exception as e:
- print('ERROR: theme error:', e)
- exit(-1)
- hash = read_json(FILE_SITE)
- for r, _, fl in os.walk(PATH_SRC):
- for f in fl:
- rpath = os.path.join(r, f)
- fn, _ = os.path.splitext(f)
- hash['file'] = fn
- html_str = build_file(hash, rpath)
- if not html_str:
- print('WARNING: empty output:', rpath)
- rhtml = os.path.join(PATH_DEST, '{}.html'.format(fn))
- with open(rhtml, 'wt') as fh:
- fh.write(html_str)
- def equal_output(text, render):
- """
- mustache lambda: 实现三元语义
- a==b?c:d
- 渲染后,如果 a == b 则 最终渲染 c 否则 最终渲染 d
- """
- result = render(text)
- parts = result.split("?")
- compares = parts[0].split("==")
- values = parts[1].split(":")
- return values[0].strip() if compares[0].strip() == compares[1].strip() else values[1].strip()
- if __name__ == '__main__':
- build_all()
- """
- ,{
- "text": "代理加盟",
- "url": "agents.html"
- },{
- "text": "下载",
- "url": "https://twong.shotshock.shop/mobilex/download"
- }
- """
|