Рандомизация текста.



  • Никогда не задумывался на эту тему, но как можно сделать рандомизацию текста из файла, как делают во многих программах?(извиняюсь, если тема уже поднималась)
    например: {Привет|Здравствуй}=Привет или Здравствуй



  • @Canine ресурс​ геератор строк рандомизирует из шаблона



  • @DrPrime Прости, можешь мне разжевать, как туда можно запихнуть текстовый документ (ресурс).
    То есть выбираешь ты файл txt с текстом в котором уже есть слова для рандомизации, чтобы не вставлять в поле.
    У меня текст многострочный.



  • @Canine

    1. выполняешь действие "Расположение ресурса" указав ресурс который ссылается на текстовый документ. На выходе получишь переменную [[RESOURCE_LOCATION]] (это имя по умолчанию) которая содержит полный путь до файла.

    2. выполняешь действие "Читать файл" в качестве пути к файлу указываешь переменную [[RESOURCE_LOCATION]]. Это действие вернет переменную в которой будет содержимое файла, по умолчанию [[FILE_CONTENT]]

    3. в действие "Выполнить код" вставляешь следующий код. Функцию писал не я) нашел в инете.

    //Вложенные {} эта функция не поддерживает
    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]]) //Здаров, как дела? нужно встретится завтра
    


  • @Canine Добавлю спинтакс в виде действия, сейчас можно через ресурсы типа "Генератор строк" или через js



  • @santilo 0_1495187415165_upload-1956a760-f8b5-4c90-9f28-53911c6d3e36
    нечто странное. Выдает syntax_error parse error в режиме запуска
    В режиме отладки работает отлично



  • @Viktor код который выше рабочий, а вы уверены что эта ошибка происходит в действие "Выполнить код"



  • @santilo да, на 100 %
    Без него работает, с ним нет. Переменная file_content туда передается. Код без моих правок.
    Что-то я наверное сделал не так, но что непонятно. В режиме отладки, подчеркну, работает и код. Странное что-то.



  • @Viktor said in Рандомизация текста.:

    @santilo да, на 100 %
    Без него работает, с ним нет. Переменная file_content туда передается. Код без моих правок.
    Что-то я наверное сделал не так, но что непонятно. В режиме отладки, подчеркну, работает и код. Странное что-то.

    Да вы правы, действительно эта функция работает только в режиме записи, я наверное только в этом режиме и проверял ее, когда публиковал код. Ошибка происходит из за этой строчки, var SPINTAX_PATTERN = /{[^"\r\n}]*}/, бас воспринимает квадратные скобки, как часть синтаксиса вызова ресурса(мне так кажется), их наверное нужно как то экранировать , но я не знаю как это сделать.

    Костыль: Вы можете заменить квадратные скобки на любой другой символ, например на #.

    #Привет,|Здаров,# #как дела?|что нового?|как жизнь?#
    var SPINTAX_PATTERN = /\#[^"\r\n\#]*\#/
    


  • @santilo попробую..



  • @santilo прошу прощения, может ошибка вот здесь:
    {[^"\r\n**}**]*}
    Одна из фигурных скобок только закрывается...



  • @Viktor said in Рандомизация текста.:

    @santilo прошу прощения, может ошибка вот здесь:
    {[^"\r\n**}**]*}
    Одна из фигурных скобок только закрывается...

    А вы проверьте какой тогда будет результат) он вас не порадует)



  • Добавлен новый метод апи _spintax Использовать так

    [[SPINTAX_RESULT]] = _spintax("{Привет|Как дела}")
    

    Действие Шаблон теперь поддерживает спинтакс.
    Например, такой шаблон

    {Текст|[[VARIABLE]]|{{Resource}}}
    

    Означает текст или значение переменной или значение из ресурса.

    Билд будет через пол часа.





  • @support всегда зотел спросить, а что значит Доп. обработка в действии шаблон?



  • @DrPrime Это если шаблон грузится из файла. Он попадает в переменную [[FILE_CONTENT]] и если применить к этой переменной действие Шаблон, то в результате получим просто содержимое файла как результат. А если установить эту галку, то действие раскроет шаблон 2 раза



  • @support понял, тоесть она заменит переменные в тесте файла



  • @DrPrime Да и ресурсы и теперь спинтакс.



  • @support как этим пользоваться тО?)))



  • @dornporn около 5 сообщений выше есть описание как это использовать.


Log in to reply