Ищем хорошие скобочные символы для блоков кода шаблонных движков - PullRequest
0 голосов
/ 27 января 2011

Я ищу подходящую пару символов для включения кода шаблона в шаблон для следующей версии нашего собственного механизма шаблонов.

Текущий использует простой {}, но это делает синтаксический анализатор очень сложным, чтобы иметь возможность различать реальные блоки кода и случайные символы {} в буквальном тексте в шаблоне.

Я думаю, что лучше использовать комбинацию из двух символов, например, используемую в asp.net или php, но вопрос в том, какую пару символов символов мне следует использовать, или есть какой-то идеальный символ, который никогда не используется и который легко написать.

Некоторые критерии, которые необходимо заполнить:

  • Нельзя изменить с помощью HTMLEncode, источники будут редактироваться через веб-редакторы HTML и обычные текстовые области и должны оставаться неизменными независимо от того, какой редактор используется.
  • Regex будет использоваться для очистки частей кода после редактирования в редакторе HTML, который мог закодировать внутреннюю часть блока кода, например & chars.
  • Должно быть достаточно легко написано на английской и шведской раскладке клавиатуры.
  • Должна быть очень редкой комбинацией, шаблон будет генерировать HTML и текст и может включать в себя текст литералов CSS и Javascript с JSON, поэтому любая комбинация, которая может столкнуться с ними, является плохой, если не очень редкой. Это означает, что {{}} отсутствует, как это может произойти в JSON.
  • Код в блоке кода будет содержать пробелы, подчеркивания, доллары и многие другие комбинации, не только имена полей, но и конструкции if / while.
  • Парсер генерируется с помощью Antlr

Я ищу предложения и возражения, чтобы найти одну или несколько комбинаций, которые сработали бы в максимально возможном количестве ситуаций, возможно, для нескольких альтернативных пар для разных ситуаций.

1 Ответ

2 голосов
/ 27 января 2011

Template-Toolkit по умолчанию [% template directives %], который работает достаточно хорошо.

...