summaryrefslogtreecommitdiff
path: root/includes/util/pronouns.inc
diff options
context:
space:
mode:
Diffstat (limited to 'includes/util/pronouns.inc')
-rw-r--r--includes/util/pronouns.inc153
1 files changed, 10 insertions, 143 deletions
diff --git a/includes/util/pronouns.inc b/includes/util/pronouns.inc
index 6ab2487..b7c8dd4 100644
--- a/includes/util/pronouns.inc
+++ b/includes/util/pronouns.inc
@@ -1,149 +1,16 @@
<?php
-$pronounsSets = [
- "pony" => [
- "gender" => "ponygender",
- "gender:fr" => "poneygenre",
- "object" => "pony",
+function getMemberPronouns(?string $pronouns): ?array {
+ return [
+ "gender" => "invalid",
+ "gender:fr" => "invalide",
+ "object" => "this pony",
"person" => "pony",
- "possessive_det" => "pony's",
- "possessive_pro" => "pony's",
- "reflexive" => "ponyself",
- "subjective" => "pony",
- "third" => true,
- "color" => "warning"
- ],
- "she" => [
- "gender" => "female",
- "gender:fr" => "fille",
- "object" => "her",
- "person" => "girl",
- "possessive_det" => "her",
- "possessive_pro" => "hers",
- "reflexive" => "herself",
- "subjective" => "she",
+ "possessive_det" => "this pony's",
+ "possessive_pro" => "this pony's",
+ "reflexive" => "this pony",
+ "subjective" => "this pony",
"third" => true,
"color" => "success"
- ],
- "he" => [
- "gender" => "male",
- "gender:fr" => "garçon",
- "object" => "him",
- "person" => "boy",
- "possessive_det" => "his",
- "possessive_pro" => "his",
- "reflexive" => "himself",
- "subjective" => "he",
- "third" => true,
- "color" => "info"
- ],
- "it" => [
- "gender" => "agender",
- "gender:fr" => "agenre",
- "object" => "it",
- "person" => "person",
- "possessive_det" => "its",
- "possessive_pro" => "its",
- "reflexive" => "itself",
- "subjective" => "it",
- "third" => true,
- "color" => "light"
- ],
- "they" => [
- "gender" => "non binary",
- "gender:fr" => "non binaire",
- "object" => "them",
- "person" => "person",
- "possessive_det" => "their",
- "possessive_pro" => "theirs",
- "reflexive" => "themself",
- "subjective" => "they",
- "third" => false,
- "color" => "primary"
- ]
-];
-
-$pronounGetCount = 0;
-
-$possibilitiesPerSet = [];
-foreach ($pronounsSets as $name => $set) {
- if (!isset($possibilitiesPerSet[$name])) $possibilitiesPerSet[$name] = [];
- $possibilitiesPerSet[$name][] = $name;
-
- foreach ($set as $category => $value) {
- if (is_string($value)) $possibilitiesPerSet[$name][] = $value;
- }
-}
-
-function getSetFromValue(string $value) {
- global $possibilitiesPerSet;
-
- foreach ($possibilitiesPerSet as $name => $set) {
- if (in_array($value, $set)) {
- return $name;
- }
- }
-
- return null;
-}
-
-function getPronounsFromMark(?string $mark = null): array {
- if (!isset($mark) || trim($mark) === "") {
- return ["they"];
- } else {
- $parts = array_unique(array_map(function ($i) {
- return getSetFromValue($i);
- }, explode("/", $mark)));
- return $parts;
- }
-}
-
-function getMemberPronouns(?string $pronouns): ?array {
- global $pronounsSets;
- $list = getPronounsFromMark($pronouns);
- return $pronounsSets[$list[array_rand($list)]] ?? $pronounsSets["she"];
-}
-
-function getGenderFromPronoun(string $pronoun, bool $french = false) {
- global $pronounsSets;
- $set = getPronounsFromMark($pronoun)[0];
-
- if ($french) {
- return ($pronounsSets[$set] ?? $pronounsSets["they"])["gender:fr"];
- } else {
- return ($pronounsSets[$set] ?? $pronounsSets["they"])["gender"];
- }
-}
-
-function pronounInFrench(string $pronoun): string {
- return match ($pronoun) {
- "she" => "elle",
- "her" => "elle",
- "he" => "il",
- "him" => "lui",
- "they" => "iel",
- "them" => "iel",
- "it" => "iel",
- "its" => "iel",
- "pony" => "poney",
- "pony's" => "à poney",
- "ponys" => "à poney",
- default => $pronoun,
- };
-}
-
-function getTooltipsFromMark(string $mark = null, bool $french = false): ?string {
- if (!isset($mark)) {
- return null;
- } else {
- if ($french) {
- return implode("/", array_map(function ($i) {
- return "<span title='" . ucfirst(getGenderFromPronoun($i, true)) . "' data-bs-toggle='tooltip'>" . pronounInFrench($i) . "</span>";
- }, explode("/", $mark)));
- } else {
- return implode("/", array_map(function ($i) {
- return "<span title='" . ucfirst(getGenderFromPronoun($i, false)) . "' data-bs-toggle='tooltip'>" . $i . "</span>";
- }, explode("/", $mark)));
- }
- }
+ ];
} \ No newline at end of file