UNPKG

anbani

Version:

Multifunctional javascript toolkit for Georgian Alphabet - Anbani

423 lines (394 loc) 11.5 kB
import { setCharAt } from "./utils.mjs"; const data = {} /* Frequencies for (for Vefxistyaosani) - words - 40989 - dot - 1878 - comma - 8479 - exclamation - 588 - question - 286 */ data.frequency = { general : { '.' : 0.0458171705, ',' : 0.206860377, '!' : 0.0143453122, '?': 0.00697748176, }, summed : [ ['?', 0.00697748176], ['!', 0.02132279396], ['.', 0.06713996445], [',', 0.27400034145] ] } // 100 random words generated using char-rnn data.vefxwords = [ 'გამიშვშეს', 'მართალიპი', 'შემომოცივე', 'ვუხვა', 'გავლსობა', 'განდევანგაა', 'მოასეხეს', 'აქამდსაგებენ', 'შვენინე', 'უგანდეგო', 'ქანულკულნი', 'გემრუფენ', 'ვეღათ', 'მივისცა', 'მუკამდის', 'მივიმოწუქალსა', 'მზლოს', 'მოვლეხვე', 'ვიმაქებდა', 'ტატრესტინი', 'მოითქოკა', 'მდაგებენ', 'ვიმცე', 'სევა', 'სათინესნი', 'სადგმო', 'გასჩვადეთ', 'მესმანცა', 'მივსცავე', 'წეითო', 'ძვილნი', 'გამიზრიან', 'დავათქვენო', 'ზიცი', 'მისცედი', 'მონებანი', 'დანამრისა', 'სრცოტი', 'ჰქონთავისთან', 'მბრძენია', 'წახსილთა', 'მიხსენით', 'სევნა', 'გარდუკვრიდდა', 'მიდამოდეს', 'სიპყრო', 'შემწოვლისა', 'მამდიჰხლეან', 'ბრჭნია', 'დანენატანნი', 'უკრთებოდემნი', 'იციცოდა', 'სამატა', 'უფრნა', 'გაეგარნების', 'დავეჯარენა', 'მტემურსა', 'მშვენოდენო', 'გიმძიმნო', 'სამვზინო', 'მოვლოცთა', 'გიშვილა', 'დაამჭებინ', 'მითხროს', 'მჟავალია', 'მღურა', 'ღინდეს', 'მოაგხება', 'გავიცეცხლი', 'ტირსლით', 'გავწყრეტა', 'მყივნენ', 'ქაფინს', 'ბანგსა', 'შემოხანა', 'შემოვსჭვრეტით', 'ამოვჰღერთო', 'მოცადია', 'მოეხვიდეს', 'თქმია', 'აღვია', 'ვლამს', 'მოხდიანები', 'გორსვლითა', 'გვთქვას', 'გაუზადა', 'დაბითქის', 'ანვინა', 'შრიდონი', 'გავწიდნია', 'ალვითანი', 'მონიო', 'სიტირენ', 'გიშიხარნი', 'დამიფემი', 'მეგრეცა', 'ფითჯი', 'მსდევარსა', 'განაზანდა', 'საქმინ', ] data.fnames = [ 'თავან', 'ელიკონ', 'კანტლიონ', 'გველე', 'ლადიან', 'ლოტინე', 'გიოლგვი', 'გარსა', 'თედა', 'მეზნან', 'მარტა', 'აურაზგრ', 'მადრა', 'გიოგილი', 'სონიკელიზანი', 'ასსანო', 'ნიგოლიტი', 'ავაკვან', 'მონს', 'ნადრინ', 'ნიფოლ', 'ელიკორ', 'დამას', 'გიმრი', 'ობარხი', 'გამონ', 'ონეს', 'ზიხტინე', 'იოკელ', 'სატდა', 'პარა', 'იანეზ', 'ზინა', 'რანგი', 'იანგორ', 'აბსინე', 'ლენტან', 'ზისტიკობ', 'ნიგოლო', 'დატითნი', 'მანთა', 'არგიქ', 'ზიკო', 'ერლე', 'იანე', 'მევრენ', 'ალტისა', 'მარდია', 'სისელ', 'ხეისა', 'ელუან', 'დელო', 'იეკლებ', 'გუჩილი', 'ტამა', 'ნოკგოლ', 'იაკისე', 'დადო', 'ართემრას', 'ანაიკობე', 'გტიტ', 'თახსან', 'ზანა', 'ნუდო', 'გიოდა', 'ისსლიკონ', 'ალსან', 'რამოლე', 'გუმან', 'ნურმგინ', 'თომითანი', 'დევანე', 'ელედეინ', 'გიმოტ', 'არარ', 'ორმონ', 'ნედრი', 'დიმო', 'ხოთიანეი', 'გივა', 'ნანტრე', 'გიმოლ', 'დოსონ', 'იკანენ', 'იკქორიზე', 'გილტორგ', 'დეტონ', 'ერდეა', 'ირეგლიზ', 'რიდელუდან', 'თოკან', 'იანებენტიანა', 'სიბო', 'გიორტინ', 'ნიკილან', 'ელაკონ', 'გიდრაბ', 'ლეცთეტანტენდერიბ', 'დამერ', 'იეგო', ] data.lnames = [ 'მახადენია', 'ბსელრია', 'ქავია', 'კორეკია', 'მარდია', 'ბარდიონია', 'გვიპიანდია', 'ერთელია', 'ნთხაია', 'თედია', 'ბოხაია', 'ბარია', 'ჭარტინია', 'არპანია', 'ჩურია', 'მორცაწაზია', 'არმელია', 'მირბარია', 'ჭველაქია', 'ქარითია', 'გართელია', 'იანია', 'დვანტონეიანია', 'პუჩია', 'დატილია', 'კანია', 'ვარდსვალია', 'ყორთელია', 'არდოლია', 'რიკსქაშვილი', 'გამექონთეშვილი', 'ლუჩაშვილი', 'მარდაშვილი', 'პაბიშვილი', 'არბერეშვილი', 'ფოსურიშვილი', 'ვაწოშვილი', 'ჩრილიაშვილი', 'ტიმაშვილი', 'მავანიშვილი', 'მადსიშვილი', 'რედელიშვილი', 'თეთაშვილი', 'გარავაშვილი', 'დარახაშვილი', 'ბარჭამიშვილი', 'ბარახაშვილი', 'ანღელიშვილი', 'მებაშვილი', 'სურეჯიშვილი', 'აკბთაკიშვილი', 'ტუსონიშვილი', 'ტოდერაშვილი', 'ზაბხასიშვილი', 'ქურაბერინიშვილი', 'ებვეკაშვილი', 'ერდითაშვილი', 'ურბელიშვილი', 'მენრმაშვილი', 'ჯვილოძე', 'ბადიაძე', 'შვირიძე', 'სასანაძე', 'გიმაანიძე', 'გვამავიძე', 'არმემიძსძე', 'ბარაძე', 'აბეანიძე', 'ოვონიძე', 'ლამაშვიძე', 'ობთახურაძე', 'კერეძე', 'ფვერიძე', 'მაგიძე', 'კადიაშიძე', 'გამსანიძე', 'მერტინიძე', 'ბემეელიძე', 'ტოხიძე', 'ჭარატიძე', 'ბადოსელი', 'ვარისელი', 'სირხელი', 'სორხელი', 'მარდელი', 'გაშვითელი', 'კოთაველი', 'ოსთმინელი', 'ერისელი', 'ზთერტელი', 'ხამიკელი', 'მიბაძეშიელი', 'იკთელი', 'გთციტაბელი', 'ასიცელი', 'ობაიჭელი', 'ლენთელი', 'მემჩათერინონგბანინიძე', 'ამედვაქსიკოგეიშვირი', 'მორჟვონანდიშვილი', ] let dataset = data.vefxwords const freqs = data.frequency.summed const loadWordlist = (wordlist) => { dataset = wordlist } const sentences = (nwords) => { return createSentences(createWords(nwords)) } const paragraphs = (nwords, npar, newline="\n\n") => { let paragraphs = "" for (let i=0; i < npar; i++){ paragraphs += createSentences(createWords(nwords)) + newline } return paragraphs } const createSentences = (words) => { let sentences = "" for (let i=0; i < words.length; i++){ sentences += words[i] + randomMark() } sentences = sentences.trim() sentences = setCharAt(sentences, sentences.length-1, '.', 1) return sentences } const names = (nnames) => { let results = [] for (let i = 0; i < nnames; i++) { results.push(randomFirstName() + ' ' + randomLastName()) } return results } const randomFirstName = () => { return data.fnames[randomNumber(0, data.fnames.length)] } const randomLastName = () => { return data.lnames[randomNumber(0, data.lnames.length)] } const randomMark = () => { let r = Math.random() for (let i=0; i<freqs.length; i++) { if (r < freqs[i][1]) return freqs[i][0] + ' ' } return ' ' } const randomWord = () => { return dataset[randomNumber(0,dataset.length)] } const createWords = (nwords) => { let words = [] for (let i=0; i < nwords; i++){ words.push(randomWord()) } return words } // Random number [min, max) const randomNumber = (min, max) => { return Math.floor(Math.random() * (max-min) + min) } const $ = { randomFirstName, randomLastName, randomWord }; export default { sentences, paragraphs, loadWordlist, names, $ };