Giter Site home page Giter Site logo

textgenerator's People

Contributors

loekvangool avatar neveldo avatar rik43 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

textgenerator's Issues

generator eating random words

`<?php
mb_internal_encoding("UTF-8");

if (! file_exists(DIR . '/../../vendor/autoload.php')) {
echo "Please run 'composer install' on the root directory before running the sample script.";
return;
}

require DIR . '/../../vendor/autoload.php';

use Neveldo\TextGenerator\TextGenerator;
$data = [

[
    'sex' => 'f',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'f',
    'sexg' => 'm',
    'itemip' => 'шкаф',
    'itemvp' => 'шкаф',
    'itemdp' => 'шкафу',
    'itempp' => 'шкафе'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'f',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'f',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

],
[
    'sex' => 'm',
    'sexg' => 'f',
    'itemip' => 'люстрa',
    'itemvp' => 'люстру',
    'itemdp' => 'люстрe',
    'itempp' => 'люстрe'

]

];
$template = <<<EOF
#set{@hellor|#random{Здраствуйте|Привет|Привет всем|Добрый день|Всем привет}};;
#set{@hello|#prandom{10:|90:@hellor, }};;

#set{@aaa|#if{sex == 'f'|а|}};;
#set{@iiuy|#if{sex == 'm'|ий|ую}};;
#set{@aaiaiiy|#if{sex == 'm'|ый|ая}};;
#set{@aassia|#if{sex == 'm'|ся|ась}};;

#set{@ag|#if{sexg == 'f'|а|}};;
#set{@Negog|#if{sexg == 'm'|него|нее}};;
#set{@oiuyg|#if{sexg == 'm'|ой|ю}};;
#set{@iiuyg|#if{sexg == 'm'|ий|ую}};;
#set{@aaiaiiyg|#if{sexg == 'm'|ый|ая}};;
#set{@aassiag|#if{sexg == 'm'|ся|ась}};;

#set{@EtoTG|#if{sexg == 'm'|этот|эта} @itemip};;
#set{@ETug|#if{sexg == 'm'|этот|эту} @itemvp};;
#set{@egog|#if{sexg == 'm'|его|ее}};;
#set{@takomg|#if{sexg == 'm'|таком|такой} @itempp};;
#set{@takuyg|#if{sexg == 'm'|такого|такую} @itemvp};;
#set{@takoyg|#if{sexg == 'm'|такой|такую} @itemvp};;

#set{@want|#random{|давно }#random{хотел@aaa именно @takoyg|искал@aaa именно @takoyg|мечтала о #random{@takomg}}};;

#set{@service|#random{купить|приобрел|заказал|взял}};;

#set{@buydo|#random{купить|приобрести|заказать|взять}};;
#set{@buym|#random{купил|приобрел|заказал|взял}};;
#set{@Buyf|#random{купила|приобрла|заказала|взяла}};;
#set{@buy|#if{sex == 'm'|@buym|@Buyf}};;
#set{@buyitem|@buy #random{@takoyg|@ETug|@egog} #random{|здесь }#random{в этом магазине|на сайте|в интернет магазине}};;

#set{@emo|#random{класс|супер}};;
#set{@super|#random{класс|супер}};;
#set{@silno|#random{очень|сильно|}};;
#set{@coolseemw|#random{престижно|стильно|кашерно|солидно}};;
#set{@seemw|#random{выглядет|смотрится}};;
#set{@seeM|#random{улет|класс|супер|огонь|офигенно}};;
#set{@see|@seemw #random{это|-|} просто @seeM};;

#set{@imho|#random{@itemip #random{|мне}@silno понравил@aassiag|отличный сайт}};;
#set{@shvy|#random{стыки|швы}};;
#set{@seeshvy|#random{нет #random{никаких #random{лишних|} #random{щелей|зазоров},|} #random{все|} @shvy #random{идеальные|идеально ровные} #random{не к чему придраться|не придерешся|}}};;
#set{@seeassembly|#random{идеальная|качественная|отличная} #random{сборано|сделанно|изготовленно} из #random{хороших|качественных|приятных} материалов};;
#set{@seefeel|#random{#random{по ощюениям|на ощюп|} #random{приятная|качественная#random{, дорогая|}|дорогая#random{, качественная|} вещ}|#random{ощющается|чувствуется} что вещ}};;

#set{@subrealsee|#random{@seeshvy|@seeassembly|@seefeel}};;

#set{@realsee|#random{в реальности|в жизни|на деле|} @seemw #random{приятнее|лутше|красивее} чем на #random{фото|картинке|сайте} @subrealsee};;

#set{@iSEE|@coolseemw @seemw, @realsee};;
#set{@goodnow|};;

#set{@select|#random{|так вот }#random{здесь|тут} #random{#random{выбор|линейка|линейка товаров} #random{гораздо |}#random{лутше|шире|красивее|на любой вкус}|#random{большой|широкий} выбор}};;

#set{@notfind|#random{#random{|только }#random{|зря} #random{потратил@aaa|убил@aaa} #random{столько времени|время}|ничего #random{ подходящего| приличного |хороего |}не #if{sex == 'm'|нашел|нашла}}};;
#set{@walkstory|#random{#random{исколесил@aaa|#if{sex == 'm'|обошел|обошла}|изъездил@aaa} #random{кучу|много} магазинов|#random{#if{sex == 'm'|прошел|прошла}|#if{sex == 'm'|обошел|обошла}|#if{sex == 'm'|зашел|зашла} во} все #random{#random{доступные|известные} #random{мне |}магазины}|#random{прошел@aassia|прогулял@aassia} по всем #random{#random{доступным|известным} #random{мне |}магазинам}}};;

#set{@cat|#random{разделено на категории|разложенно по категорииям|поделено на категории|разбито на категории}};;

#set{@findstory|#random{все #random{очень|довольно} #random{красиво|доступно|просто|понятно} #random{#random{удобно|хорошо}|} представленно|#random{находиться|расположенно} #random{в одном месте|на одном сайте} @cat, очень удобно.| #random{наконец#random{ таки|-то} выбрала|#if{sex == 'm'|нашел|нашла}} #random{сво@oiuyg|} #random{любим@iiuyg|} @itemvp}};;

#set{@BigStory|#random{вообще #random{тут|здесь}} #random{огромный|широкий|большой} #random{выбор|ассортимент}, #random{|@walkstory @notfind, }#random{#if{sex == 'm'|зашел|зашла}|#if{sex == 'm'|перешел|перешла}} на сайит @findstory. #random{очень рад@aaa|#random{|до сих пор }радуюсь} что #random{#if{sex == 'm'|нашел|нашла} сайт|#if{sex == 'm'|зашел|зашла} сюда|#if{sex == 'm'|зашел|зашла} на сайт}#random{, pекомендую|}};;

#set{@clickstory|#random{#random{нажал@aaa|кликнул@aaa} #random{кноку купить|кноку заказать|кноку оформить заказ|на кнопку оформления заказа}|#random{1 нажатие|одно нажатие|1 клик|один клик}} #random{ввел@aaa|забил@aaa} #random{свои|} #random{данные|контаты}, #random{мне позвонил менеджер|со мной связались|мне #random{|быстро} перезвонили}, #random{|все |заказ }#random{доставили|привезли} #random{в тот же день|на следующий день}};;
#set{@longfindstory|#random{очень} долго #random{искал@aaa|искали} #random{подходящ@iiuyg|хорош@iiuyg} @itemvp #random{под дизайн|под интерьер}#random{,|#random{, то по #random{цвету|материалам} не подходил@aaa, то по #random{стилю|дизайну}, то по #random{размерам|габаритам}, a|}} @EtoTG просто #random{великолепн@ag|замечателн@aaiaiiyg}, влюбил@aassia в @Negog сразу };;
#set{@repairstory|#random{мы|} #random{делали|сделали|делаем} ремонт, @longfindstory};;

#set{@thankyou|};;

#set{@story|#random{@clickstory|@repairstory|@walkstory @notfind|@BigStory}};;
@hello#random{@want|@buyitem}, #random{@story|@imho} @thankyou

EOF;

$textGenerator = new TextGenerator();
$textGenerator->compile($template);

foreach ($data as $row) {
echo $textGenerator->generate($row) . "\n\n";
}`

