Skip to content

Commit

Permalink
feat: adopt the official isv code
Browse files Browse the repository at this point in the history
https://iso639-3.sil.org/code/isv

BREAKING CHANGE: Use isv code instead of art-x-interslv
  • Loading branch information
noomorph committed May 6, 2024
1 parent 6541042 commit 43578ad
Show file tree
Hide file tree
Showing 8 changed files with 138 additions and 146 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Reference is automatically generated at: <https://medzuslovjansky.github.io/js-u

### Constants

* `InterslavicBCP47` - primary BCP 47 codes for Interslavic like `art-x-interslv` and its variants per used alphabets.
* `InterslavicBCP47` - primary BCP 47 codes for Interslavic like `isv` and its variants per used alphabets.
* `FlavorisationBCP47` - all possible BCP 47 codes for Interslavic with flavorisations applied like Northern, Southern, Slovianto, etc.
* `Glagolitic` - collection of named constants for Glagolitic letters, e.g. `Glagolitic.AZU`, `Glagolitic.BUKY`, etc.

Expand Down
2 changes: 1 addition & 1 deletion src/__utils__/html/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ export function get<T>(obj: T): (...path: any[]) => string | null {
}

function normalize(string: string | null): string | null {
return string && transliterate(string, 'art-Latn-x-interslv-etym');
return string && transliterate(string, 'isv-Latn-x-etymolog');
}
42 changes: 21 additions & 21 deletions src/constants/bcp47.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
export const InterslavicBCP47 = {
Generic: 'art-x-interslv',
Latin: 'art-Latn-x-interslv',
Cyrillic: 'art-Cyrl-x-interslv',
Glagolitic: 'art-Glag-x-interslv',
IPA: 'art-x-interslv-fonipa',
Generic: 'isv',
Latin: 'isv-Latn',
Cyrillic: 'isv-Cyrl',
Glagolitic: 'isv-Glag',
IPA: 'isv-x-fonipa',
} as const;

export type InterslavicBCP47Code =
(typeof InterslavicBCP47)[keyof typeof InterslavicBCP47];

export const FlavorisationBCP47 = {
...InterslavicBCP47,
ASCII: 'art-Latn-x-interslv-ascii',
LatinEtymological: 'art-Latn-x-interslv-etym',
LatinNorthern: 'art-Latn-x-interslv-northern',
LatinSlovianto: 'art-Latn-x-interslv-sloviant',
LatinSouthern: 'art-Latn-x-interslv-southern',
Polish: 'art-Latn-PL-x-interslv',
GlagoliticEtymological: 'art-Glag-x-interslv-etym',
GlagoliticNorthern: 'art-Glag-x-interslv-northern',
GlagoliticSlovianto: 'art-Glag-x-interslv-sloviant',
GlagoliticSouthern: 'art-Glag-x-interslv-southern',
CyrillicEtymological: 'art-Cyrl-x-interslv-etym',
CyrillicIotated: 'art-Cyrl-x-interslv-iotated',
CyrillicIotatedExtended: 'art-Cyrl-x-interslv-iotated-ext',
CyrillicNorthern: 'art-Cyrl-x-interslv-northern',
CyrillicSlovianto: 'art-Cyrl-x-interslv-sloviant',
CyrillicSouthern: 'art-Cyrl-x-interslv-southern',
ASCII: 'isv-Latn-x-ascii',
LatinEtymological: 'isv-Latn-x-etymolog',
LatinNorthern: 'isv-Latn-x-northern',
LatinSlovianto: 'isv-Latn-x-sloviant',
LatinSouthern: 'isv-Latn-x-southern',
Polish: 'isv-Latn-PL',
GlagoliticEtymological: 'isv-Glag-x-etymolog',
GlagoliticNorthern: 'isv-Glag-x-northern',
GlagoliticSlovianto: 'isv-Glag-x-sloviant',
GlagoliticSouthern: 'isv-Glag-x-southern',
CyrillicEtymological: 'isv-Cyrl-x-etymolog',
CyrillicIotated: 'isv-Cyrl-x-iotated',
CyrillicIotatedExtended: 'isv-Cyrl-x-iotated-ext',
CyrillicNorthern: 'isv-Cyrl-x-northern',
CyrillicSlovianto: 'isv-Cyrl-x-sloviant',
CyrillicSouthern: 'isv-Cyrl-x-southern',
} as const;

