LUBYAGIN

Скрипты для наполнения сайта статическим контентом

Идея написать такую систему скриптов родилась примерно в 2007-2008 году. Краем уха услышал о генераторе статического контента у Balancer'а, и понял, что это - выход в условиях высоких тарифов на хостинг. Статический контент много не скушает, и платить можно копейки. В 2012 году вплотную подошёл к написанию системы, появился первый код. Ниже я буду выкладывать некоторые интересные компоненты и принципы этой системы, разбавляя текст кусками исходного кода на Python и Bash. Функция экранирования спецсимволов HTML (function for escaping HTML) может быть реализована различными способами, см. советы на python.org и stackoverflow.com. У меня это сделано самым простым способом, через последовательный перебор спецсимволов и их замену по словарю.
#!/usr/bin/python

escape_ = {
"&": "&",
'"': """,
"'": "'",
">": ">",
"<": "&lt;",
}

def escape(s):
  return "".join(escape_.get(c,c) for c in s)
#!/usr/bin/python

def rl(filename):
  f = open(filename,"rt")
  S = f.readlines()
  f.close()
  return S

def rt(filename):
  f = open(filename,"rt")
  S = f.read()
  f.close()
  return S

def wt(filename,S):
  f = open(filename,"wt")
  f.write(S)
  f.close()
#!/usr/bin/python
import sys, io, fmt
if len(sys.argv) > 2:
  filename1 = sys.argv[1]
  filename2 = sys.argv[2]
  S = io.rt(filename1)
  S = fmt.escape(S)
  io.wt(filename2,S)
else:
  S = sys.stdin.read()
  S = fmt.escape(S)
  sys.stdout.write(S)

sample.wp:

title = Пример страницы
kw = страница

{{sample.wp}}
В 2015-2016 году я провёл небольшую чистку кода, переписал его по-новой. Но в 2017 возникла дилемма: чтобы расширить возможности синтаксиса, надо либо вводить дополнительные тэги и отказываться от регекспов в пользу построчного сканирования, либо - переходить на аналог XML/YML. В 2007-2008 у меня был опыт написания конвертора XML2HTML на Python.