Skip to content

Commit cbf8ab4

Browse files
committed
First commit
0 parents  commit cbf8ab4

File tree

5 files changed

+67
-0
lines changed

5 files changed

+67
-0
lines changed

README.md

Whitespace-only changes.

RandomFactor.php

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
require_once(__DIR__.'/src/Core.php');
4+
5+
if (!function_exists('random_factor')) {
6+
function random_factor($lang = 'en', $spacing = ' ', $adjectives = 1, $nouns = 1) {
7+
return RandomFactor\Core::generate($lang, $spacing, $adjectives, $nouns);
8+
}
9+
}

src/Core.php

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace RandomFactor;
4+
5+
class Core
6+
{
7+
private static $languages = [
8+
'no' => 'no',
9+
'en' => 'en'
10+
];
11+
12+
private static $adjectives = [];
13+
private static $nouns = [];
14+
15+
private static $adjective_count = 0;
16+
private static $noun_count = 0;
17+
18+
private static $imported_lang = '';
19+
private static $imported = false;
20+
21+
public static function generate($lang, $spacing, $adjectives, $nouns) {
22+
23+
// Doing this check here increases performance
24+
if((self::$imported_lang != $lang) || !self::$imported) {
25+
self::import_lang($lang);
26+
}
27+
28+
return self::$adjectives[rand(0, self::$adjective_count - 1)] .
29+
$spacing .
30+
self::$nouns[rand(0, self::$noun_count - 1)];
31+
32+
}
33+
34+
private static function import_lang($lang) {
35+
if (!in_array($lang, self::$languages)) {
36+
throw new \Exception('Language <b>' . $lang . '</b> not found');
37+
}
38+
39+
if (!file_exists(__DIR__ . '/lang/' . $lang . '.json')) {
40+
throw new \Exception('Language file <b>' . __DIR__ . '/lang/' . $lang . '.json</b> not found');
41+
}
42+
43+
$wordlist = json_decode(file_get_contents(__DIR__ . '/lang/' . $lang . '.json'), TRUE);
44+
45+
self::$adjectives = $wordlist['adjectives'];
46+
self::$adjective_count = $wordlist['data']['count']['adjectives'];
47+
48+
self::$nouns = $wordlist['nouns'];
49+
self::$noun_count = $wordlist['data']['count']['nouns'];
50+
51+
self::$imported_lang = $lang;
52+
self::$imported = true;
53+
54+
}
55+
}
56+
?>

src/lang/en.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"adjectives":["acceptable","according","accurate","active","actual","additional","administrative","adult","after","alive","alternative","amazing","annual","another","automatic","available","aware","basic","beautiful","beginning","best","better","big","brave","brief","bright","brilliant","business","calm","capable","careful","certain","chemical","civil","classic","clear","close","comfortable","commercial","common","competitive","complete","complex","comprehensive","confident","conscious","consistent","constant","cool","crazy","creative","critical","cultural","curious","current","cute","dark","dear","decent","dependent","different","direct","distinct","downtown","easy","economy","educational","effective","either","electronic","environmental","equal","even","every","exact","excellent","exciting","existing","expensive","external","extra","extreme","fair","false","familiar","famous","fast","federal","female","final","financial","flat","foreign","formal","former","free","fresh","friendly","full","funny","future","general","global","good","grand","great","green","guilty","happy","hard","head","healthy","heavy","helpful","historical","home","honest","hot","human","hungry","immediate","important","impressive","independent","individual","informal","initial","intelligent","interesting","internal","international","junior","key","kind","known","last","late","leading","least","less","level","little","logical","loud","lucky","major","many","massive","medical","middle","mobile","narrow","national","natural","nearby","neat","necessary","new","nice","normal","numerous","objective","obvious","official","open","ordinary","original","particular","perfect","personal","pleasant","political","popular","positive","potential","powerful","practical","present","pretty","previous","primary","private","professional","proper","proud","public","pure","quick","quiet","rare","real","realistic","reasonable","recent","relevant","remarkable","representative","responsible","rich","right","royal","safe","same","secret","secure","sensitive","serious","sharp","significant","simple","slight","smart","smooth","soft","southern","spare","special","spiritual","straight","strict","strong","successful","suitable","super","sure","suspicious","sweet","tall","technical","tiny","tough","traditional","true","used","useful","valuable","various","vast","visible","warm","wise","wonderful","wooden","working","young"],"nouns":["ability","accident","activity","actor","ad","addition","administration","advertising","advice","affair","agency","agreement","airport","alcohol","ambition","analysis","analyst","anxiety","apartment","appearance","apple","application","appointment","area","argument","army","arrival","art","article","aspect","assignment","assistance","assistant","association","assumption","atmosphere","attention","attitude","audience","awareness","baseball","basis","basket","bath","bathroom","bedroom","beer","bird","birthday","bonus","bread","breath","buyer","cabinet","camera","candidate","category","celebration","championship","chapter","charity","cheek","chemistry","chest","child","childhood","chocolate","church","city","classroom","client","climate","clothes","coffee","collection","college","combination","committee","communication","community","comparison","competition","complaint","computer","concept","conclusion","connection","consequence","construction","context","contract","contribution","control","conversation","cookie","country","county","courage","cousin","criticism","currency","customer","dad","data","database","decision","definition","delivery","department","departure","depression","depth","description","desk","development","device","diamond","difference","dinner","direction","director","dirt","discussion","disk","distribution","drawer","drawing","driver","ear","economics","editor","education","efficiency","effort","election","elevator","emotion","emphasis","employee","employer","employment","energy","engine","engineering","entertainment","enthusiasm","entry","environment","equipment","establishment","estate","event","exam","examination","excitement","explanation","expression","extent","fact","family","farmer","feedback","finding","fishing","flight","food","football","fortune","foundation","freedom","friendship","funeral","garbage","gate","gene","goal","government","grandmother","grocery","growth","guest","guidance","guitar","hair","hall","hat","health","hearing","heart","height","highway","historian","history","homework","honey","hotel","housing","idea","imagination","importance","impression","improvement","income","independence","indication","industry","information","initiative","inspection","instance","instruction","insurance","intention","interaction","internet","introduction","investment","judgment","king","knowledge","lab","ladder","lady","lake","language","law","leader","leadership","length","library","literature","location","loss","love","magazine","maintenance","mall","management","manager","manufacturer","map","marketing","marriage","math","meal","meaning","measurement","meat","media","medicine","member","membership","memory","menu","message","method","midnight","mixture","mode","mom","moment","month","mood","movie","music","nation","nature","negotiation","news","newspaper","night","obligation","office","operation","opinion","opportunity","orange","organization","outcome","oven","owner","painting","paper","passenger","passion","patience","payment","penalty","people","percentage","perception","performance","permission","person","personality","perspective","philosophy","phone","photo","physics","piano","pie","pizza","platform","player","poem","poet","poetry","police","politics","pollution","population","possession","possibility","potato","power","preference","preparation","presence","presentation","president","priority","problem","procedure","product","profession","professor","promotion","property","proposal","protection","psychology","quality","quantity","queen","ratio","reaction","reading","reality","reception","recipe","recognition","recommendation","recording","reflection","refrigerator","region","relation","relationship","replacement","republic","reputation","requirement","resolution","resource","response","responsibility","restaurant","revenue","revolution","river","road","role","safety","salad","sample","satisfaction","scene","science","secretary","security","selection","series","session","setting","shirt","shopping","signature","significance","singer","situation","skill","society","software","solution","song","soup","speaker","speech","statement","steak","storage","story","strategy","student","studio","success","suggestion","supermarket","surgery","sympathy","system","teacher","technology","television","temperature","tennis","tension","theory","thing","thought","tongue","tooth","topic","town","tradition","trainer","transportation","truth","two","understanding","unit","university","user","variation","variety","vehicle","version","video","village","volume","warning","weakness","wealth","wedding","week","winner","wood","worker","world","writer","writing","year","youth"],"data":{"count":{"adjectives":245,"nouns":444},"combinations":108780}}

