diff --git a/core/PasswordPhraseGenerator.php b/core/PasswordPhraseGenerator.php new file mode 100644 index 0000000..bdaf141 --- /dev/null +++ b/core/PasswordPhraseGenerator.php @@ -0,0 +1,150 @@ +sub = json_decode(file_get_contents('data/navneord.json')); + $this->ver = json_decode(file_get_contents('data/verber.json')); + $this->adj = json_decode(file_get_contents('data/adj.json')); + $this->ord = [ + "sub" => json_decode(file_get_contents('data/navneord.json')), + "ver" => json_decode(file_get_contents('data/verber.json')), + "adj" => json_decode(file_get_contents('data/adj.json')), + "pro" => ["jeg", "han", "hun", "den", "det", "de", "I", "vi", "du", "De"], + "tid" => ["før", "efter", "imens", "inden"], + "for" => ["over", "under", "ved siden af", "bag", "foran", "overfor"], + ]; + $this->tal = rand(2, 79); + $this->model = rand(0, 1); + $this->end = array(".", "!", "?", "!?", "...", " :-)", " ;-)"); + $this->tegn = $this->end[array_rand($this->end)]; + } + + + /** + * Random sub element + * + * @param array $arr + * @return array + */ + private function _rando($arr) + { + return $arr[array_rand($arr)]; + } + + /** + * Select random word from class + * + * @param string $cla + * @param int $conj + * @return string $word + */ + private function _word($cla, $conj = null) + { + $word = $this->ord[$cla][array_rand($this->ord[$cla])]; //rand(0,count($ord[$cla])); + if ($conj == null) { + return $word; + } else { + return $word[$conj]; + } + } + + /** + * Main model generator + * + * @param integer $conj + * @return string $phrase + */ + function lego($conj = 0) + { + // 0 = ubestemt ental, eks. "en grim tyr" el. "et dumt æg". + // 1 = bestemt ental, eks. "den grimme tyr" el. "det dumme æg" + // 2 = ubestemt flertal, eks. "ægte tedåser" + // 3 = bestemt flertal, eks. "de rådne æbler" + $main = $this->_word("sub"); + $desc = $this->_word("adj"); + if ($main[4] == "t") { + $neutrum = true; + } else { + $neutrum = false; + } + + switch ($conj) { + case 0: + if ($neutrum) { + $phrase = "et " . $this->_word("adj")[1] . " " . $main[0]; + } else { + $phrase = "en " . $this->_word("adj")[0] . " " . $main[0]; + } + break; + case 1: + if ($neutrum) { + $phrase = "det " . $this->_word("adj")[2] . " " . $main[0]; + } else { + $phrase = "den " . $this->_word("adj")[2] . " " . $main[0]; + } + break; + case 2: + $phrase = $this->_word("adj")[2] . " " . $main[2]; + break; + case 3: + $phrase = "de " . $this->_word("adj")[2] . " " . $main[2]; + break; + } + return $phrase; + } + + /** + * Generate phrase + * + * @return string $phrase + */ + public function generate() + { + switch ($this->model) { + case 0: + if ($this->tal > 1) { + $b = $this->lego(2); + } else { + $b = $this->lego(rand(0, 1)); + } + $c = $this->_word("ver", rand(1, 4)); + $d = $this->_word("sub", $this->_rando([1, 3])); + if (rand(0, 1) > 0) { + $which = rand(1, 3); + switch ($which) { + case 1: + $b = mb_strtoupper($b); + break; + case 2: + $c = mb_strtoupper($c); + break; + case 1: + $d = mb_strtoupper($d); + break; + } + } + $result = "{$this->tal} $b $c $d{$this->tegn}"; + break; + case 1: + $a = $this->lego($this->_rando([0, 1, 3])); + $b = $this->_word("ver", rand(1, 4)); + if ($this->tal > 1) { + $c = $this->_word("sub", 2); + } else { + $c = $this->_word("sub", $this->_rando([1, 3])); + } + $result = "$a $b {$this->tal} $c{$this->tegn}"; + break; + } + + return ucwords($result); + } +} diff --git a/core/functions.php b/core/functions.php new file mode 100644 index 0000000..e69de29 diff --git a/index.php b/index.php index 3694bb0..eaf520e 100644 --- a/index.php +++ b/index.php @@ -1,111 +1,48 @@ +generate(); + +?> + +
- - - -