Skip to content

Instantly share code, notes, and snippets.

@hogart
Last active February 27, 2017 22:50
Show Gist options
  • Save hogart/a21fd71951653b01947eab12c3ec48a1 to your computer and use it in GitHub Desktop.
Save hogart/a21fd71951653b01947eab12c3ec48a1 to your computer and use it in GitHub Desktop.
if-ru tracery
{
"encounter": ["Я встретил #animal"],
"animal": ["серого волка", "#color# медведя", "#color# зайца"],
"color": ["черного", "белого"]
}

Поскольку я разработчик по профессии, то тут будет много технической части (больше, чем мне бы хотелось). Сегодня узнал о существовании библиотеки Tracery. В сущности, это компилятор очень простого макроязыка, который делает одну вещь: подставляет в строку в указанном месте случайное значение из заданного массива, причем рекурсивно. Например такая «грамматика»:

{
    "encounter": ["Я встретил #animal"],
    "animal": ["серого волка", "#color# медведя", "#color# зайца"],
    "color": ["черного", "белого"]
}

будет выдавать встречу с серым волком либо черным/белым медведем/зайцем. Есть порт на Ruby, Python, макрос для Twine и недавно появился на C#.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment