Шаблон состоит из одного или нескольких выражений, выражения бывают двух типов:
1) строка, 2) массив и строка.
Результатом является перебор всех комбинаций
m по n (m^n штук) [0,0,0]..[m,m,m] для всех выражений шаблона.
Выражения первого типа(просто строка) переходят в результат без изменений.
Выражения второго типа (массив Q и строка S) преобразуются следующим образом: проецируем комбинацию в массив Q,
заменяем подстроку %i индексом элемента, подстроку %n значением n, подстроку %k индексом комбинации и соединяем элементы строкой S. Комбинация [0,3,2] даёт строку [Q[0],Q[3],Q[2]].join(S). Если в массиве недостаточно элементов (меньше чем m) то используется только первый [Q[0],Q[0],Q[0]].join(S). Для простоты реализации парсинг шаблона ведётся через парсинг JSON-а (при помощи
jsonlint.js), ошибки парсера сообщают если введённые данные некорректны.
[Object,Object,Object] где каждый Object:
{
"p":["","","",["","",""],""], // обязательно
"n":[1,3], // опционально, по умолчанию [1,1]
"m":3, // опционально, по умолчанию 1
"si": "$i", // опционально, по умолчанию "%i"
"sn": "$n", // опционально, по умолчанию "%n"
"sk": "$k" // опционально, по умолчанию "%k"
}
Ещё примеры:
#1 #2 #3 #4