@mr-R Поставьте руками для 23.2.2
https://community.bablosoft.com/topic/14820/string-модуль-для-работы-со-строками
выполняешь действие "Расположение ресурса" указав ресурс который ссылается на текстовый документ. На выходе получишь переменную [[RESOURCE_LOCATION]] (это имя по умолчанию) которая содержит полный путь до файла.
выполняешь действие "Читать файл" в качестве пути к файлу указываешь переменную [[RESOURCE_LOCATION]]. Это действие вернет переменную в которой будет содержимое файла, по умолчанию [[FILE_CONTENT]]
в действие "Выполнить код" вставляешь следующий код. Функцию писал не я) нашел в инете.
//Вложенные {} эта функция не поддерживает
var spin = function (text) {
var SPINTAX_PATTERN = /\{[^"\r\n\}]*\}/;
var match;
while (match = text.match(SPINTAX_PATTERN)) {
match = match[0];
var candidates = match.substring(1, match.length - 1).split("|");
text = text.replace(match, candidates[Math.floor(Math.random() * candidates.length)])
}
return text;
}
//[[FILE_CONTENT]] содержит {Привет,|Здаров,} {как дела?|что нового?|как жизнь?} {увидимся|нужно встретится} {сегодня|завтра|вечером}
VAR_TEXT = spin([[FILE_CONTENT]]); //в переменной [[TEXT]] будет рандомизированный текст
log([[TEXT]]) //Здаров, как дела? нужно встретится завтра
@Viktor said in Рандомизация текста.:
@santilo да, на 100 %
Без него работает, с ним нет. Переменная file_content туда передается. Код без моих правок.
Что-то я наверное сделал не так, но что непонятно. В режиме отладки, подчеркну, работает и код. Странное что-то.
Да вы правы, действительно эта функция работает только в режиме записи, я наверное только в этом режиме и проверял ее, когда публиковал код. Ошибка происходит из за этой строчки, var SPINTAX_PATTERN = /{[^"\r\n}]*}/, бас воспринимает квадратные скобки, как часть синтаксиса вызова ресурса(мне так кажется), их наверное нужно как то экранировать , но я не знаю как это сделать.
Костыль: Вы можете заменить квадратные скобки на любой другой символ, например на #.
#Привет,|Здаров,# #как дела?|что нового?|как жизнь?#
var SPINTAX_PATTERN = /\#[^"\r\n\#]*\#/
Добавлен новый метод апи _spintax Использовать так
[[SPINTAX_RESULT]] = _spintax("{Привет|Как дела}")
Действие Шаблон теперь поддерживает спинтакс.
Например, такой шаблон
{Текст|[[VARIABLE]]|{{Resource}}}
Означает текст или значение переменной или значение из ресурса.
Билд будет через пол часа.
@DrPrime Это если шаблон грузится из файла. Он попадает в переменную [[FILE_CONTENT]] и если применить к этой переменной действие Шаблон, то в результате получим просто содержимое файла как результат. А если установить эту галку, то действие раскроет шаблон 2 раза