more on perfect

This commit is contained in:
lingdocs 2022-07-07 15:30:46 -05:00
parent 5ba911420f
commit 27eb4c2113
6 changed files with 126 additions and 24 deletions

View File

@ -6,7 +6,7 @@
"@formkit/auto-animate": "^1.0.0-beta.1", "@formkit/auto-animate": "^1.0.0-beta.1",
"@fortawesome/fontawesome-free": "^5.15.4", "@fortawesome/fontawesome-free": "^5.15.4",
"@lingdocs/lingdocs-main": "^0.3.1", "@lingdocs/lingdocs-main": "^0.3.1",
"@lingdocs/pashto-inflector": "^3.2.8", "@lingdocs/pashto-inflector": "^3.3.1",
"@testing-library/jest-dom": "^5.11.4", "@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0", "@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10", "@testing-library/user-event": "^12.1.10",

View File

@ -20,10 +20,11 @@ function EditableVPEx({ children, opts, formChoice, noEdit, length, mode }: {
mode?: "text" | "blocks", mode?: "text" | "blocks",
}) { }) {
const [editing, setEditing] = useState<boolean>(false); const [editing, setEditing] = useState<boolean>(false);
const [vps, setVps] = useState<T.VPSelectionState>(children); const [vps, setVps] = useState<T.VPSelectionState>({ ...children });
function handleReset() { function handleReset() {
setEditing(false); // TODO: this is crazy, how does children get changed after calling setVps ???
setVps(children); setVps(children);
setEditing(false);
} }
function handleSetForm(form: T.FormVersion) { function handleSetForm(form: T.FormVersion) {
setVps(vpsReducer(vps, { type: "set form", payload: form })); setVps(vpsReducer(vps, { type: "set form", payload: form }));

View File

@ -64,7 +64,9 @@ import * as rootsAndStems from "!babel-loader!@lingdocs/mdx-loader!./verbs/roots
// @ts-ignore // @ts-ignore
import * as pastVerbs from "!babel-loader!@lingdocs/mdx-loader!./verbs/past-verbs.mdx"; import * as pastVerbs from "!babel-loader!@lingdocs/mdx-loader!./verbs/past-verbs.mdx";
// @ts-ignore // @ts-ignore
import * as perfectVerbs from "!babel-loader!@lingdocs/mdx-loader!./verbs/perfect-verbs.mdx"; import * as perfectVerbsIntro from "!babel-loader!@lingdocs/mdx-loader!./verbs/perfect-verbs-intro.mdx";
// @ts-ignore
import * as allPerfectVerbs from "!babel-loader!@lingdocs/mdx-loader!./verbs/all-perfect-verbs.mdx";
// @ts-ignore // @ts-ignore
import * as introToParticiples from "!babel-loader!@lingdocs/mdx-loader!./participles/intro.mdx"; import * as introToParticiples from "!babel-loader!@lingdocs/mdx-loader!./participles/intro.mdx";
@ -226,8 +228,12 @@ const contentTree = [
slug: "past-verbs", slug: "past-verbs",
}, },
{ {
import: perfectVerbs, import: perfectVerbsIntro,
slug: "perfect-verbs", slug: "perfect-verbs-intro",
},
{
import: allPerfectVerbs,
slug: "all-perfect-verbs",
}, },
{ {
import: negativeVerbs, import: negativeVerbs,

View File

@ -0,0 +1,23 @@
---
title: All Perfect Forms
---
import {
defaultTextOptions as opts,
Examples,
InlinePs,
Pashto,
Phonetics,
} from "@lingdocs/pashto-inflector";
import { KidsSection, VP, EP, Camera, Video, KingIcon } from "../../components/terms-links";
import psmd from "../../lib/psmd";
import Link from "../../components/Link";
import Formula from "../../components/formula/Formula";
import EditableVPEx, { EditIcon } from "../../components/phrase-diagram/EditableVPEx";
import BasicVerbShowCase from "../../components/BasicVerbShowCase";
import simplePast from "./simple-past-in-reality.svg";
import presentPerfect from "./present-perfect.svg";
import chemistryPerfect from "./chemistry-perfect.jpg";
import BasicBlocks from "../../components/BasicBlocks";
COMING SOON ...

View File

@ -1,11 +1,13 @@
--- ---
title: Perfect title: Perfect Intro
--- ---
import { import {
defaultTextOptions as opts, defaultTextOptions as opts,
Examples, Examples,
InlinePs, InlinePs,
Pashto,
Phonetics,
} from "@lingdocs/pashto-inflector"; } from "@lingdocs/pashto-inflector";
import { KidsSection, VP, EP, Camera, Video, KingIcon } from "../../components/terms-links"; import { KidsSection, VP, EP, Camera, Video, KingIcon } from "../../components/terms-links";
import psmd from "../../lib/psmd"; import psmd from "../../lib/psmd";
@ -49,7 +51,7 @@ With the <Link to="/verbs/past-verbs/#simple-past-i-classnamefas-fa-camera-">sim
} }
]}</Examples> ]}</Examples>
With a **perfect** tense, we're talking about the **result of an event**. We're saying that something has happened, and therefore there's an affect on the situation. With a **perfect** tense, we're talking about the **result of an event**. We're saying that something has happened, and therefore there's an effect on the situation.
<div style={{ maxWidth: "350px", margin: "0 auto 2rem auto" }}> <div style={{ maxWidth: "350px", margin: "0 auto 2rem auto" }}>
<img src={presentPerfect} alt="" className="img-fluid" /> <img src={presentPerfect} alt="" className="img-fluid" />
@ -75,11 +77,11 @@ Well now we're going to do something very crazy. To make the perfect forms we ar
</div> </div>
<Formula> <Formula>
Verb Past Participle +{` `} <Link to="/verbs/roots-and-stems/#the-past-participle">Verb Past Participle</Link> +{` `}
Equative = Perfect Equative = Perfect
</Formula> </Formula>
To make the perfect forms we take the <Link to="/verbs/roots-and-stems/#the-past-participle">past participle</Link> of the verb and **add an equative block** next to it. For example, with the verb <InlinePs opts={opts} ps={{ p: "تلل", f: "tlul", e: "to go" }} /> we could have something like: To make the perfect forms we take the <Link to="/verbs/roots-and-stems/#the-past-participle">past participle</Link> of the verb and **add an equative block** next to it. For example, with the verb <InlinePs opts={opts} ps={{ p: "تلل", f: "tlul", e: "to go" }} /> we could say:
<EditableVPEx opts={opts} mode="blocks">{ <EditableVPEx opts={opts} mode="blocks">{
{"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}} {"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}}
@ -87,10 +89,69 @@ To make the perfect forms we take the <Link to="/verbs/roots-and-stems/#the-past
Now instead of one verb block, we have **two blocks** that have to agree with the king <KingIcon /> of the <VP />. Now instead of one verb block, we have **two blocks** that have to agree with the king <KingIcon /> of the <VP />.
1. The **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tlúley" }} /> is in the <Link to="/inflection/inflection-patterns/#2-words-ending-in-an-unstressed-inlineps-optsopts-ps-p-ی-f-ey--">masculine uninflected form</Link> because it agrees with <InlinePs opts={opts} ps={{ p: "زه", f: "zu", e: "I (m.)" }} /> which is masculine singular. 1. The **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tlúley" }} />
2. The **equative** <InlinePs opts={opts} ps={{ p: "یم", f: "yum", e: "" }} /> also agrees with the king <InlinePs opts={opts} ps={{ p: "زه", f: "zu" }} />, because it's a <Link to="/equatives/present-equative/">1st pers. sing. equative</Link>. 2. The **equative** <InlinePs opts={opts} ps={{ p: "یم", f: "yum", e: "" }} />
If a woman says this sentence it will change slightly... Both of these need to agree with the king <KingIcon />. To do that we need to:
1. Inflect the past participle
2. Choose the right equative
### Inflecting the Past Participle
The past participle will always follow the <Link to="/inflection/inflection-patterns/#2-words-ending-in-an-unstressed-inlineps-optsopts-ps-p-ی-f-ey--">#2 inflection pattern</Link> because it ends with an unstressed <InlinePs opts={opts} ps={{ p: "ی", f: "ey", e: "" }} />. So, depending on what the king <KingIcon /> is you need to choose the right inflection to agree with the gender (masculine or feminine) and number (singular or plural) of the king.
<table class="table">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">Masculine</th>
<th scope="col">Feminine</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Singular / Plain</th>
<td>
<div>
<Pashto opts={opts}>{{ p: "تللی", f: "tlúley" }}</Pashto>
</div>
<div>
<Phonetics opts={opts}>{{ p: "تللی", f: "tlúley" }}</Phonetics>
</div>
</td>
<td>
<div>
<Pashto opts={opts}>{{ p: "تللې", f: "tlúle" }}</Pashto>
</div>
<div>
<Phonetics opts={opts}>{{ p: "تللې", f: "tlúle" }}</Phonetics>
</div>
</td>
</tr>
<tr>
<th scope="row">Plural / Inflected</th>
<td>
<div>
<Pashto opts={opts}>{{ p: "تللي", f: "tlúlee" }}</Pashto>
</div>
<div>
<Phonetics opts={opts}>{{ p: "تللي", f: "tlúlee" }}</Phonetics>
</div>
</td>
<td>
<div>
<Pashto opts={opts}>{{ p: "تللې", f: "tlúle" }}</Pashto>
</div>
<div>
<Phonetics opts={opts}>{{ p: "تللې", f: "tlúle" }}</Phonetics>
</div>
</td>
</tr>
</tbody>
</table>
So this sentence it will change slightly if a woman says it.
<EditableVPEx opts={opts} mode="blocks">{ <EditableVPEx opts={opts} mode="blocks">{
{"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":1,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}} {"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":1,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}}
@ -101,8 +162,6 @@ In that case the king, <InlinePs opts={opts} ps={{ p: "زه", f: "zu", e: "I" }}
1. The **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tlúley" }} /> will be given the <Link to="/inflection/inflection-patterns/#2-words-ending-in-an-unstressed-inlineps-optsopts-ps-p-ی-f-ey--">feminine form</Link> <InlinePs opts={opts} ps={{ p: "تللې", f: "tlúle", e: "" }} /> because it agrees with <InlinePs opts={opts} ps={{ p: "زه", f: "zu", e: "I (f.)" }} /> which is feminine singular. 1. The **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tlúley" }} /> will be given the <Link to="/inflection/inflection-patterns/#2-words-ending-in-an-unstressed-inlineps-optsopts-ps-p-ی-f-ey--">feminine form</Link> <InlinePs opts={opts} ps={{ p: "تللې", f: "tlúle", e: "" }} /> because it agrees with <InlinePs opts={opts} ps={{ p: "زه", f: "zu", e: "I (f.)" }} /> which is feminine singular.
2. The **equative** <InlinePs opts={opts} ps={{ p: "یم", f: "yum", e: "" }} /> stays the same. 2. The **equative** <InlinePs opts={opts} ps={{ p: "یم", f: "yum", e: "" }} /> stays the same.
Note that <strong>the past participle always follows the <Link to="/inflection/inflection-patterns/#2-words-ending-in-an-unstressed-inlineps-optsopts-ps-p-ی-f-ey--">#2 inflection pattern</Link></strong> because it ends with an unstressed <InlinePs opts={opts} ps={{ p: "ی", f: "ey", e: "" }} />.
How would we say "*We* have gone" ? Try to make this sentence by making the two blocks agree with <InlinePs opts={opts} ps={{ p: "مونږ", f: "moonG" }} />. How would we say "*We* have gone" ? Try to make this sentence by making the two blocks agree with <InlinePs opts={opts} ps={{ p: "مونږ", f: "moonG" }} />.
1. Inflect the **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tluley" }} /> 1. Inflect the **past participle** <InlinePs opts={opts} ps={{ p: "تللی", f: "tluley" }} />
@ -117,7 +176,7 @@ How would we say "*We* have gone" ? Try to make this sentence by making the two
</details> </details>
Notice how answer changes depending on whether the "we" in masculine or feminine! (Mixed groups are always considered masculine.) Press the <EditIcon /> and adjust it to see how it changes. Actually the answer changes depending on whether the "we" in masculine or feminine! (Mixed groups are always considered masculine.) Press the <EditIcon /> above the answer and adjust it to see how it changes when you use a feminine "we."
Let's look at some examples of other intransitive verbs with all the different persons: Let's look at some examples of other intransitive verbs with all the different persons:
@ -176,9 +235,22 @@ With transitive verbs everything works the same, but we follow the <Link to="/ph
{"blocks":[{"key":0.48107357509198234,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"noun","entry":{"ts":1527812881,"i":11710,"p":"ماشوم","f":"maashoom","g":"maashoom","e":"child, kid","c":"n. m. anim. unisex","ec":"child","ep":"children"},"gender":"masc","genderCanChange":true,"number":"plural","numberCanChange":true,"adjectives":[],"possesor":{"np":{"type":"NP","selection":{"type":"pronoun","person":2,"distance":"far"}},"shrunken":false}}}}},{"key":0.8253773159904139,"block":{"type":"objectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815399,"i":14484,"p":"وهل","f":"wahul","g":"wahul","e":"to hit","c":"v. trans.","tppp":"واهه","tppf":"waahu","ec":"hit,hits,hitting,hit,hit"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"transitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":true,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}} {"blocks":[{"key":0.48107357509198234,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"noun","entry":{"ts":1527812881,"i":11710,"p":"ماشوم","f":"maashoom","g":"maashoom","e":"child, kid","c":"n. m. anim. unisex","ec":"child","ep":"children"},"gender":"masc","genderCanChange":true,"number":"plural","numberCanChange":true,"adjectives":[],"possesor":{"np":{"type":"NP","selection":{"type":"pronoun","person":2,"distance":"far"}},"shrunken":false}}}}},{"key":0.8253773159904139,"block":{"type":"objectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815399,"i":14484,"p":"وهل","f":"wahul","g":"wahul","e":"to hit","c":"v. trans.","tppp":"واهه","tppf":"waahu","ec":"hit,hits,hitting,hit,hit"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"transitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":true,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}}
}</EditableVPEx> }</EditableVPEx>
## Negatives with the perfect
To make perfect forms negative you add a <InlinePs opts={opts} ps={{ p: "نه", f: "nú", e: "" }} /> block, just as you would with any other verb. But interestingly, **the past participle and equative blocks switch places**.
<EditableVPEx opts={opts} mode="blocks">{
{"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":false,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}}
}</EditableVPEx>
<EditableVPEx opts={opts} mode="blocks">{
{"blocks":[{"key":0.9450165572504559,"block":{"type":"subjectSelection","selection":{"type":"NP","selection":{"type":"pronoun","person":0,"distance":"far"}}}},{"key":0.9846690662896809,"block":{"type":"objectSelection","selection":"none"}}],"verb":{"type":"verb","verb":{"entry":{"ts":1527815348,"i":3656,"p":"تلل","f":"tlul","g":"tlul","e":"to go","c":"v. intrans. irreg.","psp":"ځ","psf":"dz","ssp":"لاړ ش","ssf":"láaR sh","prp":"لاړ","prf":"láaR","ec":"go,goes,going,went,gone"}},"verbTense":"perfectivePast","perfectTense":"presentPerfect","imperativeTense":"imperfectiveImperative","tenseCategory":"perfect","transitivity":"intransitive","isCompound":false,"voice":"active","negative":true,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}}
}</EditableVPEx>
You can also say the negative without swapping the order of the past participle and equative, for example <InlinePs opts={opts} ps={{ p: "زه تللی نه یم", f: "zu tlúley nú yum" }} /> but that makes it more emphatically negative, kind of like if you were to say, "I have **NOT** gone" in a loud voice.
Try editing the <Link to="#examples">examples above</Link> and making them negative. Notice how the different forms <Link to="/phrase-structure/shortening-vps/">are shortened</Link> with the <InlinePs opts={opts} ps={{ p: "نه", f: "nú", e: "" }} /> block in there.
## Other forms of perfect ## Other forms of perfect
All of these examples used the <Link to="/equatives/present-equative/">present equative</Link>. So this whole lesson has been about making the "present perfect." But we can actually use any of the <Link to="/equatives/other-equatives/#overview-of-8-equatives">8 equatives</Link> to make perfect tenses with different meanings. So far we have only made perfect forms using the <Link to="/equatives/present-equative/">present equative</Link>. This form with the present equative is called the **present perfect** because it's talking about things that happened in the past but **have an effect on the present situation**. But actually, we can use any of the <Link to="/equatives/other-equatives/#overview-of-8-equatives">8 equatives</Link> with the perfect which gives a whole new gamut of expressive super-powers. 💪 <Link to="/verbs/all-perfect-verbs/">Read on</Link>...
COMING SOON...

View File

@ -1695,10 +1695,10 @@
rambda "^6.7.0" rambda "^6.7.0"
react-select "^5.2.2" react-select "^5.2.2"
"@lingdocs/pashto-inflector@^3.2.8": "@lingdocs/pashto-inflector@^3.3.1":
version "3.2.8" version "3.3.1"
resolved "https://npm.lingdocs.com/@lingdocs%2fpashto-inflector/-/pashto-inflector-3.2.8.tgz#ad3a607eaab0ed487b656cb50fbea10df31aefa6" resolved "https://npm.lingdocs.com/@lingdocs%2fpashto-inflector/-/pashto-inflector-3.3.1.tgz#de6f7765f27ee5d297e1952aa674ca3c978c85d1"
integrity sha512-O0xedjPtiVsfWy3F5TW9PLK0p+gE2dlMUK5Q2YmD8Rdp/UapQ6mtW1AXByx0AWa2goMFUg7Tsp4xiHVWqbaLMw== integrity sha512-PCjzA16vdEPCv7KmGW2f1j/kgjAFjx3l5M0ipxLsT/t2mRhf7IJ4ujVhiokNHv20u4v9ihg0VC74lX5UYVG5/g==
dependencies: dependencies:
"@formkit/auto-animate" "^1.0.0-beta.1" "@formkit/auto-animate" "^1.0.0-beta.1"
classnames "^2.2.6" classnames "^2.2.6"