add hasAccents utility
This commit is contained in:
parent
d75a3d1cd0
commit
35b91c12b7
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@lingdocs/pashto-inflector",
|
"name": "@lingdocs/pashto-inflector",
|
||||||
"version": "0.9.4",
|
"version": "0.9.5",
|
||||||
"author": "lingdocs.com",
|
"author": "lingdocs.com",
|
||||||
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
"description": "A Pashto inflection and verb conjugation engine, inculding React components for displaying Pashto text, inflections, and conjugations",
|
||||||
"homepage": "https://verbs.lingdocs.com",
|
"homepage": "https://verbs.lingdocs.com",
|
||||||
|
|
|
@ -13,6 +13,7 @@ import {
|
||||||
accentFSylsOnNFromEnd,
|
accentFSylsOnNFromEnd,
|
||||||
accentOnNFromEnd,
|
accentOnNFromEnd,
|
||||||
splitUpSyllables,
|
splitUpSyllables,
|
||||||
|
hasAccents,
|
||||||
} from "./accent-helpers";
|
} from "./accent-helpers";
|
||||||
|
|
||||||
const toAccentFront = [
|
const toAccentFront = [
|
||||||
|
@ -74,3 +75,14 @@ test(`accentOnNFromEnd should work`, () => {
|
||||||
f: "leedúley",
|
f: "leedúley",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test(`has accents should work`, () => {
|
||||||
|
const accents = ["koRanúy", "wutáaq", "gÚta", "taté", "bít", "sóra", "kúcha"];
|
||||||
|
const noAccents = ["koRanuy", "wutaaq", "gUta", "tate", "bit", "sora", "kucha"];
|
||||||
|
accents.forEach((x) => {
|
||||||
|
expect(hasAccents(x)).toBe(true);
|
||||||
|
});
|
||||||
|
noAccents.forEach((x) => {
|
||||||
|
expect(hasAccents(x)).toBe(false);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
|
@ -80,17 +80,18 @@ export function accentOnNFromEnd(ps: T.PsString, n: number): T.PsString {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const accentReplacer = [
|
||||||
|
{ vowel: "a", accented: "á" },
|
||||||
|
{ vowel: "e", accented: "é" },
|
||||||
|
{ vowel: "i", accented: "í" },
|
||||||
|
{ vowel: "o", accented: "ó" },
|
||||||
|
{ vowel: "u", accented: "ú" },
|
||||||
|
{ vowel: "U", accented: "Ú" },
|
||||||
|
];
|
||||||
|
|
||||||
function accentSyllable(s: string): string {
|
function accentSyllable(s: string): string {
|
||||||
const replacer = [
|
|
||||||
{ vowel: "a", accented: "á" },
|
|
||||||
{ vowel: "e", accented: "é" },
|
|
||||||
{ vowel: "i", accented: "í" },
|
|
||||||
{ vowel: "o", accented: "ó" },
|
|
||||||
{ vowel: "u", accented: "ú" },
|
|
||||||
{ vowel: "U", accented: "Ú" },
|
|
||||||
];
|
|
||||||
return s.replace(/a|e|i|o|u|U/, (match) => {
|
return s.replace(/a|e|i|o|u|U/, (match) => {
|
||||||
const r = replacer.find((x) => x.vowel === match);
|
const r = accentReplacer.find((x) => x.vowel === match);
|
||||||
/* istanbul ignore next */
|
/* istanbul ignore next */
|
||||||
return r?.accented || "";
|
return r?.accented || "";
|
||||||
});
|
});
|
||||||
|
@ -105,11 +106,18 @@ export function removeAccents(s: T.PsString | string): T.PsString | string {
|
||||||
removeAccents(s.f),
|
removeAccents(s.f),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return s.replace(/á/g, "a")
|
return s.replace(/á|é|í|ó|ú|Ú/, (match) => {
|
||||||
.replace(/é/g, "e")
|
const r = accentReplacer.find((x) => x.accented === match);
|
||||||
.replace(/í/g, "i")
|
/* istanbul ignore next */
|
||||||
.replace(/ó/g, "o")
|
return r?.vowel || "";
|
||||||
.replace(/ú/g, "u")
|
});
|
||||||
.replace(/Á/g, "A")
|
}
|
||||||
.replace(/Ú/g, "U");
|
|
||||||
|
/**
|
||||||
|
* Determines if a string has any accents on it
|
||||||
|
*
|
||||||
|
* @param s a string of Pashto phonetics
|
||||||
|
*/
|
||||||
|
export function hasAccents(s: string): boolean {
|
||||||
|
return accentReplacer.some((x) => s.includes(x.accented));
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,7 @@ import {
|
||||||
} from "./lib/diacritics";
|
} from "./lib/diacritics";
|
||||||
import {
|
import {
|
||||||
removeAccents,
|
removeAccents,
|
||||||
|
hasAccents,
|
||||||
} from "./lib/accent-helpers";
|
} from "./lib/accent-helpers";
|
||||||
import defaultTextOptions from "./lib/default-text-options";
|
import defaultTextOptions from "./lib/default-text-options";
|
||||||
import * as grammarUnits from "./lib/grammar-units";
|
import * as grammarUnits from "./lib/grammar-units";
|
||||||
|
@ -106,6 +107,7 @@ export {
|
||||||
isInflectionSet,
|
isInflectionSet,
|
||||||
personFromVerbBlockPos,
|
personFromVerbBlockPos,
|
||||||
removeAccents,
|
removeAccents,
|
||||||
|
hasAccents,
|
||||||
// protobuf helpers
|
// protobuf helpers
|
||||||
readDictionary,
|
readDictionary,
|
||||||
writeDictionary,
|
writeDictionary,
|
||||||
|
|
Loading…
Reference in New Issue