export type FlavorisationBCP47Code =
Expand Down
2 changes: 1 addition & 1 deletion src/numeral/declensionNumeral.ts
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,6 @@ export function declensionNumeral(
}

function getLatin(word: string): string {
const latin = transliterate(word, 'art-Latn-x-interslv');
const latin = transliterate(word, 'isv-Latn');
return stripDiacritics(latin);
}
2 changes: 1 addition & 1 deletion src/pronoun/declensionPronoun.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export function declensionPronoun(
return null;
}

const word = stripDiacritics(transliterate(rawWord, 'art-Latn-x-interslv'));
const word = stripDiacritics(transliterate(rawWord, 'isv-Latn'));
if (pronounType === 'personal' || pronounType === 'reflexive') {
if (FIRST_PERSON.includes(word)) {
return {
Expand Down
132 changes: 66 additions & 66 deletions src/transliterate/__snapshots__/index.test.ts.snap

Large diffs are not rendered by default.

60 changes: 26 additions & 34 deletions src/transliterate/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,27 @@ const cyrillic = `\

describe('transliterate to', () => {
describe.each([
['art-Cyrl-x-interslv'],
['art-Cyrl-x-interslv-etym'],
['art-Cyrl-x-interslv-iotated'],
['art-Cyrl-x-interslv-iotated-ext'],
['art-Cyrl-x-interslv-northern'],
['art-Cyrl-x-interslv-sloviant'],
['art-Cyrl-x-interslv-southern'],
['art-Glag-x-interslv'],
['art-Glag-x-interslv-etym'],
['art-Glag-x-interslv-sloviant'],
['art-Glag-x-interslv-southern'],
['art-Glag-x-interslv-northern'],
['art-Latn-PL-x-interslv'],
['art-Latn-x-interslv'],
['art-Latn-x-interslv-ascii'],
['art-Latn-x-interslv-etym'],
['art-Latn-x-interslv-northern'],
['art-Latn-x-interslv-sloviant'],
['art-Latn-x-interslv-southern'],
['art-x-interslv-fonipa'],
['art-x-interslv'],
['isv-Cyrl'],
['isv-Cyrl-x-etymolog'],
['isv-Cyrl-x-iotated'],
['isv-Cyrl-x-iotated-ext'],
['isv-Cyrl-x-northern'],
['isv-Cyrl-x-sloviant'],
['isv-Cyrl-x-southern'],
['isv-Glag'],
['isv-Glag-x-etymolog'],
['isv-Glag-x-sloviant'],
['isv-Glag-x-southern'],
['isv-Glag-x-northern'],
['isv-Latn'],
['isv-Latn-PL'],
['isv-Latn-x-ascii'],
['isv-Latn-x-etymolog'],
['isv-Latn-x-northern'],
['isv-Latn-x-sloviant'],
['isv-Latn-x-southern'],
['isv-x-fonipa'],
['isv'],
] as const)('%j', (bcp47) => {
test('a latin text', () => {
expect(transliterate(latin, bcp47)).toMatchSnapshot();
Expand All @@ -45,11 +45,7 @@ describe('transliterate to', () => {
});
});

test.each([
['art-Latn-x-interslv'],
['art-Cyrl-x-interslv'],
['art-Glag-x-interslv'],
] as const)(
test.each([['isv-Latn'], ['isv-Cyrl'], ['isv-Glag']] as const)(
'should work equally from Latin and Cyrillic scripts to %j',
(bcp47) => {
const latn = transliterate(latin, bcp47);
Expand All @@ -62,15 +58,11 @@ describe('transliterate to', () => {
test.failing(
'double transliteration should work equally from Latin and Cyrillic scripts',
() => {
const latn2cyrl = transliterate(latin, 'art-Cyrl-x-interslv');
const cyrl2latn = transliterate(cyrillic, 'art-Latn-x-interslv');
const latn2cyrl = transliterate(latin, 'isv-Cyrl');
const cyrl2latn = transliterate(cyrillic, 'isv-Latn');

expect(transliterate(latn2cyrl, 'art-Latn-x-interslv')).toEqual(
cyrl2latn,
);
expect(transliterate(cyrl2latn, 'art-Cyrl-x-interslv')).toEqual(
latn2cyrl,
);
expect(transliterate(latn2cyrl, 'isv-Latn')).toEqual(cyrl2latn);
expect(transliterate(cyrl2latn, 'isv-Cyrl')).toEqual(latn2cyrl);
},
);

Expand Down
42 changes: 21 additions & 21 deletions src/transliterate/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,127 +11,127 @@ export default function transliterate(
lang: FlavorisationBCP47Code,
): string {
switch (lang) {
case 'art-Latn-x-interslv':
case 'isv-Latn':
return _transliterate(
text,
TransliterationType.Latin,
FlavorizationType.Standard,
);
case 'art-Cyrl-x-interslv':
case 'isv-Cyrl':
return _transliterate(
text,
TransliterationType.StandardCyrillic,
FlavorizationType.Standard,
);
case 'art-Glag-x-interslv':
case 'isv-Glag':
return _transliterate(
text,
TransliterationType.Glagolitic,
FlavorizationType.Standard,
);
case 'art-x-interslv-fonipa':
case 'isv-x-fonipa':
return _transliterate(
text,
TransliterationType.IPA,
FlavorizationType.Etymological,
);
case 'art-Latn-x-interslv-etym':
case 'isv-Latn-x-etymolog':
return _transliterate(
text,
TransliterationType.Latin,
FlavorizationType.Etymological,
);
case 'art-Cyrl-x-interslv-etym':
case 'isv-Cyrl-x-etymolog':
return _transliterate(
text,
TransliterationType.StandardCyrillic,
FlavorizationType.Etymological,
);
case 'art-Glag-x-interslv-etym':
case 'isv-Glag-x-etymolog':
return _transliterate(
text,
TransliterationType.Glagolitic,
FlavorizationType.Etymological,
);
case 'art-Cyrl-x-interslv-iotated':
case 'isv-Cyrl-x-iotated':
return _transliterate(
text,
TransliterationType.TraditionalIotatedCyrillic,
FlavorizationType.Standard,
);
case 'art-Cyrl-x-interslv-iotated-ext':
case 'isv-Cyrl-x-iotated-ext':
return _transliterate(
text,
TransliterationType.TraditionalIotatedCyrillic,
FlavorizationType.CyrillicExtended,
);
case 'art-Cyrl-x-interslv-northern':
case 'isv-Cyrl-x-northern':
return _transliterate(
text,
TransliterationType.StandardCyrillic,
FlavorizationType.Northern,
);
case 'art-Cyrl-x-interslv-sloviant':
case 'isv-Cyrl-x-sloviant':
return _transliterate(
text,
TransliterationType.StandardCyrillic,
FlavorizationType.Slovianto,
);
case 'art-Cyrl-x-interslv-southern':
case 'isv-Cyrl-x-southern':
return _transliterate(
text,
TransliterationType.StandardCyrillic,
FlavorizationType.Southern,
);
case 'art-Latn-PL-x-interslv':
case 'isv-Latn-PL':
return _transliterate(
text,
TransliterationType.Polish,
FlavorizationType.Etymological,
);
case 'art-Latn-x-interslv-ascii':
case 'isv-Latn-x-ascii':
return _transliterate(
text,
TransliterationType.ASCII,
FlavorizationType.Standard,
);
case 'art-Latn-x-interslv-northern':
case 'isv-Latn-x-northern':
return _transliterate(
text,
TransliterationType.Latin,
FlavorizationType.Northern,
);
case 'art-Latn-x-interslv-sloviant':
case 'isv-Latn-x-sloviant':
return _transliterate(
text,
TransliterationType.Latin,
FlavorizationType.Slovianto,
);
case 'art-Latn-x-interslv-southern':
case 'isv-Latn-x-southern':
return _transliterate(
text,
TransliterationType.Latin,
FlavorizationType.Southern,
);
case 'art-Glag-x-interslv-northern':
case 'isv-Glag-x-northern':
return _transliterate(
text,
TransliterationType.Glagolitic,
FlavorizationType.Northern,
);
case 'art-Glag-x-interslv-southern':
case 'isv-Glag-x-southern':
return _transliterate(
text,
TransliterationType.Glagolitic,
FlavorizationType.Southern,
);
case 'art-Glag-x-interslv-sloviant':
case 'isv-Glag-x-sloviant':
return _transliterate(
text,
TransliterationType.Glagolitic,
FlavorizationType.Slovianto,
);
case 'art-x-interslv':
case 'isv':
return text;
default:
throw new TypeError(`Unsupported IETF BCP47 tag: ${lang}`);
Expand Down

0 comments on commit 43578ad

Please sign in to comment.