/*******************************************************************************
* Copyright (c) 2012-present Jakub Kováč, Jozef Brandýs, Katarína Kotrlová,
* Pavol Lukča, Ladislav Pápay, Viktor Tomkovič, Tatiana Tóthová
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package algvis.core;
import java.text.Normalizer;
import java.util.Arrays;
import java.util.Locale;
import java.util.Vector;
import java.util.regex.Pattern;
import algvis.internationalization.Languages;
public class WordGenerator {
private final static WordGenerator INSTANCE = new WordGenerator();
private Vector<String> enWords;
private Vector<String> skWords;
private WordGenerator() {
initRandomEnText();
initRandomSkText();
}
private static WordGenerator getInstance() {
return INSTANCE.changeGenerator();
}
private WordGenerator changeGenerator() {
return this;
}
private Vector<String> getEnWords() {
return enWords;
}
private Vector<String> getSkWords() {
return skWords;
}
private static String getEnWord() {
final WordGenerator wg = WordGenerator.getInstance();
return wg.getEnWords().get(MyRandom.Int(wg.getEnWords().size()));
}
public static String getSkWord() {
final WordGenerator wg = WordGenerator.getInstance();
return wg.getSkWords().get(MyRandom.Int(wg.getSkWords().size()));
}
public static String getABWord() {
return getABWord(10);
}
public static String getABWord(int n) {
final StringBuilder s = new StringBuilder("");
for (int i = 0; i < n; ++i) {
if (MyRandom.heads()) {
s.append("A");
} else {
s.append("B");
}
}
s.append("$");
return s.toString();
}
public static String getWord(Settings s) {
final int current_language = Languages.getCurrentLanguage();
switch (current_language) {
case 0:
return getEnWord();
case 1:
return getSkWord();
}
return null;
}
public static Vector<String> parseString(String ss) {
final Vector<String> ll = new Vector<String>(Arrays.asList(ss
.replaceAll("'", " ").split("(\\s|,)+")));
final Vector<String> result = new Vector<String>();
final Pattern p = Pattern
.compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+");
for (String s : ll) {
s = Normalizer.normalize(s, Normalizer.Form.NFD);
s = p.matcher(s).replaceAll("");
s = s.toUpperCase(Locale.ENGLISH);
s = s.replaceAll("[^A-Z]", "");
result.add(s + "$");
}
return result;
}
private void initRandomSkText() {
String skText = "Pokoj vládne v tomto kraji, "
+ "mesto stráži cestu obchodnú, "
+ "výhľad pekný -- nielen v Raji, "
+ "na rodnú našu Tatru nemennú. "
+ "Slovákovi dobre je, na poli sa darí, "
+ "Uhor dane vyzbiera, no on bohatstva má dosť, "
+ "osud mu však nepraje a snahu všetku marí, "
+ "veľký, mocný Tatár, chystá zlámať mu kosť! " + " "
+ "Na rýchlom koni mu to cvála, " + "rezko je tu, takmer hneď. "
+ "Slovák skrytý, v hore spáva, " + "bije Tata ako meď. "
+ "A keďže Slovák nebol žiadne psisko, "
+ "na vďaku Bohu, tu, postavil Kláštorisko. ";
skText += "Krásne skaly, divé rieky, uprostred lúka je, "
+ "kostol tu trčí ako pocta všemocnému Bohu, "
+ "Slovák má radosť, a len čo ošetrí si nohu, "
+ "ďalej na poliach v pokoji usilovne pracuje. " + ""
+ "Do hôr volá mníchov, ľudí s dobrým poslaním, "
+ "oni azkéti sú, jedia ryby, chlieb a hrach, "
+ "len raz za týždeň vidia za bránami mach, "
+ "avšak najviac prekvapia Ťa mlčaním. " + ""
+ "Ora et Labora -- modli sa a pracuj, dávne heslo platilo, "
+ "písanie a modlenie sa napĺňalo život ich. "
+ "Jeden hábit, v zime ovčia koža -- to vtedy sa nosilo, "
+ "dnes sa trasiem -- nechcem byť jedným z nich. "
+ "Veľmi sa však zaujímam, ako pri tom mlčaní, "
+ "viedli život, mali slovo pri spoločnom sedení. ";
skText += "Zleteli orly z Tatry, tiahnu na podolia, "
+ "ponad vysoké hory, ponad rovné polia; "
+ "preleteli cez Dunaj, cez tú šíru vodu, "
+ "sadli tam za pomedzím slovenského rodu. " + ""
+ "Duní Dunaj a luna za lunou sa valí: "
+ "nad ním svieti pevný hrad na vysokom bralí. "
+ "Pod tým hradom Riman—cár zastal si táborom: "
+ "belia sa rady šiatrov ďalekým priestorom. "
+ "Pokraj táboru sedí cár na zlatom stolci; "
+ "okol neho cárska stráž, tuhí to paholci; "
+ "a pred cárom družina neveliká stojí: "
+ "sú to cudzí víťazi, každý v jasnej zbroji. "
+ "Pobelavé kaderie šije im obtáča, "
+ "modré ich oči bystro v okolo si páča. "
+ "Rastom sú ako jedle, pevní ako skala, "
+ "zdalo by sa ti, že ich jedna mater mala. "
+ "Krásna zem — jej končiny valný Dunaj vlaží, "
+ "a Tatra skalnou hradbou okol nej sa väží: "
+ "Tá zem, tie pyšné hory, tie žírne moravy: "
+ "to vlasť ich, to kolíska dávna synov slávy. "
+ "Slovenský rod ich poslal, zo slávneho snemu, "
+ "aby išli s pozdravom k cárovi rímskemu. "
+ "Oni čelom nebijú, do nôh nepadajú: "
+ "taká otroč neznáma slovenskému kraju, "
+ "lež božie dary nesú, chlieb a soľ, cárovi "
+ "a smelými sa jemu primlúvajú slovy: "
+ "Národ slovenský, kňazstvo i staršina naša, "
+ "kroz nás ti, slávny cáre! svoj pozdrav prináša. "
+ "Zem tá, na ktorú kročiť mieni tvoja noha, "
+ "to je zem naša, daná Slovänom od Boha. "
+ "Pozri: tu jej končiny valný Dunaj vlaží, "
+ "tam Tatra skalnou hradbou okol nej sa väží. "
+ "A zem to požehnaná! Chvála Bohu z neba, "
+ "máme pri vernej práci voždy svoj kus chleba. "
+ "Zvyk náš je nie napadať cudzie vlasti zbojom: "
+ "Slovän na svojom seje, i žne len na svojom, "
+ "cudzie nežiada. Ale keď na naše dvere "
+ "zaklope ruka cudzia v úprimnej dôvere: "
+ "kto je, ten je; či je on zblíza, či zďaleka: "
+ "Vo dne, v noci na stole dar boží ho čaká. "
+ "Pravda, bohy vydaná, káže nám Slovänom: "
+ "pána mať je neprávosť a väčšia byť pánom. "
+ "A človek nad človeka u nás nemá práva: "
+ "sväté naše heslo je: Sloboda a sláva! — "
+ "Neraz krásnu vlasť našu vrah napadol divý: "
+ "na púšť obrátili sa bujné naše nivy; "
+ "mestá ľahli popolom: a ľud náš úbohý, "
+ "bitý biedami, cudzím dostal sa pod nohy. "
+ "Bláhal už víťaz pyšný, že si bude pásti "
+ "vôľu svoju naveky po slovänskej vlasti, "
+ "a žiť z našich mozoľov: ale bláhal darmo! "
+ "Dal nám Boh zas dobrý deň, zlomili sme jarmo. "
+ "A tí, krutým železom čo nad nami vládli, "
+ "kdeže sú? — My stojíme; ale oni padli. — "
+ "Lebo — veky to svedčia — vo knihách osudu "
+ "tak stojí napísané o slovänskom ľudu: "
+ "Zem, ktorú v údel dali Slovänom nebesá, "
+ "tá zem hrobom každému vrahovi stane sa. — "
+ "Nuž, povedzže nám, cáre! mocná ruka tvoja "
+ "čože nám nesie: či meč, či vetvu pokoja? "
+ "S mečom ak ideš: cáre! meče máme i my, "
+ "a poznáš, že narábať dobre vieme s nimi; "
+ "ak s pokojom: pozdrav ťa pán neba i zeme, "
+ "lepšie, ako ťa my tu pozdraviť umieme. — "
+ "Tieto dary božie sú priazne našej znaky; "
+ "z ďaky ti ich dávame: ber ich aj ty z ďaky.“ "
+ "Nevzal cár božie dary, z jeho mračnej tvári "
+ "urazená sa pýcha ľútnym hnevom žiari. "
+ "A zo stolca zlatého takovým sa heslom "
+ "ozvali ústa jeho ku slovänským poslom: "
+ "Mocný pán, ktorému boh celú zem podnožil "
+ "a osudy národov v ruku jeho vložil: "
+ "ten pán velí: Slovänia! pozrite po svete: "
+ "medzi národy jeho či jeden nájdete, "
+ "ktorý by putá minul abo nezahynul, "
+ "akže oproti Rímu prápor svoj rozvinul. "
+ "Skloníte šije i vy. — Tie krásne roviny, "
+ "túto zem vašich dedov dostane ľud iný. "
+ "A spurné rody vaše pôjdu Rímu slúžiť, "
+ "strážiť nám naše stáda, polia naše plúžiť. "
+ "A junač vašu k mojim junákom pripojím, "
+ "a z nej krajinám rímskym obranu pristrojím. "
+ "A kto sa proti mojim rozkazom postaví, "
+ "beda mu! ten sám sebe záhubu pripraví. "
+ "Vedzte, že som pán Rímu, a Rím je pán svetu: "
+ "To moja cárska vôľa; to vám na odvetu.“ " + ""
+ "Hriema pyšný cár, hriema zo stolca zlatého, "
+ "lenže Slovän nejde sa ľakať pýchy jeho. "
+ "Hoj, rozovrela tá krv slovänská divoko, "
+ "a junák ti cárovi pozrel okom v oko; "
+ "a z oka ti mu božia zablysla sa strela, "
+ "ruka sa napružila a na zbroj udrela; "
+ "a jedným veľkým citom srdcia im zahrali; "
+ "a jeden strašný ohlas ústa im vydali: "
+ "„Mor ho!“ kríkla družina slovänská odrazu "
+ "a meč zasvietil v pästi každému víťazu: "
+ "„Mor ho!“ kríkla a razom na cára sa metá: "
+ "To ti na rímsku pýchu slovänská odveta. "
+ "No, dokáž teraz, či máš toľko sily v meči, "
+ "koľko pýchy vo tvojej, cáre, bolo reči. — "
+ "Ale ten nie! — zbroje sa bojí podlá duša: "
+ "a tu ti o slobodu dobrý ľud pokúša. — "
+ "Skočil medzi stráž svoju cár bledý od strachu: "
+ "a zlatý jeho stolec už sa váľa v prachu; "
+ "a mečom za ním Slovän cestu si preráža "
+ "a junák za junákom padá cárska stráža. " + ""
+ "Zasurmili surmity, volajú do zbroje: "
+ "povstal tábor, do šíkov zvíjajú sa voje; "
+ "a voj za vojom divým útokom ta letí, "
+ "kde boj na cára bijú tie slovänské deti. "
+ "Husté prachu kúdoly po poli valia sa, "
+ "zem dupotom a nebo rykom sa otriasa. — "
+ "A tá naša rodinka, tá slovänská čata, "
+ "už vám je zôkol—vôkol od vrahov obstatá. "
+ "Sto mečov sa každému nado hlavou blyští, "
+ "lež Slovän nečítava vrahov na bojišti, "
+ "ale morí. — Hoj, mor ho! detvo môjho rodu, "
+ "kto kradmou rukou siahne na tvoju slobodu: "
+ "a čo i tam dušu dáš v tom boji divokom: "
+ "Mor ty len, a voľ nebyť, ako byť otrokom. " + ""
+ "Zúri boj a našina stala si dokola: "
+ "to vie, že premoc rímsku jej moc nepredolá: "
+ "lež, brať moja, ak už len padnúť mi máš v boji, "
+ "to že mi padni, ako víťazom pristojí." + ""
+ "A môj Slovän ešte raz bystré hodil zraky "
+ "ponad tie šíre rovne, na kraj svoj ďaleký. "
+ "Tam na tých horách sivé mihajú sa väže, "
+ "čo strežú slovenského národa čierťaže. "
+ "Svätoháj, stovekými zelený lipami, "
+ "v tajné tam lono túli bohov jeho chrámy. "
+ "A nad riekou biely dom, v ňom jeho rod milý, "
+ "a v čistom poli dedov posvätné mohyly: "
+ "dedov, ktorých niekdy ľud radievali rady, "
+ "ktorých meč divých vrahov odrážal nápady. "
+ "Ich popoly dávno už čierna zem tam kryje, "
+ "ale ich meno posiaľ v piesni ľudu žije. "
+ "A sláva zašlých vekov junáka oviala; "
+ "a duša jeho svätým ohňom splápolala, "
+ "a meč v jeho pravici strašnejšie sa zvíja; "
+ "bleskom blýska na vraha, hromom ho zabíja. "
+ "Praštia zlomené raty, bité štíty zvonia "
+ "a pyšné prilby rímske do prachu sa ronia. " + ""
+ "Hynú i naši, hynú, ale sťa víťazi! "
+ "Žiadna rana zvuk bôľu z úst im nevyrazí, "
+ "vďačne lejú vernú krv po osudnom poli: "
+ "oj, veď padnúť za národ — oj, veď to nebolí! " + ""
+ "A boj pomaly tíchne: strašná búry sila "
+ "divým svojím zúrením sama sa zničila. "
+ "— A kde naši, čo bili ten Rím svetovládny, "
+ "lebo koval úmysel na Slovänstvo zradný: — "
+ "Kde naši? — Hojže, Tatro, jasných orlov mati! "
+ "Nikdy sa ti tá tvoja detva už nevráti. "
+ "Páč! Nad valným Dunajom krvavô pobrežia: "
+ "tam ti tvoji synovia povraždení ležia. "
+ "Neostal, ani kto by tú zvesť niesol bratom: "
+ "Bratia vám za česť rodu padli v boji svätom. "
+ "Lež každý na junáckej spočíva posteli, "
+ "na kope vrahov, zbitých od jeho oceli. "
+ "Už nežije, a ešte hrozí tá tvár bledá, "
+ "tá ruka zmeravená meč odjať si nedá. " + ""
+ "A cár s okom sklopeným na bojišti stojí: "
+ "A čo? — Azda tých padlých Slovänov sa bojí? — "
+ "Nie, lež bezdušné svojich hromady tam vidí "
+ "a zo svojho víťazstva radovať sa stydí. "
+ "No zahyň, studom večným zahyň, podlá duša, "
+ "čo o slobodu dobrý ľud môj mi pokúša. "
+ "Lež večná meno toho nech ovenčí sláva, "
+ "kto seba v obeť svätú za svoj národ dáva. "
+ "A ty mor ho! — hoj mor ho! detvo môjho rodu, "
+ "kto kradmou rukou siahne na tvoju slobodu; "
+ "a čo i tam dušu dáš v tom boji divokom: "
+ "Mor ty len, a voľ nebyť, ako byť otrokom. ";
// taken from:
// http://zlatyfond.sme.sk/dielo/83/Chalupka_Mor-ho/1#ixzz1nf7uhUz5
skWords = parseString(skText);
}
private void initRandomEnText() {
final String enText = "To be, or not to be: that is the question: "
+ "Whether 'tis nobler in the mind to suffer "
+ "The slings and arrows of outrageous fortune, "
+ "Or to take arms against a sea of troubles, "
+ "And by opposing end them? To die: to sleep; "
+ "No more; and by a sleep to say we end "
+ "The heart-ache and the thousand natural shocks "
+ "That flesh is heir to, 'tis a consummation "
+ "Devoutly to be wish'd. To die, to sleep; "
+ "To sleep: perchance to dream: ay, there's the rub; "
+ "For in that sleep of death what dreams may come "
+ "When we have shuffled off this mortal coil, "
+ "Must give us pause: there's the respect "
+ "That makes calamity of so long life; "
+ "For who would bear the whips and scorns of time, "
+ "The oppressor's wrong, the proud man's contumely, "
+ "The pangs of despised love, the law's delay, "
+ "The insolence of office and the spurns "
+ "That patient merit of the unworthy takes, "
+ "When he himself might his quietus make "
+ "With a bare bodkin? who would fardels bear, "
+ "To grunt and sweat under a weary life, "
+ "But that the dread of something after death, "
+ "The undiscover'd country from whose bourn "
+ "No traveller returns, puzzles the will "
+ "And makes us rather bear those ills we have "
+ "Than fly to others that we know not of? "
+ "Thus conscience does make cowards of us all; "
+ "And thus the native hue of resolution "
+ "Is sicklied o'er with the pale cast of thought, "
+ "And enterprises of great pith and moment "
+ "With this regard their currents turn awry, "
+ "And lose the name of action. - Soft you now! "
+ "The fair Ophelia! Nymph, in thy orisons "
+ "Be all my sins remember'd.";
enWords = parseString(enText);
}
}