add ps language tag
This commit is contained in:
parent
c9f369de09
commit
c6b4d19abf
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "pashto-inflector",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "pashto-inflector",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "pashto-inflector",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"author": "lingdocs.com",
|
||||
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
||||
"homepage": "https://verbs.lingdocs.com",
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "@lingdocs/ps-react",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@lingdocs/ps-react",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@formkit/auto-animate": "^1.0.0-beta.3",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@lingdocs/ps-react",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"description": "Pashto inflector library module with React components",
|
||||
"main": "dist/components/library.js",
|
||||
"module": "dist/components/library.js",
|
||||
|
|
|
@ -12,48 +12,66 @@ import * as T from "../../types";
|
|||
|
||||
type PsStringWSub = T.PsString & { sub?: any };
|
||||
|
||||
function EnglishContent({ children }: { children: (string | JSX.Element)[] | (string | JSX.Element) }) {
|
||||
if (Array.isArray(children)) {
|
||||
return <>
|
||||
{children.map((x) => <EnglishContent>{x}</EnglishContent>)}
|
||||
</>
|
||||
}
|
||||
return <div className="text-muted">
|
||||
{children}
|
||||
</div>;
|
||||
}
|
||||
|
||||
function Examples(props: ({
|
||||
ex: T.PsJSX | T.PsJSX[] | PsStringWSub | PsStringWSub[],
|
||||
} | {
|
||||
children: T.PsJSX | T.PsJSX[] | PsStringWSub | PsStringWSub[],
|
||||
}) & {
|
||||
opts: T.TextOptions,
|
||||
lineHeight?: 0 | 1 | 2 | 3 | 4,
|
||||
function EnglishContent({
|
||||
children,
|
||||
}: {
|
||||
children: (string | JSX.Element)[] | (string | JSX.Element);
|
||||
}) {
|
||||
const examples = "children" in props ? props.children : props.ex;
|
||||
const Example = ({ children: text }: { children: PsStringWSub }) => (
|
||||
<div className={props.lineHeight !== undefined ? `mb-${props.lineHeight}` : `mt-1 mb-3`}>
|
||||
<div>
|
||||
<Pashto opts={props.opts}>{text}</Pashto>
|
||||
</div>
|
||||
<div>
|
||||
<Phonetics opts={props.opts}>{text}</Phonetics>
|
||||
</div>
|
||||
{text.e && <EnglishContent>
|
||||
{text.e}
|
||||
</EnglishContent>}
|
||||
{text.sub && <div className="small text-muted">
|
||||
{text.sub}
|
||||
</div>}
|
||||
</div>
|
||||
if (Array.isArray(children)) {
|
||||
return (
|
||||
<>
|
||||
{children.map((x) => (
|
||||
<EnglishContent>{x}</EnglishContent>
|
||||
))}
|
||||
</>
|
||||
);
|
||||
return Array.isArray(examples) ?
|
||||
<div>
|
||||
{examples.map((example, i) => <Example key={i}>{example as PsStringWSub}</Example>)}
|
||||
</div>
|
||||
:
|
||||
<Example>{examples as PsStringWSub}</Example>;
|
||||
}
|
||||
return (
|
||||
<div className="text-muted" lang="en">
|
||||
{children}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Examples;
|
||||
function Examples(
|
||||
props: (
|
||||
| {
|
||||
ex: T.PsJSX | T.PsJSX[] | PsStringWSub | PsStringWSub[];
|
||||
}
|
||||
| {
|
||||
children: T.PsJSX | T.PsJSX[] | PsStringWSub | PsStringWSub[];
|
||||
}
|
||||
) & {
|
||||
opts: T.TextOptions;
|
||||
lineHeight?: 0 | 1 | 2 | 3 | 4;
|
||||
}
|
||||
) {
|
||||
const examples = "children" in props ? props.children : props.ex;
|
||||
const Example = ({ children: text }: { children: PsStringWSub }) => (
|
||||
<div
|
||||
className={
|
||||
props.lineHeight !== undefined ? `mb-${props.lineHeight}` : `mt-1 mb-3`
|
||||
}
|
||||
>
|
||||
<div>
|
||||
<Pashto opts={props.opts}>{text}</Pashto>
|
||||
</div>
|
||||
<div>
|
||||
<Phonetics opts={props.opts}>{text}</Phonetics>
|
||||
</div>
|
||||
{text.e && <EnglishContent>{text.e}</EnglishContent>}
|
||||
{text.sub && <div className="small text-muted">{text.sub}</div>}
|
||||
</div>
|
||||
);
|
||||
return Array.isArray(examples) ? (
|
||||
<div>
|
||||
{examples.map((example, i) => (
|
||||
<Example key={i}>{example as PsStringWSub}</Example>
|
||||
))}
|
||||
</div>
|
||||
) : (
|
||||
<Example>{examples as PsStringWSub}</Example>
|
||||
);
|
||||
}
|
||||
|
||||
export default Examples;
|
||||
|
|
|
@ -6,42 +6,37 @@
|
|||
*
|
||||
*/
|
||||
|
||||
import {
|
||||
convertSpelling,
|
||||
} from "../../lib/src/convert-spelling";
|
||||
import {
|
||||
phoneticsToDiacritics
|
||||
} from "../../lib/src/phonetics-to-diacritics";
|
||||
import { convertSpelling } from "../../lib/src/convert-spelling";
|
||||
import { phoneticsToDiacritics } from "../../lib/src/phonetics-to-diacritics";
|
||||
import { psJSXMap } from "./jsx-map";
|
||||
import * as T from "../../types";
|
||||
|
||||
const Pashto = ({ opts, children: text }: {
|
||||
opts: T.TextOptions,
|
||||
children: T.PsString | T.PsJSX,
|
||||
const Pashto = ({
|
||||
opts,
|
||||
children: text,
|
||||
}: {
|
||||
opts: T.TextOptions;
|
||||
children: T.PsString | T.PsJSX;
|
||||
}) => {
|
||||
function convertText(ps: T.PsString, opts: T.TextOptions): string {
|
||||
const p = opts.diacritics
|
||||
? (phoneticsToDiacritics(ps.p, ps.f) || ps.p)
|
||||
: ps.p;
|
||||
return convertSpelling(p, opts.spelling);
|
||||
}
|
||||
const style = opts.pTextSize === "normal"
|
||||
? undefined
|
||||
: { fontSize: opts.pTextSize === "larger" ? "large" : "larger" };
|
||||
return (
|
||||
<span className="p-text" dir="rtl" style={style}>
|
||||
{(typeof text.p !== "string" && typeof text.f !== "string")
|
||||
?
|
||||
psJSXMap(
|
||||
text as T.PsJSX,
|
||||
"p",
|
||||
(ps: T.PsString) => convertText(ps, opts),
|
||||
)
|
||||
:
|
||||
convertText(text as T.PsString, opts)
|
||||
}
|
||||
</span>
|
||||
);
|
||||
function convertText(ps: T.PsString, opts: T.TextOptions): string {
|
||||
const p = opts.diacritics
|
||||
? phoneticsToDiacritics(ps.p, ps.f) || ps.p
|
||||
: ps.p;
|
||||
return convertSpelling(p, opts.spelling);
|
||||
}
|
||||
const style =
|
||||
opts.pTextSize === "normal"
|
||||
? undefined
|
||||
: { fontSize: opts.pTextSize === "larger" ? "large" : "larger" };
|
||||
return (
|
||||
<span className="p-text" dir="rtl" style={style} lang="ps">
|
||||
{typeof text.p !== "string" && typeof text.f !== "string"
|
||||
? psJSXMap(text as T.PsJSX, "p", (ps: T.PsString) =>
|
||||
convertText(ps, opts)
|
||||
)
|
||||
: convertText(text as T.PsString, opts)}
|
||||
</span>
|
||||
);
|
||||
};
|
||||
|
||||
export default Pashto;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@lingdocs/inflect",
|
||||
"version": "7.0.3",
|
||||
"version": "7.0.4",
|
||||
"description": "Pashto inflector library",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/lib/library.d.ts",
|
||||
|
|
|
@ -310,6 +310,9 @@ export function parseEc(ec: string): T.EnglishVerbConjugationEc {
|
|||
if (s === "be") {
|
||||
return ["am", "is", "being", "was", "been"];
|
||||
}
|
||||
if (s === "give") {
|
||||
return ["give", "gives", "giving", "gave", "gave"];
|
||||
}
|
||||
if (s.slice(-1) === "y" && !isVowel(s.slice(-2)[0])) {
|
||||
const b = s.slice(0, -1);
|
||||
return [`${s}`, `${b}ies`, `${s}ing`, `${b}ied`, `${b}ied`];
|
||||
|
|
Loading…
Reference in New Issue