#90 pronunciation

This commit is contained in:
Avris 2020-11-28 16:52:48 +01:00
parent 8cfe62b02a
commit af4024aedf
19 changed files with 398 additions and 79 deletions

View File

@ -7,16 +7,54 @@
<small v-if="link">
(<nuxt-link :to="'/' + pronoun.canonicalName">{{ pronoun.canonicalName }}</nuxt-link>)
</small>
<a v-if="config.pronunciation.enabled && pronounce && pronoun.pronounceable && example.pronounce(pronoun)"
:href="pronunciationLink"
@click.prevent="pronounce">
<Icon v="volume"/>
</a>
</span>
</template>
<script>
import { pronouns } from "~/src/data";
export default {
props: {
example: { required: true },
pronoun: { required: true },
counter: { default: 0 },
link: { type: Boolean },
pronunciation: { type: Boolean },
},
methods: {
pronounce() {
const sound = new Audio(this.pronunciationLink);
sound.play();
}
},
computed: {
pronounBase() {
const name = this.pronoun.name();
for (let key in pronouns) {
if (!pronouns.hasOwnProperty(key)) { continue; }
if (key === name) {
return key;
}
for (let alias of pronouns[key].aliases) {
if (alias === name) {
return key;
}
}
}
return null;
},
pronounToString() {
return this.pronounBase && pronouns[this.pronounBase].equals(this.pronoun) ? this.pronounBase : this.pronoun.toString();
},
pronunciationLink() {
return `/api/pronounce/${this.pronounToString}?example=${encodeURIComponent(this.example.toString())}`;
}
}
}
</script>

23
components/Morpheme.vue Normal file
View File

@ -0,0 +1,23 @@
<template>
<span>
{{prepend}}{{ pronoun.getMorpheme(morpheme, counter) }}{{append}}
<span v-if="config.pronunciation.enabled && pronoun.pronounceable && pronoun.getPronunciation(morpheme, counter)" class="text-muted">
/{{prependPr}}{{pronoun.getPronunciation(morpheme, counter)}}{{appendPr}}/
</span>
</span>
</template>
<script>
export default {
props: {
pronoun: { required: true },
morpheme: { required: true },
counter: { default: 0 },
prepend: { default: '' },
prependPr: { default: '' },
append: { default: '' },
appendPr: { default: '' },
}
}
</script>

View File

@ -36,6 +36,12 @@ pronouns:
template: 'Open one of the examples and simply replace the emoji in the URL with your own.'
others: 'Other pronouns'
pronunciation:
enabled: true
language: 'en-GB'
voice: 'Emma'
engine: 'neural'
sources:
enabled: true
route: 'sources'

View File

