Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

generator eating random words #1

Open
mgkirs opened this issue Oct 31, 2017 · 4 comments
Open

generator eating random words #1

mgkirs opened this issue Oct 31, 2017 · 4 comments

Comments

@mgkirs
Copy link

mgkirs commented Oct 31, 2017

`<?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

@neveldo
Copy link
Owner

neveldo commented Nov 3, 2017

Hello @mgkirs ,

Thanks for having reported an issue ! However, it's a little but confuse to me as your code snippet is huge (and I think the russian characters which I'm not familar with didn't help :) ).

Could you provide a snippet as small as possible that whould highlight the issue you encountered ? It would help me a lot in order to try to fix the library and provide a new version !

@mgkirs
Copy link
Author

mgkirs commented Nov 8, 2017

INPUT:
$data = [
'sex' => 'f'',
'sexg' => 'а',
'itempp' => 'люстрe',
'itemvp' => 'люстру'
];

<<<EOL
#set{@aaa|#if{sex == 'f'|а|}};;

#set{@takomg|#if{sexg == 'm'|таком|такой} @itempp};;
#set{@takuyg|#if{sexg == 'm'|такого|такую} @itemvp};;
#set{@want|#random{|давно }#random{хотел@aaa именно @takoyg|искал@aaa именно @takoyg|мечтал@aaa о #random{@takomg}}};;
EOL;

WHITH MY BIG TPL OUTPUT:
давно
VALID OUTPUT:
давно мечтала именно о такой люстре

@neveldo
Copy link
Owner

neveldo commented Nov 11, 2017

Hello,

I'm sorry but I still can't understand well your issue with your last example as itcontains several errors (double single quotes at the line 3 : 'sex' => 'f''). Moreover, it does output nothing as it only contains set instructions.

@mgkirs
Copy link
Author

mgkirs commented Nov 17, 2017

Thats is a fragment of problem generation.
Please try run this:
INPUT:
$data = [[
'sex' => 'f',
'sexg' => 'а',
'itempp' => 'люстрe',
'itemvp' => 'люстру'
]];

$t = <<<EOL
#set{@aaa|#if{sex == 'f'|а|}};;

#set{@takomg|#if{sexg == 'm'|таком|такой} @itempp};;
#set{@takuyg|#if{sexg == 'm'|такого|такую} @itemvp};;
#set{@want|#random{|давно }#random{хотел@aaa именно @takoyg|искал@aaa именно @takoyg|мечтал@aaa о #random{@takomg}}};;
@want
EOL;

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

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

MY OUTPUT:
давно
VALID OUTPUT:
давно мечтала именно о такой люстре

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants