diff --git a/package.json b/package.json index a793128..e89cccb 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "@formkit/auto-animate": "^1.0.0-beta.1", "@fortawesome/fontawesome-free": "^5.15.4", "@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/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", diff --git a/src/components/phrase-diagram/EditableVPEx.tsx b/src/components/phrase-diagram/EditableVPEx.tsx index 44c4dcf..d1aeeda 100644 --- a/src/components/phrase-diagram/EditableVPEx.tsx +++ b/src/components/phrase-diagram/EditableVPEx.tsx @@ -20,10 +20,11 @@ function EditableVPEx({ children, opts, formChoice, noEdit, length, mode }: { mode?: "text" | "blocks", }) { const [editing, setEditing] = useState(false); - const [vps, setVps] = useState(children); + const [vps, setVps] = useState({ ...children }); function handleReset() { - setEditing(false); + // TODO: this is crazy, how does children get changed after calling setVps ??? setVps(children); + setEditing(false); } function handleSetForm(form: T.FormVersion) { setVps(vpsReducer(vps, { type: "set form", payload: form })); diff --git a/src/content/index.ts b/src/content/index.ts index b6aaef6..b0c769a 100644 --- a/src/content/index.ts +++ b/src/content/index.ts @@ -64,7 +64,9 @@ import * as rootsAndStems from "!babel-loader!@lingdocs/mdx-loader!./verbs/roots // @ts-ignore import * as pastVerbs from "!babel-loader!@lingdocs/mdx-loader!./verbs/past-verbs.mdx"; // @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 import * as introToParticiples from "!babel-loader!@lingdocs/mdx-loader!./participles/intro.mdx"; @@ -226,8 +228,12 @@ const contentTree = [ slug: "past-verbs", }, { - import: perfectVerbs, - slug: "perfect-verbs", + import: perfectVerbsIntro, + slug: "perfect-verbs-intro", + }, + { + import: allPerfectVerbs, + slug: "all-perfect-verbs", }, { import: negativeVerbs, diff --git a/src/content/verbs/all-perfect-verbs.mdx b/src/content/verbs/all-perfect-verbs.mdx new file mode 100644 index 0000000..5f8cb32 --- /dev/null +++ b/src/content/verbs/all-perfect-verbs.mdx @@ -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 ... \ No newline at end of file diff --git a/src/content/verbs/perfect-verbs.mdx b/src/content/verbs/perfect-verbs-intro.mdx similarity index 77% rename from src/content/verbs/perfect-verbs.mdx rename to src/content/verbs/perfect-verbs-intro.mdx index da2a00e..c0264c1 100644 --- a/src/content/verbs/perfect-verbs.mdx +++ b/src/content/verbs/perfect-verbs-intro.mdx @@ -1,11 +1,13 @@ --- -title: Perfect +title: Perfect Intro --- 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"; @@ -49,7 +51,7 @@ With the sim } ]} -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.
@@ -75,11 +77,11 @@ Well now we're going to do something very crazy. To make the perfect forms we ar
- Verb Past Participle +{` `} + Verb Past Participle +{` `} Equative = Perfect -To make the perfect forms we take the past participle of the verb and **add an equative block** next to it. For example, with the verb we could have something like: +To make the perfect forms we take the past participle of the verb and **add an equative block** next to it. For example, with the verb we could say: { {"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 is in the masculine uninflected form because it agrees with which is masculine singular. -2. The **equative** also agrees with the king , because it's a 1st pers. sing. equative. +1. The **past participle** +2. The **equative** -If a woman says this sentence it will change slightly... +Both of these need to agree with the king . 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 #2 inflection pattern because it ends with an unstressed . So, depending on what the king is you need to choose the right inflection to agree with the gender (masculine or feminine) and number (singular or plural) of the king. + + + + + + + + + + + + + + + + + + + + + +
MasculineFeminine
Singular / Plain +
+ {{ p: "تللی", f: "tlúley" }} +
+
+ {{ p: "تللی", f: "tlúley" }} +
+
+
+ {{ p: "تللې", f: "tlúle" }} +
+
+ {{ p: "تللې", f: "tlúle" }} +
+
Plural / Inflected +
+ {{ p: "تللي", f: "tlúlee" }} +
+
+ {{ p: "تللي", f: "tlúlee" }} +
+
+
+ {{ p: "تللې", f: "tlúle" }} +
+
+ {{ p: "تللې", f: "tlúle" }} +
+
+ +So this sentence it will change slightly if a woman says it. { {"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, will be given the feminine form because it agrees with which is feminine singular. 2. The **equative** stays the same. -Note that the past participle always follows the #2 inflection pattern because it ends with an unstressed . - How would we say "*We* have gone" ? Try to make this sentence by making the two blocks agree with . 1. Inflect the **past participle** @@ -117,7 +176,7 @@ How would we say "*We* have gone" ? Try to make this sentence by making the two -Notice how answer changes depending on whether the "we" in masculine or feminine! (Mixed groups are always considered masculine.) Press the 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 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: @@ -176,9 +235,22 @@ With transitive verbs everything works the same, but we follow the +## Negatives with the perfect + +To make perfect forms negative you add a block, just as you would with any other verb. But interestingly, **the past participle and equative blocks switch places**. + +{ + {"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":true,"canChangeTransitivity":false,"canChangeVoice":false,"canChangeStatDyn":false},"form":{"removeKing":false,"shrinkServant":false}} +} + +You can also say the negative without swapping the order of the past participle and equative, for example 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 examples above and making them negative. Notice how the different forms are shortened with the block in there. + ## Other forms of perfect -All of these examples used the present equative. So this whole lesson has been about making the "present perfect." But we can actually use any of the 8 equatives to make perfect tenses with different meanings. - -COMING SOON... - +So far we have only made perfect forms using the present equative. 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 8 equatives with the perfect which gives a whole new gamut of expressive super-powers. 💪 Read on... \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1be0a4a..31ac298 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1695,10 +1695,10 @@ rambda "^6.7.0" react-select "^5.2.2" -"@lingdocs/pashto-inflector@^3.2.8": - version "3.2.8" - resolved "https://npm.lingdocs.com/@lingdocs%2fpashto-inflector/-/pashto-inflector-3.2.8.tgz#ad3a607eaab0ed487b656cb50fbea10df31aefa6" - integrity sha512-O0xedjPtiVsfWy3F5TW9PLK0p+gE2dlMUK5Q2YmD8Rdp/UapQ6mtW1AXByx0AWa2goMFUg7Tsp4xiHVWqbaLMw== +"@lingdocs/pashto-inflector@^3.3.1": + version "3.3.1" + resolved "https://npm.lingdocs.com/@lingdocs%2fpashto-inflector/-/pashto-inflector-3.3.1.tgz#de6f7765f27ee5d297e1952aa674ca3c978c85d1" + integrity sha512-PCjzA16vdEPCv7KmGW2f1j/kgjAFjx3l5M0ipxLsT/t2mRhf7IJ4ujVhiokNHv20u4v9ihg0VC74lX5UYVG5/g== dependencies: "@formkit/auto-animate" "^1.0.0-beta.1" classnames "^2.2.6"