@ -2,7 +2,7 @@
<section>
<h2 class="h4">
<Icon v="spell-check"/>
Odmiana:
<T>pronouns.grammarTable</T>:
</h2>
<div class="table-responsive">
@ -18,11 +18,11 @@
</thead>
<tbody>
<tr>
<td>{{ selectedPronoun.getMorpheme('pronoun_subject', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_object', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('possessive_determiner', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('possessive_pronoun', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('reflexive', counter) }}</td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_subject" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_object" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="possessive_determiner" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="possessive_pronoun" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="reflexive" :counter="counter"/></td>
</tr>
</tbody>
</table>
@ -31,7 +31,9 @@
</template>
<script>
import Morpheme from "../../../components/Morpheme";
export default {
components: {Morpheme},
props: {
selectedPronoun: { required: true },
counter: { required: true },

View File

@ -1,19 +1,19 @@
key description normative pronoun_subject pronoun_object possessive_determiner possessive_pronoun reflexive plural pluralHonorific history sources
he,he/him Masculine TRUE he him his his himself FALSE FALSE
she,she/her Feminine TRUE she her her hers herself FALSE FALSE
they,they/them Singular “they” TRUE they them their theirs themselves TRUE TRUE Singular “they” has been used in English to describe an unspecified person since the late 1300s (it's even older than singular “you”!). Nowadays, it's the most popular choice among people who prefer gender neutral forms. It starts being {https://www.merriam-webster.com/words-at-play/singular-nonbinary-they=accepted by dictionaries} too.
it,it/its Personal “it” TRUE it it its its itself FALSE FALSE Although “it” is normally used for objects, not people, some actually do like being called that way. If someone wants you to call it “it”, it's not offensive it's actually respectful.
one,one/one's Specific “one” TRUE one one one's one's oneself FALSE FALSE “One” is used in formal English when talking about a general or a hypothetical person. Recently people started using “one” also as their personal pronoun.
e,e/em Neopronoun “e” FALSE e em es ems emself FALSE FALSE First created in 1890 by James Rogers based on {/he=he} and {/them=them} pronoun sets. Since then multiple versions were created, differing in declension and capitalisation.
ae,ae/aer Neopronoun “ae” / “æ” FALSE ae aer aer aers aerself FALSE FALSE Created by David Lindsay for a 1920 novel <em>A Voyage to Arcturus</em>, where it's used by an alien, third-sex species.
thon,thon/thons Neopronoun “thon” FALSE thon thon thons thon's thonself FALSE FALSE Created by Charles Crozat Converse in 1858, thon/thons/thonself is one of the first known examples of creating a gender neutral pronoun. “Thon” is a contraction of “that one”.
co,co/cos Neopronoun “co” FALSE co co cos co's coself FALSE FALSE Created by Mary Orovan in 1970, derived from the Indo-European _*ko_.
ve,ve/ver Neopronoun “ve” FALSE ve ver vis vers verself FALSE FALSE Used eg. by Greg Egan in <em>Distress</em> (1995) and <em>Diaspora</em> (1998), and by Keri Hulme in <em>The Bone People</em> (1984).
vi,vi/vir Neopronoun “vi” FALSE vi vir vis virs virself FALSE FALSE Used eg. by Greg Egan in <em>Distress</em> (1995) and <em>Diaspora</em> (1998), and by Keri Hulme in <em>The Bone People</em> (1984).
xe,xe/xem Neopronoun “xe” FALSE xe xem xyr xyrs xyrself FALSE FALSE Coined by Don Rickter in an issue of <em>Unitarian Universalist</em> in 1973.
ey,ey/em Elverson pronouns FALSE ey em eir eirs emselves TRUE TRUE Coined by Christine M. Elverson in 1975 for a contest to create an alternative to the singular {/they=they}. Those forms are created by dropping “th” from “they”.
per,per/per Person pronouns FALSE per per per pers perself FALSE FALSE Coined by John Clark in an issue of the <em>Newsletter of the American Anthropological Association</em> in 1972, derived from the word “person”.
hu,hu/hum Humanist pronouns FALSE hu hum hus hus huself FALSE FALSE Coined by Sasha Newborn in 1982, based on the word “human”.
e/em/eir Spivak pronouns FALSE e em eir eirs emself FALSE FALSE Coined by Michael Spivak in 1990 for his manual <em>The Joy of TeX</em> to avoid gendering people in the examples.
ze,ze/zir Neopronoun “ze” FALSE ze zir zir zirs zirself FALSE FALSE Based on the German plural 3rd person pronoun <em>sie</em>.
fae,fae/faer Neopronoun “fae” FALSE fae faer faer faers faerself FALSE FALSE Created in 2014 by Tumblr user shadaras.
key description normative pronoun_subject pronoun_object possessive_determiner possessive_pronoun reflexive plural pluralHonorific pronounceable history sources
he,he/him Masculine TRUE he him his his himself FALSE FALSE TRUE
she,she/her Feminine TRUE she her her hers herself FALSE FALSE TRUE
they,they/them Singular “they” TRUE they them their theirs themselves TRUE TRUE TRUE Singular “they” has been used in English to describe an unspecified person since the late 1300s (it's even older than singular “you”!). Nowadays, it's the most popular choice among people who prefer gender neutral forms. It starts being {https://www.merriam-webster.com/words-at-play/singular-nonbinary-they=accepted by dictionaries} too.
it,it/its Personal “it” TRUE it it its its itself FALSE FALSE TRUE Although “it” is normally used for objects, not people, some actually do like being called that way. If someone wants you to call it “it”, it's not offensive it's actually respectful.
one,one/one's Specific “one” TRUE one one one's one's oneself FALSE FALSE TRUE “One” is used in formal English when talking about a general or a hypothetical person. Recently people started using “one” also as their personal pronoun.
e,e/em Neopronoun “e” FALSE e|i em|ɛm es|iz ems|ɛmz emself|ɛmsɛlf FALSE FALSE TRUE First created in 1890 by James Rogers based on {/he=he} and {/them=them} pronoun sets. Since then multiple versions were created, differing in declension and capitalisation.
ae,æ,ae/aer,æ/ær Neopronoun “ae” / “æ” FALSE ae|ei aer|ɛɹ aer|ɛɹ aers|ɛɹz aerself|ɛɹsɛlf FALSE FALSE TRUE Created by David Lindsay for a 1920 novel <em>A Voyage to Arcturus</em>, where it's used by an alien, third-sex species.
thon,thon/thons Neopronoun “thon” FALSE thonɑn thon|ðɑn thonsɑnz thon'sɑnz thonselfɑnsɛlf FALSE TRUE FALSE Created by Charles Crozat Converse in 1858, thon/thons/thonself is one of the first known examples of creating a gender neutral pronoun. “Thon” is a contraction of “that one”.
co,co/cos Neopronoun “co” FALSE co|ko co|ko cos|koz co's|koz coself|kosɛlf FALSE FALSE TRUE Created by Mary Orovan in 1970, derived from the Indo-European _*ko_.
ve,ve/ver Neopronoun “ve” FALSE ve|vi ver|vəɹ vis|viz vers|vəɹz verself|vəɹsɛlf FALSE FALSE TRUE Used eg. by Greg Egan in <em>Distress</em> (1995) and <em>Diaspora</em> (1998), and by Keri Hulme in <em>The Bone People</em> (1984).
vi,vi/vir Neopronoun “vi” FALSE vi|vi vir|viɹ vis|viz virs|viɹz virself|viɹsɛlf FALSE FALSE TRUE Used eg. by Greg Egan in <em>Distress</em> (1995) and <em>Diaspora</em> (1998), and by Keri Hulme in <em>The Bone People</em> (1984).
xe,xe/xem Neopronoun “xe” FALSE xe|zi xem|zɛm xyr|ziɹ xyrs|ziɹz xyrself|zɛmsɛlf FALSE FALSE TRUE Coined by Don Rickter in an issue of <em>Unitarian Universalist</em> in 1973.
ey,ey/em Elverson pronouns FALSE ey|eɪ em|ɛm eir|ɛɹ eirs|ɛɹz emselves|ɛmsɛlf TRUE TRUE TRUE Coined by Christine M. Elverson in 1975 for a contest to create an alternative to the singular {/they=they}. Those forms are created by dropping “th” from “they”.
per,per/per Person pronouns FALSE per|pəɹ per|pəɹ per|pəɹ pers|pəɹz perself|pəɹsɛlf FALSE FALSE TRUE Coined by John Clark in an issue of the <em>Newsletter of the American Anthropological Association</em> in 1972, derived from the word “person”.
hu,hu/hum Humanist pronouns FALSE hu|hju hum|hjum hus|hjuz hus|hjuz huself|hjusɛlf FALSE FALSE TRUE Coined by Sasha Newborn in 1982, based on the word “human”.
e/em/eir Spivak pronouns FALSE e|i em|ɛm eir|ɛɹ eirs|ɛɹz emself|ɛmsɛlf FALSE FALSE TRUE Coined by Michael Spivak in 1990 for his manual <em>The Joy of TeX</em> to avoid gendering people in the examples.
ze,ze/zir Neopronoun “ze” FALSE ze|zi zir|zəɹ zir|zəɹ zirs|zəɹz zirself|zəɹsɛlf FALSE FALSE TRUE Based on the German plural 3rd person pronoun <em>sie</em>.
fae,fæ,fae/faer,fæ/fær Neopronoun “fae” FALSE fae|feɪ faer|fɛɹ faer|fɛɹ faers|fɛɹz faerself|fɛɹsɛlf FALSE FALSE TRUE Created in 2014 by Tumblr user shadaras.

Can't render this file because it has a wrong number of fields in line 2.

View File

@ -38,6 +38,7 @@ home:
header2: 'Generate a link'
base: 'Based on'
alt: 'You can also enter interchangeable forms in each field separately, eg. <code>him&her</code> = „him” or „her”.'
pronunciation: 'You can also specify the pronunciation after a pipe character, using IPA, eg. <code>faerself|fɛɹsɛlf</code> = „faerself” pronounced as /fɛɹsɛlf/.'
whatisit: 'What''s the deal with pronouns?'
pronouns:
@ -58,6 +59,7 @@ pronouns:
others: 'Other forms'
othersRaw: 'other'
or: 'or'
grammarTable: 'Table'
sources:
header: 'Sources'

View File

@ -16,6 +16,12 @@ pronouns:
null: false
others: 'Inne formy'
pronunciation:
enabled: true
language: 'pl-PL'
voice: 'Ewa'
engine: 'standard'
sources:
enabled: true
route: 'korpus'

View File

@ -19,13 +19,12 @@
</thead>
<tbody>
<tr>
<td>{{ selectedPronoun.getMorpheme('pronoun_n', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_g', counter) }} / {{
selectedPronoun.getMorpheme('pronoun_g_acc', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_d', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_a', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_i', counter) }}</td>
<td>{{ selectedPronoun.getMorpheme('pronoun_l', counter) }}</td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_n" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_g" :counter="counter"/> / <Morpheme :pronoun="selectedPronoun" morpheme="pronoun_g_acc" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_d" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_a" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_i" :counter="counter"/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="pronoun_l" :counter="counter"/></td>
</tr>
</tbody>
</table>
@ -43,10 +42,22 @@
</thead>
<tbody>
<tr>
<td>-{{ selectedPronoun.getMorpheme('verb_middle_inter', counter) }}{{selectedPronoun.isPlural(counter) ? 'śmy' : 'm'}}</td>
<td>-{{ selectedPronoun.getMorpheme('verb_middle_inter', counter) }}{{selectedPronoun.isPlural(counter) ? 'ście' : 'ś'}}</td>
<td>-{{ selectedPronoun.getMorpheme('verb_end_about', counter) }}</td>
<td>-{{ selectedPronoun.getMorpheme('adjective_n', counter) }}</td>
<td>
<Morpheme :pronoun="selectedPronoun" morpheme="verb_middle_inter" :counter="counter"
prepend=""
:append="selectedPronoun.isPlural(counter) ? 'śmy' : 'm'"
:appendPr="selectedPronoun.isPlural(counter) ? 'ɕmɨ' : 'm'"
/>
</td>
<td>
<Morpheme :pronoun="selectedPronoun" morpheme="verb_middle_inter" :counter="counter"
prepend=""
:append="selectedPronoun.isPlural(counter) ? 'ście' : 'ś'"
:appendPr="selectedPronoun.isPlural(counter) ? 'ɕʨ̑ɛ' : 'ɕ'"
/>
</td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="verb_end_about" :counter="counter" prepend=""/></td>
<td><Morpheme :pronoun="selectedPronoun" morpheme="adjective_n" :counter="counter" prepend=""/></td>
</tr>
</tbody>
</table>

View File

@ -1,26 +1,26 @@
key description normative pronoun_n pronoun_g pronoun_g_acc pronoun_d pronoun_a pronoun_i pronoun_l pronoun_all adjective_n adjective_ll adjective_middle verb_end_inter verb_end_about verb_middle_inter verb_middle_about verb_nasal verb_go verb_o honorific plural pluralHonorific history sources
on,on/jego Rodzaj męski TRUE on jego niego mu go nim nim y e e ą szedł ó pan FALSE FALSE natGeo,genderqueer,confirmatio,perfekcyjna,silaNizsza,lewaReka,zapachKosmosu
ona,ona/jej Rodzaj żeński TRUE ona jej niej jej ją nią niej a a a a a ę szł o pani FALSE FALSE margotWywiad,margot,zabSpraw,zabMiecz,smoczaPerla,zapachKosmosu
ono/jego,ono Rodzaj nijaki TRUE ono jego niego mu je nim nim e o o o o ę szł o pań FALSE FALSE "Formy „byłom”, „zrobiłoś”, itp. są {https://rjp.pan.pl/index.php?option=com_content&view=article&id=317:byom-byo&catid=44&Itemid=208=wg RJP} poprawne gramatycznie.@Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom,starTrek,kazmierczak2,milo,hen,fakty,milo2,vulva,kacenCallender,confirmatio,niepelnia,dozywocie,lichoNiebozatko,lichoAniol,lichoLato,silaNizsza,siewca,smoczaPerla,maska,ekonomiaNiesam,rzekaBogow,fluff,doBlyskPod,siedemKapit,zaczytana,listopadBez,gszes,ofiara,uratowacKotka,nieUmrzećNijakie,nordea,zabieranieMiejscaNeutr,zabieranieGłosu
ono/jej Rodzaj nijaki z formami żeńskimi zamiast męskich FALSE ono jej niej jej je nią niej e o o o o ę szł o pań FALSE FALSE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jejgo Rodzaj nijaki z formami łączonymi FALSE ono jejgo niejgo jejmu jejgo niąnim niejnim e o o o o ę szł o pań FALSE FALSE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jeno Rodzaj nijaki z elementami dukaizmów FALSE ono jeno nieno nu no niemu niem e o u o o ę szł o pań FALSE FALSE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jenu Rodzaj nijaki z dukaizmami zamiast form męskich FALSE ono jenu nienu wu nu num num e o o o o ę szł o pań FALSE FALSE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
onu,onu/jenu Rodzaj postpłciowy, dukaizmy FALSE onu jenu nienu wu nu num num u u u u u ę szł o panu FALSE FALSE "Formy te zostały stworzone przez {https://pl.wikipedia.org/wiki/Jacek_Dukaj=Jacka Dukaja} do książki {https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskonałość=„Perfekcyjna niedoskonałość”}. Używają jej tam istoty post-ludzkie (phoebe), które nie mają określonej płci. Od nazwiska autora te formy gramatyczne są nazywane „dukaizmami”.@Odmiana dukaizmów w liczbie mnogiej dostępna jest {/ony=tutaj}.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." queerZaimki,bogiperson,oTryptyku,loe,opowiadaniaOrg,samounicestwienie,lightBring,liniaOporu,liniaOporuMix,perfekcyjna,zapachKosmosu,smoczeDzieko,interwencja,nieUmrzećDukaizmy,apocalypseEnby,opydo,trzyWiersze,fantastyczneLesbijki,bugsnax
onu/jejo Dukaizmy z łączonymi formami męskimi i żeńskimi FALSE onu jejo jejo jeju jegą nimą nimej u u u u u ę szł o panu FALSE FALSE "Formy te wymyśliłu Len Król.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}."
oni,oni/ich Formy męskoosobowe liczby mnogiej TRUE oni ich nich im ich nimi nich cy i l e li li eli eli ęli szli o państwo TRUE TRUE Druga osoba liczby mnogiej może być w normatywnej polszczyźnie używana jako wyraz szacunku (zob. {https://pl.wikipedia.org/wiki/Per_wy=„Per wy”}, {http://www.dialektologia.uw.edu.pl/index.php?l1=leksykon&lid=653=„Pluralis maiestaticus”}) degrassi,madagarskar,boika,komiksKlamstwo,starTrekAntyradio,ciekawszaWersja,skrzydla,obcaByla,nawrockaBiogram,odzyskiwanieA,cyborgizacja
one,one/ich Formy niemęskoosobowe liczby mnogiej TRUE one ich nich im je nimi nich tkie e ł o ły ły ały ały ęły szły o państwo TRUE TRUE oneDay,archPowt,protestPoezja
oni/e,oni/e/ich Formy liczby mnogiej z ukośnikiem TRUE oni/e ich nich im ich/je nimi nich cy/tkie "" li/łe eni/one li/ły li/ły eli/ały eli/ały ęli/eły szli/szły o państwo TRUE TRUE loveGoes
ona/ich Nijakie formy mnogie z zaimkiem „ona” FALSE ona ich nich im je nimi nich tkie e ł o ło ły ało ały ęło szło o państwo TRUE TRUE Zaimek „ona” zapożyczony z języka chorwackiego, gdzie jest nienacechowaną płciowo formą liczby mnogiej. Dość zresztą intuicyjny w polszczyźnie: jak <em>to okno → te okna</em>, tak to <em>ono → te ona</em>).@Odmiana rodzaju nijakiego w liczbie pojedynczej dostępna jest {/ono=tutaj}.
ony,ony/ich Formy mnogie dukaizmów z zaimkiem „ony” FALSE ony ich nich im ny nimi nich tki e ł o łu ły ału ały ęłu szłu o państwo TRUE TRUE "Zaimek „ony” to po czesku liczba mnoga dla rodzaju żeńskiego i męskonieżywotnego.@Formy czasowników z „u” zostały stworzone przez {https://pl.wikipedia.org/wiki/Jacek_Dukaj=Jacka Dukaja} do książki {https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskonałość=„Perfekcyjna niedoskonałość”}. Używają jej tam istoty post-ludzkie (phoebe), które nie mają określonej płci. Od nazwiska autora te formy gramatyczne są nazywane „dukaizmami”.@Odmiana dukaizmów w liczbie pojedynczej dostępna jest {/onu=tutaj}.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." liniaOporuPlural
onie,onie/ich Neologiczne formy mnogie z zaimkiem „onie” FALSE onie ich nich im je niemi nich tkie e ł o łe ły ałe ałe ęłe szłe o państwo TRUE TRUE
onæ,onæ/jæ Formy z „ae” lub ligaturą „æ” FALSE onæ jæ næ jæ jæ næm næm æ æ æ æ æ ą szł o panæ FALSE FALSE nieOnaNieOn
on/a,on/a/jego/jej Formy z ukośnikiem TRUE on/a jego/jej niego/niej mu/jej go/ją nim/ą nim/ej y/a /a /a e/a e/a ą szł o pan/i FALSE FALSE polskieStonewall,swietaWojna,bex,8yoDragQueen,loveGoes2,fantasyAward,plagaMieczy
onx,onx/jex Formy z iksem FALSE onx jex nix jex jex nix nix x x x x x ę szł o panx FALSE FALSE reyDomurat
on_,on_/je_ Formy z podkreślnikiem FALSE on_ je_ ni_ je_ je_ ni_ ni_ _ _ _ _ _ _ sz_ł _ pan_ FALSE FALSE kazmierczak3,janelleMonae,angielskieImie,monstra,luBart2,teczuj,zabieranieMiejscaPodkr
on*,on*/je* Formy z gwiazdką FALSE on* je* ni* je* je* ni* ni* * * * * * * sz*ł * pan* FALSE FALSE mnwInsta
onø,onø/jeø Formy z samogłoską nosową FALSE onø jenø nienø nø nø nøm nøm ø ø ø ø ø ę szł o panø FALSE FALSE "Formy te używają samogłoski nosowej {https://pl.wikipedia.org/wiki/ø=„ø”}, która występowała w pisowni polszczyzny od XII do XV wieku, i została zastąpiona przez „ą” i „ę”. Miała zatem zastosowanie dosyć zbliżone do obecnego w powyższych formach."
vono,vono/vego Rodzaj nijaki z neozaimkami vono/vego FALSE vono vego viego vu vo vim vim e o o o o ę szł o pań FALSE FALSE Forma została stworzona przez tłumacza Pawła Wieczorka dla oddania stworzonych przez Grega Egana form ve/vir. stanWyczerpania
ne,ne/nego Dukaizmy z neozaimkami ne/nego FALSE ne nego nia nemu ne nym nym u u u u u u szł o panu FALSE FALSE "Formy stworzone przez {http://transpomoc.pl/viewtopic.php?p=49434&highlight=#49434=Freję Draco} na bazie dukaizmów.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." interwencja
ony/jegy Neozaimki ony/jegy FALSE ony jegy nien nu gy niemy niem y y y y o ą szł ó pany FALSE FALSE "Formy stworzone przez {https://twitter.com/doblinka/status/1310940748309766145=&#64;doblinka}."
ono/eno Neozaimki ono/eno FALSE ono eno eno ne no em em u o u o o ę szł o pan FALSE FALSE "Formy stworzone przez {https://twitter.com/NicoBillie/status/1312894040061497346=&#64;NicoBillie}."
key description normative pronoun_n pronoun_g pronoun_g_acc pronoun_d pronoun_a pronoun_i pronoun_l pronoun_all adjective_n adjective_ll adjective_middle verb_end_inter verb_end_about verb_middle_inter verb_middle_about verb_nasal verb_go verb_o honorific plural pluralHonorific pronounceable history sources
on,on/jego Rodzaj męski TRUE on jego niego mu go nim nim y e e ą szedł ó pan FALSE FALSE TRUE natGeo,genderqueer,confirmatio,perfekcyjna,silaNizsza,lewaReka,zapachKosmosu
ona,ona/jej Rodzaj żeński TRUE ona jej niej jej ją nią niej a a a a a ę szł o pani FALSE FALSE TRUE margotWywiad,margot,zabSpraw,zabMiecz,smoczaPerla,zapachKosmosu
ono/jego,ono Rodzaj nijaki TRUE ono jego niego mu je nim nim e o o o o ę szł o pań FALSE FALSE TRUE "Formy „byłom”, „zrobiłoś”, itp. są {https://rjp.pan.pl/index.php?option=com_content&view=article&id=317:byom-byo&catid=44&Itemid=208=wg RJP} poprawne gramatycznie.@Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom,starTrek,kazmierczak2,milo,hen,fakty,milo2,vulva,kacenCallender,confirmatio,niepelnia,dozywocie,lichoNiebozatko,lichoAniol,lichoLato,silaNizsza,siewca,smoczaPerla,maska,ekonomiaNiesam,rzekaBogow,fluff,doBlyskPod,siedemKapit,zaczytana,listopadBez,gszes,ofiara,uratowacKotka,nieUmrzećNijakie,nordea,zabieranieMiejscaNeutr,zabieranieGłosu
ono/jej Rodzaj nijaki z formami żeńskimi zamiast męskich FALSE ono jej niej jej je nią niej e o o o o ę szł o pań FALSE FALSE TRUE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jejgo Rodzaj nijaki z formami łączonymi FALSE ono jejgo niejgo jejmu jejgo niąnim niejnim e o o o o ę szł o pań FALSE FALSE TRUE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jeno Rodzaj nijaki z elementami dukaizmów FALSE ono jeno nieno nu no niemu niem e o u o o ę szł o pań FALSE FALSE TRUE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
ono/jenu Rodzaj nijaki z dukaizmami zamiast form męskich FALSE ono jenu nienu wu nu num num e o o o o ę szł o pań FALSE FALSE TRUE Normatywna odmiana rodzaju nijakiego w liczbie mnogiej dostępna jest {/one=tutaj}, a neologiczna {/ona/ich=tutaj}.@"Rzeczowniki zgodne rodzajowo z rodzajem nijakim to {/słownik#neutratywy=neutratywy}." rjpBylom
onu,onu/jenu Rodzaj postpłciowy, dukaizmy FALSE onu jenu nienu wu nu num num u u u u u ę szł o panu FALSE FALSE TRUE "Formy te zostały stworzone przez {https://pl.wikipedia.org/wiki/Jacek_Dukaj=Jacka Dukaja} do książki {https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskonałość=„Perfekcyjna niedoskonałość”}. Używają jej tam istoty post-ludzkie (phoebe), które nie mają określonej płci. Od nazwiska autora te formy gramatyczne są nazywane „dukaizmami”.@Odmiana dukaizmów w liczbie mnogiej dostępna jest {/ony=tutaj}.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." queerZaimki,bogiperson,oTryptyku,loe,opowiadaniaOrg,samounicestwienie,lightBring,liniaOporu,liniaOporuMix,perfekcyjna,zapachKosmosu,smoczeDzieko,interwencja,nieUmrzećDukaizmy,apocalypseEnby,opydo,trzyWiersze,fantastyczneLesbijki,bugsnax
onu/jejo Dukaizmy z łączonymi formami męskimi i żeńskimi FALSE onu jejo jejo jeju jegą nimą nimej u u u u u ę szł o panu FALSE FALSE TRUE "Formy te wymyśliłu Len Król.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}."
oni,oni/ich Formy męskoosobowe liczby mnogiej TRUE oni ich nich im ich nimi nich cy i l e li li eli eli ęli szli o państwo TRUE TRUE TRUE Druga osoba liczby mnogiej może być w normatywnej polszczyźnie używana jako wyraz szacunku (zob. {https://pl.wikipedia.org/wiki/Per_wy=„Per wy”}, {http://www.dialektologia.uw.edu.pl/index.php?l1=leksykon&lid=653=„Pluralis maiestaticus”}) degrassi,madagarskar,boika,komiksKlamstwo,starTrekAntyradio,ciekawszaWersja,skrzydla,obcaByla,nawrockaBiogram,odzyskiwanieA,cyborgizacja
one,one/ich Formy niemęskoosobowe liczby mnogiej TRUE one ich nich im je nimi nich tkie e ł o ły ły ały ały ęły szły o państwo TRUE TRUE TRUE oneDay,archPowt,protestPoezja
oni/e,oni/e/ich Formy liczby mnogiej z ukośnikiem TRUE oni/e ich nich im ich/je nimi nich cy/tkie "" li/łe eni/one li/ły li/ły eli/ały eli/ały ęli/eły szli/szły o państwo TRUE TRUE FALSE loveGoes
ona/ich Nijakie formy mnogie z zaimkiem „ona” FALSE ona ich nich im je nimi nich tkie e ł o ło ły ało ały ęło szło o państwo TRUE TRUE TRUE Zaimek „ona” zapożyczony z języka chorwackiego, gdzie jest nienacechowaną płciowo formą liczby mnogiej. Dość zresztą intuicyjny w polszczyźnie: jak <em>to okno → te okna</em>, tak to <em>ono → te ona</em>).@Odmiana rodzaju nijakiego w liczbie pojedynczej dostępna jest {/ono=tutaj}.
ony,ony/ich Formy mnogie dukaizmów z zaimkiem „ony” FALSE ony ich nich im ny nimi nich tki e ł o łu ły ału ały ęłu szłu o państwo TRUE TRUE TRUE "Zaimek „ony” to po czesku liczba mnoga dla rodzaju żeńskiego i męskonieżywotnego.@Formy czasowników z „u” zostały stworzone przez {https://pl.wikipedia.org/wiki/Jacek_Dukaj=Jacka Dukaja} do książki {https://pl.wikipedia.org/wiki/Perfekcyjna_niedoskonałość=„Perfekcyjna niedoskonałość”}. Używają jej tam istoty post-ludzkie (phoebe), które nie mają określonej płci. Od nazwiska autora te formy gramatyczne są nazywane „dukaizmami”.@Odmiana dukaizmów w liczbie pojedynczej dostępna jest {/onu=tutaj}.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." liniaOporuPlural
onie,onie/ich Neologiczne formy mnogie z zaimkiem „onie” FALSE onie ich nich im je niemi nich tkie e ł o łe ły ałe ałe ęłe szłe o państwo TRUE TRUE TRUE
onæ,onæ/jæ Formy z „ae” lub ligaturą „æ” FALSE onæ|ˈɔ̃næ̯|jæ̯|ɲæ̯|jæ̯|jæ̯ næm|ɲæm næm|ɲæm æ|æ̯ æ|æ̯ æ|æ̯ æ|æ̯ æ|æ̯ ą szł o panæ|panæ̯ FALSE FALSE TRUE nieOnaNieOn
on/a,on/a/jego/jej Formy z ukośnikiem TRUE on/a jego/jej niego/niej mu/jej go/ją nim/ą nim/ej y/a /a /a e/a e/a ą szł o pan/i FALSE FALSE FALSE polskieStonewall,swietaWojna,bex,8yoDragQueen,loveGoes2,fantasyAward,plagaMieczy
onx,onx/jex Formy z iksem FALSE onx jex nix jex jex nix nix x x x x x ę szł o panx FALSE FALSE FALSE reyDomurat
on_,on_/je_ Formy z podkreślnikiem FALSE on_ je_ ni_ je_ je_ ni_ ni_ _ _ _ _ _ _ sz_ł _ pan_ FALSE FALSE FALSE kazmierczak3,janelleMonae,angielskieImie,monstra,luBart2,teczuj,zabieranieMiejscaPodkr
on*,on*/je* Formy z gwiazdką FALSE on* je* ni* je* je* ni* ni* * * * * * * sz*ł * pan* FALSE FALSE FALSE mnwInsta
onø,onø/jenø Formy z samogłoską nosową FALSE onø|ˈɔ̃nø jenø|jɛ̃nø nienø|ɲɛnø|nø|nø nøm|nøm nøm|nøm ø ø|ø ø ø ø|ø ę szł o panø|panø FALSE FALSE TRUE "Formy te używają samogłoski nosowej {https://pl.wikipedia.org/wiki/ø=„ø”}, która występowała w pisowni polszczyzny od XII do XV wieku, i została zastąpiona przez „ą” i „ę”. Miała zatem zastosowanie dosyć zbliżone do obecnego w powyższych formach."
vono,vono/vego Rodzaj nijaki z neozaimkami vono/vego FALSE vono vego viego vu vo vim vim e o o o o ę szł o pań FALSE FALSE TRUE Forma została stworzona przez tłumacza Pawła Wieczorka dla oddania stworzonych przez Grega Egana form ve/vir. stanWyczerpania
ne,ne/nego Dukaizmy z neozaimkami ne/nego FALSE ne nego nia nemu ne nym nym u u u u u u szł o panu FALSE FALSE TRUE "Formy stworzone przez {http://transpomoc.pl/viewtopic.php?p=49434&highlight=#49434=Freję Draco} na bazie dukaizmów.@Rzeczowniki zgodne z rodzajem postpłciowym to {/słownik#dukatywy=dukatywy}." interwencja
ony/jegy Neozaimki ony/jegy FALSE ony jegy nien nu gy niemy niem y y y y o ą szł ó pany FALSE FALSE TRUE "Formy stworzone przez {https://twitter.com/doblinka/status/1310940748309766145=&#64;doblinka}."
ono/eno Neozaimki ono/eno FALSE ono eno eno ne no em em u o u o o ę szł o pan FALSE FALSE TRUE "Formy stworzone przez {https://twitter.com/NicoBillie/status/1312894040061497346=&#64;NicoBillie}."

Can't render this file because it contains an unexpected character in line 5 and column 253.

View File

@ -50,6 +50,7 @@ home:
header2: 'Wygeneruj link'
base: 'Na podstawie'
alt: 'Możesz tu również wpisać formy wymienne w każdym polu z osobna, np. <code>jego&jej</code> = „jego” lub „jej”.'
pronunciation: 'Możesz tu również podać wymowę używając pionowej kreski i IPA, np. <code>onø|ˈɔ̃nø</code> = „onø” z wymową /ˈɔ̃nø/.'
whatisit: 'O co chodzi w tej stronie?'
pronouns:
@ -70,6 +71,7 @@ pronouns:
others: 'Inne formy'
othersRaw: 'inne'
or: 'lub'
grammarTable: 'Odmiana'
sources:
header: 'Teksty kultury'

View File

@ -13,6 +13,7 @@
"@nuxtjs/axios": "^5.12.0",
"@nuxtjs/pwa": "^3.0.0-beta.20",
"@nuxtjs/redirect-module": "^0.3.1",
"aws-sdk": "^2.799.0",
"body-parser": "^1.19.0",
"canvas": "^2.6.1",
"cookie-parser": "^1.4.5",
@ -28,6 +29,7 @@
"mailer": "^0.6.7",
"markdown-loader": "^6.0.0",
"nuxt": "^2.14.7",
"sha1": "^1.1.1",
"sql-template-strings": "^2.2.2",
"sqlite": "^4.0.12",
"sqlite3": "^5.0.0",

View File

@ -148,7 +148,7 @@
<input v-if="part.variable" v-model="selectedPronoun.morphemes[part.str]"
:class="['form-control form-input p-0', {'active': selectedMorpheme === part.str}]"
:size="selectedPronoun.morphemes[part.str] ? selectedPronoun.morphemes[part.str].length : 0"
maxlength="12"
maxlength="24"
@focus="selectedMorpheme = part.str"
@blur="selectedMorpheme = ''"
/>
@ -171,6 +171,10 @@
<Icon v="info-circle"/>
<T>home.generator.alt</T>
</p>
<p class="small" v-if="config.pronunciation.enabled">
<Icon v="info-circle"/>
<T>home.generator.pronunciation</T>
</p>
</div>
<div class="card-footer" v-if="link">
<LinkInput :link="link"/>

View File

@ -42,7 +42,7 @@
<ul>
<li v-for="example in examples" class="my-1">
<Example :example="example" :pronoun="selectedPronoun" :counter="counter"/>
<Example :example="example" :pronoun="selectedPronoun" :counter="counter" pronunciation/>
</li>
</ul>
</section>

10
server/aws.js Normal file
View File

@ -0,0 +1,10 @@
export default {
region: process.env.AWS_REGION,
credentials: {
accessKeyId: process.env.AWS_KEY,
secretAccessKey: process.env.AWS_SECRET,
},
params: {
Bucket: process.env.AWS_S3_BUCKET,
},
};

View File

@ -8,6 +8,8 @@ import router from "./routes/user";
import { loadSuml } from './loader';
import {buildLocaleList} from "../src/helpers";
global.config = loadSuml('config');
const app = express()
app.use(express.json());
@ -21,7 +23,7 @@ app.use(session({
}));
app.use(async function (req, res, next) {
req.config = loadSuml('config');
req.config = global.config;
req.locales = buildLocaleList();
req.rawUser = authenticate(req);
req.user = req.rawUser && req.rawUser.authenticated ? req.rawUser : null;
@ -41,6 +43,7 @@ app.use(require('./routes/admin').default);
app.use(require('./routes/pronouns').default);
app.use(require('./routes/sources').default);
app.use(require('./routes/nouns').default);
app.use(require('./routes/pronounce').default);
export default {
path: '/api',

View File

@ -0,0 +1,65 @@
import { Router } from 'express';
import { loadTsv } from '../loader';
import {buildPronoun, parsePronouns} from "../../src/buildPronoun";
import {Example} from "../../src/classes";
import sha1 from 'sha1';
import awsConfig from '../aws';
import Polly from 'aws-sdk/clients/polly';
import S3 from 'aws-sdk/clients/s3';
const router = Router();
router.get('/pronounce/:pronoun*', async (req, res) => {
const pronounString = req.params.pronoun + req.params[0];
const pronoun = buildPronoun(
parsePronouns(loadTsv('pronouns/pronouns')),
pronounString,
);
if (!pronoun || !req.query.example) {
return res.status(404).json({error: 'Not found'});
}
let [singular, plural, isHonorific] = req.query.example.split('|');
const example = new Example(
Example.parse(singular),
Example.parse(plural || singular),
!!isHonorific,
)
const text = example.pronounce(pronoun);
if (!text || text.length > 256) {
return res.status(404).json({error: 'Not found'});
}
const s3 = new S3(awsConfig);
const polly = new Polly(awsConfig);
const key = `pronunciation/${req.config.locale}/${pronounString}/${sha1(text)}.mp3`;
try {
const s3getResponse = await s3.getObject({Key: key}).promise();
return res.set('content-type', s3getResponse.ContentType).send(s3getResponse.Body);
} catch {
const pollyResponse = await polly.synthesizeSpeech({
TextType: 'ssml',
Text: text,
OutputFormat: 'mp3',
LanguageCode: req.config.pronunciation.language,
VoiceId: req.config.pronunciation.voice,
Engine: req.config.pronunciation.engine,
}).promise();
const s3putResponse = await s3.putObject({
Key: key,
Body: pollyResponse.AudioStream,
ContentType: pollyResponse.ContentType,
}).promise();
return res.set('content-type', pollyResponse.ContentType).send(pollyResponse.AudioStream);
}
});
export default router;

View File

@ -75,6 +75,7 @@ export const parsePronouns = (pronounsRaw) => {
t.sources ? t.sources.split(',') : [],
aliases.slice(1),
t.history,
t.pronounceable,
)
];
}
@ -93,10 +94,11 @@ export const buildPronounFromTemplate = (key, template) => {
}
}
}, template.morphemes),
template.plural || false,
template.pluralHonorific || false,
[template.plural || false],
[template.pluralHonorific || false],
template.sources || [],
template.aliases || [],
template.history || null,
false,
)
}

View File

@ -1,6 +1,8 @@
import {buildDict, buildList, capitalise} from "./helpers";
import MORPHEMES from '../data/pronouns/morphemes';
const config = process.env.CONFIG || global.config;
export class ExamplePart {
constructor(variable, str) {
this.variable = variable;
@ -43,6 +45,44 @@ export class Example {
return part.variable ? pronoun.getMorpheme(part.str) : part.str;
}).join(''));
}
pronounce(pronoun) {
const plural = this.isHonorific ? pronoun.pluralHonorific[0] : pronoun.plural[0];
let interchangable = false;
const buildPronunciation = m => {
if (pronoun.isInterchangable(m)) {
interchangable = true;
}
const pronunciation = pronoun.getPronunciation(m);
const morpheme = pronoun.getMorpheme(m);
return pronunciation
? `<phoneme alphabet="ipa" ph="${pronunciation}">${morpheme}</phoneme>`
: morpheme;
}
const ssml = '<speak>' + this[plural ? 'pluralParts' : 'singularParts'].map(part => {
return part.variable
? buildPronunciation(part.str)
: part.str;
}).join('') + '</speak>';
if (interchangable) {
return null;
}
return ssml;
}
toString() {
return this.singularParts.map(part => part.variable ? '{' + part.str + '}' : part.str).join('')
+ '|'
+ this.pluralParts.map(part => part.variable ? '{' + part.str + '}' : part.str).join('')
+ '|'
+ (this.isHonorific ? '1' : '0');
}
}
function clone(mainObject) {
@ -111,16 +151,24 @@ const escape = s => {
}
export class Pronoun {
constructor (canonicalName, description, normative, morphemes, plural, pluralHonorific, sources = [], aliases = [], history = null) {
constructor (canonicalName, description, normative, morphemes, plural, pluralHonorific, sources = [], aliases = [], history = null, pronounceable = true) {
this.canonicalName = canonicalName;
this.description = description;
this.normative = normative;
this.morphemes = morphemes
this.morphemes = {}
this.pronunciations = {}
for (let m in morphemes) {
if (!morphemes.hasOwnProperty(m)) { continue; }
const [morpheme, pronunciation] = morphemes[m] ? morphemes[m].split('|') : [null, null];
this.morphemes[m] = morpheme;
this.pronunciations[m] = pronunciation;
}
this.plural = plural;
this.pluralHonorific = pluralHonorific;
this.sources = sources;
this.aliases = aliases;
this.history = history;
this.pronounceable = pronounceable;
}
pronoun() {
@ -145,7 +193,7 @@ export class Pronoun {
}
clone() {
return new Pronoun(this.canonicalName, this.description, this.normative, clone(this.morphemes), [...this.plural], [...this.pluralHonorific]);
return new Pronoun(this.canonicalName, this.description, this.normative, clone(this.morphemes), [...this.plural], [...this.pluralHonorific], this.pronounceable);
}
equals(other) {
@ -165,6 +213,7 @@ export class Pronoun {
}, this, other),
[...this.plural, ...other.plural],
[...this.pluralHonorific, ...other.pluralHonorific],
false,
);
}
@ -186,6 +235,20 @@ export class Pronoun {
return capital ? capitalise(result) : result;
}
getPronunciation(morpheme, counter = 0) {
if (!this.pronunciations[morpheme]) {
return null;
}
const options = this.pronunciations[morpheme].split('&');
return options[counter % options.length];
}
isInterchangable(morpheme) {
return (this.morphemes[morpheme.replace(/^'/, '')] || '').includes('&');
}
isPlural(counter = 0) {
return this.plural[counter % this.plural.length]
}
@ -196,9 +259,14 @@ export class Pronoun {
toArray() {
const elements = Object.values(this.morphemes).map(s => escape(s));
if (process.env.CONFIG.pronouns.plurals) {
Object.values(this.pronunciations).forEach((p, i) => {
if (p) {
elements[i] += '|' + escape(p);
}
});
if (config.pronouns.plurals) {
elements.push(this.plural.map(p => p ? 1 : 0).join(''));
if (process.env.CONFIG.pronouns.honorifics) {
if (config.pronouns.honorifics) {
elements.push(this.pluralHonorific.map(p => p ? 1 : 0).join(''));
}
}
@ -213,12 +281,12 @@ export class Pronoun {
static from(data) {
let extraFields = 1; // description
if (process.env.CONFIG.pronouns.plurals) {
if (config.pronouns.plurals) {
extraFields += 1;
if (![0, 1].includes(parseInt(data[MORPHEMES.length]))) {
return null;
}
if (process.env.CONFIG.pronouns.honorifics) {
if (config.pronouns.honorifics) {
extraFields += 1;
if (![0, 1].includes(parseInt(data[MORPHEMES.length + 1]))) {
return null;
@ -233,7 +301,7 @@ export class Pronoun {
if (data.length !== MORPHEMES.length + extraFields
|| data[0].length === 0
|| data[data.length - 1].length > 48
|| data.slice(1, data.length - extraFields).filter(s => s.length > 12).length
|| data.slice(1, data.length - extraFields).filter(s => s.length > 24).length
) {
return null;
}
@ -250,6 +318,7 @@ export class Pronoun {
m,
data[MORPHEMES.length].split('').map(p => parseInt(p) === 1),
data[MORPHEMES.length + 1].split('').map(p => parseInt(p) === 1),
false,
)
}
}
@ -289,7 +358,7 @@ export class PronounLibrary {
}
yield [
new PronounGroup(process.env.CONFIG.pronouns.others, pronounsLeft),
new PronounGroup(config.pronouns.others, pronounsLeft),
buildList(function* () {
for (let t of pronounsLeft) {
if (!filter || filter(that.pronouns[t])) {

View File

@ -2005,6 +2005,21 @@ avris-daemonise@^0.0.2:
fs "^0.0.1-security"
yargs "^12.0.1"
aws-sdk@^2.799.0:
version "2.799.0"
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.799.0.tgz#8b1a64c1a9f8ccf5794eb07bdd8051e4cb6adcfd"
integrity sha512-NYAoiNU+bJXhlJsC0rFqrmD5t5ho7/VxldmziP6HLPYHfOCI9Uvk6UVjfPmhLWPm0mHnIxhsHqmsNGyjhHNYmw==
dependencies:
buffer "4.9.2"
events "1.1.1"
ieee754 "1.1.13"
jmespath "0.15.0"
querystring "0.2.0"
sax "1.2.1"
url "0.10.3"
uuid "3.3.2"
xml2js "0.4.19"
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@ -2298,7 +2313,7 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
buffer@^4.3.0:
buffer@4.9.2, buffer@^4.3.0:
version "4.9.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
@ -2517,6 +2532,11 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
"charenc@>= 0.0.1":
version "0.0.2"
resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=
check-types@^8.0.3:
version "8.0.3"
resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552"
@ -3015,6 +3035,11 @@ cross-spawn@^7.0.0:
shebang-command "^2.0.0"
which "^2.0.1"
"crypt@>= 0.0.1":
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=
crypto-browserify@^3.11.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
@ -3748,6 +3773,11 @@ eventemitter3@^4.0.0:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384"
integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==
events@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
events@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59"
@ -4695,7 +4725,7 @@ icss-utils@^4.0.0, icss-utils@^4.1.1:
dependencies:
postcss "^7.0.14"
ieee754@^1.1.13, ieee754@^1.1.4:
ieee754@1.1.13, ieee754@^1.1.13, ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@ -5155,6 +5185,11 @@ jiti@^0.1.11:
resolved "https://registry.yarnpkg.com/jiti/-/jiti-0.1.11.tgz#8b27b92e4c0866b3c8c91945c55a99a1db17a782"
integrity sha512-zSPegl+ageMLSYcq1uAZa6V56pX2GbNl/eU3Or7PFHu10a2YhLAXj5fnHJGd6cHZTalSR8zXGH8WmyuyufMhLA==
jmespath@0.15.0:
version "0.15.0"
resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=
js-base64@^3.5.2:
version "3.5.2"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.5.2.tgz#3cc800e4f10812b55fb5ec53e7cabaef35dc6d3c"
@ -7807,7 +7842,12 @@ sass@^1.26.10:
dependencies:
chokidar ">=2.0.0 <4.0.0"
sax@^1.2.4, sax@~1.2.4:
sax@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@ -7957,6 +7997,14 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
sha1@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848"
integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=
dependencies:
charenc ">= 0.0.1"
crypt ">= 0.0.1"
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@ -8813,6 +8861,14 @@ url-loader@^2.3.0:
mime "^2.4.4"
schema-utils "^2.5.0"
url@0.10.3:
version "0.10.3"
resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64"
integrity sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=
dependencies:
punycode "1.3.2"
querystring "0.2.0"
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@ -8885,6 +8941,11 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
@ -9251,6 +9312,19 @@ ws@^6.0.0:
dependencies:
async-limiter "~1.0.0"
xml2js@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==
dependencies:
sax ">=0.6.0"
xmlbuilder "~9.0.1"
xmlbuilder@~9.0.1:
version "9.0.7"
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d"
integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"