src/lang/no.json

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"adjectives":["aktiv","allsidig","artig","bra","deilig","dyktig","edel","ekstra","elegant","elskverdig","erfaren","erten","evig","fair","fantastisk","fin","fleksibel","flink","fornem","freidig","fri","frisk","glad","glatt","god","grei","habil","halv","heldig","historisk","human","hurtig","iherdig","intelligent","jovial","kanon","klar","klok","komparativ","komplett","konge","konservativ","kontkret","korrekt","koselig","kristen","kul","liberal","lik","litt","lun","masse","mobil","moden","moderne","modig","myk","neste","normal","nyttig","offisiell","ordentlig","original","passe","pen","personlig","presis","proaktiv","proff","pussig","radikal","rask","reaktiv","real","relevant","rett","rettferdig","rik","rolig","rund","schpaa","sikker","smart","snar","snill","sosial","spenstig","sterk","stilig","stille","stor","sunn","tillitsfull","topp","trofast","tung","ung","urban","uselvisk","utrolig","vakker","varm","veldig","vennlig","virtuell","yr"],"nouns":["agurk","antilope","avis","badeand","ball","bank","barista","bergenser","betjent","bie","bil","blokk","boble","bok","bokorm","bolle","breiflabb","brus","bukse","burger","buss","butikk","by","bygd","chat","dagbok","datamaskin","dekan","delegat","disco","domstol","dopplereffekt","drage","dyne","eier","elefant","engel","familie","farmor","fiolin","fisk","fjellheim","fjord","flaske","flyplass","fotball","frykt","fryser","fugl","furu","galakse","gane","garanti","gave","grevling","grotte","hai","harpe","hatt","hest","horde","hund","informasjon","inntekt","jordmor","julefeiring","jurist","jury","juvel","kamerat","kanon","karaffel","kasse","katt","kino","klementin","kollega","komfyr","ku","kunst","liberalist","lunsj","mandolin","meny","moskus","nettside","okse","oldefar","oppfinnelse","optikk","ordstyrer","ovn","park","pasient","person","planet","plante","plommme","porto","pose","prest","pris","reklame","rektor","religion","representant","rev","ring","rot","saks","salamander","satellitt","sebra","seigmann","sekk","selger","singlet","sjokolade","skala","snutt","statsminister","stjerne","stol","storm","strikk","struts","student","substans","svoger","sykepleier","taco","tann","tapir","telefon","tiger","tolk","tornado","trapp","trikk","ulv","underviser","uttale","vask","vertinne","vors"],"data":{"count":{"adjectives":106,"nouns":145},"combinations":15370}}

0 commit comments

Comments
 (0)