INPUT:
#set{@clickstory|#random{#random{нажал@aaa|кликнул@aaa} #random{кноку купить|кноку заказать|кноку оформить заказ|на кнопку оформления заказа}|#random{1 нажатие|одно нажатие|1 клик|один клик}} #random{ввел@aaa|забил@aaa} #random{свои|} #random{данные|контаты}, #random{мне позвонил менеджер|со мной связались|мне #random{|быстро} перезвонили}, #random{|все |заказ }#random{доставили|привезли} #random{в тот же день|на следующий день}};;`
OUTPUT:
Привет всем, давно мечтала о такой люстрe, 1 нажатие данные, мне быстро перезвонили, все привезли в тот же день
EATING: #random{ввел@aaa|забил@aaa}

INPUT:
#set{@want|#random{|давно }#random{хотел@aaa именно @takoyg|искал@aaa именно @takoyg|мечтал@aaa о #random{@takomg}}};;
OUTPUT:
давно

PS

PHP 7.1.10 (cli) (built: Sep 27 2017 09:03:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.10, Copyright (c) 1999-2017, by Zend Technologies

symfony Error - T_ENCAPSED_AND_WHITESPACE

Hey nice project,

but i cant run it :( Maybee you can help.

  $TG = new TextGenerator();
  $TG->compile("#if{@val == 5|the value equals 5|the value doesn't equal 5}");
  echo $TG->generate(array("val"=>5));
Parse error: syntax error, unexpected ''/[a-zA-Z_\x7f-\xff][a-zA-Z0-9' (T_ENCAPSED_AND_WHITESPACE) in [...]/vendor/symfony/expression-language/Parser.php on line 328

Add ability to do a reproducable random choice

I needed a function that allowed me to do a random choice, but keep the choice linked to a seed value so that the text would stay constant over subsequent runs (even when the template has changed, only the new parts change, the rest stays the same).

Interested in a PR?

License?

This looks useful! But under what license is it available?

reuse TextGenerator instance

if we use one instance several times for generate different templates, we have buggly output.

short example:

        $textGenerator = new TextGenerator();
        $textGenerator->compile("My test 1 #random{one|two}");
        $result = $textGenerator->generate([]);

        $textGenerator->compile("My test 2 #random{red|green}");
        $result2 = $textGenerator->generate([]);

OUTPUT:
test 2 redest 2 [1]red

The problem: sortedStatementsStack not reset before compile.

Google Sheets; column add

if I add a column in google spread sheet (did not try delete) before the columns where I had previously defied the column data for the generator; the data is either lost or the column information is out of sync in the edit screen of the test generator.

Impossible to set two interdependent variables for demonstrative pronoun (Der, Die, Das)

It is not possible to set interdependend variable.
This will set @word always to "Vespa" and @dempron always to "Die"

#random{
#set{@word|Auto}#set{@dempron|Das}|
#set{@word|Bus}#set{@dempron|Der}|
#set{@word|Vespa}#set{@dempron|Die}
}

It is necessary to change "Das Auto" to "dieses Auto" or "dem Auto.
This doesn't work either

#set{#random{Das Auto|Der Bus|Die Vespa}}

Because i can't check if there is "Der", "Die" or "Das" in a variable.

Goal is to make a text like this:
Was sagen sie zu dem Auto? Das Auto ist schön. Deshalb möchte ich dieses Auto kaufen.

Shuffle two or more #loops

Hi, is it posssible two shuffle two or more loops? Something like this:

#shuffle{ |;;
    #loop{@txt_1|1|true|||@txt}| ;;
    #loop{@txt_2|1|true|||@txt}
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.