1. Krátký přehled objektů
Tyto splitovací funkce Charles Lodera, které jsem modifikoval, jsou důležité, protože nejprve musí dojít k rozdělení veškerého textu na hebrejské slova a na zakomentované části. Tyto funkce nejsou součástí webpacku. Splitování slov se provádí ve funkci transliterate() kde výsledkem je pole array.
Přehled objektů uložených pod indexy 1 až 10, 43 a 44:
Krátký přehled objektů:Index 0: funkce sequence (odkaz na 2. díl manuálu)
- Načte se funkce
sequence
ř. (#111) - volá se
anonymní funkce události onclick() -> transliterate() -> sequence()
/***/ 0:
/***/ (function(module, options, exports) {
/***
* @param {string} text - sequences the text according to SBL Hebrew Font manual
* @returns {string}
*/
module.exports = text => {
let splits = /(?=[\u05D0-\u05F2, \uFB20-\uFB4F])/;
let consonants = /[\u05D0-\u05F2, \uFB20-\uFB4F]/;
let ligature = /[\u05C1-\u05C2]/;
let dagesh = /[\u05BC, \u05BF]/; // includes rafe
let vowels = /[\u05B0-\u05BB, \u05C7]/;
let accents = /[\u0590-\u05AF, \u05BD-\u05BE, \u05C0, \u05C3]/;
// console.log(text.split(splits));
return text.split(splits).map(e => {
if ( comments.checked )
if ( e.charAt(0)=='{' )
return e;
return e.splitSecond().sort((a,b) => {
// since the str is split at consonants, the first a is always const, thus never flip
if(consonants.test(a) ) {return 0}
// if a is anything except a consonant and b is a ligature, then flip
if(!consonants.test(a) && ligature.test(b)){return 1}
if(vowels.test(a) && dagesh.test(b)) {return 1}
if(accents.test(a) && dagesh.test(b)) {return 1}
}).join('');
}).join('');
}- komentář k funkcím .split, splitSecond a .sort
split('') rozdělí slovo na písmena, pak dojde k přemapování pomocí map, které má definovanou vlastní funkci, při které, pokud nejde o komentář, dojde k provedení "třídění" podle definované funkce sort. Zdá se, že javascript narozdíl od bashe a awk neumí načíst hebrejský řetězec ve směru sleva doprava a tak sort() má změnit směr písmen. Zohledňuje přítomnost ligarur, tedy dagešů a teček za šin, které byly přepsány do latinky jako dvouznaková forma: znak+číslice.
- Načte se funkce
Index 1: JQuery
- Načtení knihovny JQuery.
- Načtení knihovny JQuery.
Index 2: funkce heb()
- Funkce heb() exportuje několik funkcí, včetně
transliterate
,sequence
aremove
. Tyto funkce slouží k převodu hebrejských znaků na latinské znaky, sekvencování textu a odstranění určitých prvků ze vstupního textu.
Index 3: funkce transliterate()
- Funkce
transliterate()
slouží k převodu hebrejských znaků na latinské znaky. Přebírá vstupní text a volitelné konfigurační možnosti, rozplituje text na slova, provede analýzu a záměnu slov pomocí testEach() a vrací převedený text.
- Funkce heb() exportuje několik funkcí, včetně
Index 4: funkce titForTat()
- Funkce
titForTat()
nahrazuje hebrejské znaky latinkou ve stylu "tit-for-tat". Přebírá vstupní text a vrací text, ve kterém byly hebrejské znaky nahrazeny příslušnými latinskými znaky.
- Funkce
Index 5: objekt mapy hebChars
- Funkce
hebChars
obsahuje pole - mapu znaků, která popisuje, jak se mají měnit hebrejské znaky na latinku.
- Funkce
Index 6: funkce testEach
- Funkce
testEach
provádí testování na každém slově v poli. Přijímá pole slov a volitelné konfigurační možnosti a vrací výsledek testu pro každé slovo.
- Funkce
Index 7: funkce changeElementSplit()
- Funkce
changeElementSplit()
je alias prochangeElementSubstr()
. Přebírá vstupní text, oddělovač a nový prvek. Následně provádí rozdělení textu pomocí zadaného oddělovače a nahrazuje prvek na daném indexu za nový prvek.
- Funkce
Index 8: funkce remove
- Funkce je zavedena ihned po spuštění programu funkcí
heb()
. - Funkce
remove
slouží k odstranění určitých prvků ze vstupního textu. Přebírá vstupní text a volitelné konfigurační možnosti a vrací text bez odstraněných prvků. - Tato funkce slouží k nahrazování hebrejských znaků v textu
odpovídajícími latinskými znaky na základě určeného mapování. Volitelný
parametr
options
umožňuje specifikovat další nastavení, jako například odstranění samohlásek.
- Funkce je zavedena ihned po spuštění programu funkcí
Index 9: pole s kantilací hebCharsRC
- Pole
hebCharsRC
obsahuje kantilaci hebrejských znaků v podobě mapy znaků. Toto pole je používáno v rámci skriptu pro kantilaci.
- Pole
Index 10: pole s kantilací hebCharsRV
- Pole
hebCharsRV
obsahuje kantilaci hebrejských znaků bez samohlásek v podobě mapy znaků. Toto pole je používáno v rámci skriptu pro kantilaci.
- Pole
Index 43: funkce pro modul
- Funkce pod indexem 43 slouží k vyžádání modulu s indexem 44. Jejím účelem je získat příslušný modul pro konfiguraci skriptu.
Index 44: konfigurace a event listener
- Funkce se zavede jako událost do knihovny jQuery a je spouštěna v reakci na kliknutí uživatele na tlačítko.
- Funkce pod indexem 44 slouží k přípravě konfigurace skriptu. Tato funkce je vyžadována funkcí pod indexem 43 pro získání konfiguračních informací.
- Funkce se zavede jako událost do knihovny jQuery a je spouštěna v reakci na kliknutí uživatele na tlačítko.
2. Krátký přehled volání
Přehled volání funkcí v rámci programu:
- Začátek programu
- Volání funkce
heb()
- Funkce
heb()
načte potřebné moduly (včetnětransliterate
,sequence
, aremove
) a exportuje je. - Není zde žádné volání dalších funkcí.
- Funkce
- Zavedení události do knihovny jQuery
- Funkce se zavede jako událost do knihovny jQuery.
- Událost je spouštěna v reakci na kliknutí uživatele na tlačítko.
- Tímto způsobem se umožní spuštění programu po kliknutí na tlačítko.
- Obslužná funkce události (kliknutí na tlačítko, spustí se fnc index )
- Funkce přijímá vstupní parametry a provádí následující operace:
- Načte hodnoty různých prvků na stránce (qametsQatan, hebText, hashem, uppercase_tet, remove_border_alef, uppercase, comments, alphanum, wawholem, lang).
- Volá funkci
transliterate()
s předanými parametry (hebText, qametsQatan, lang, uppercase_tet, remove_border_alef, wawholem, uppercase, comments, alphanum). - Zobrazuje převedený text ve výstupním poli:
$('#output').val(transText)
.
- Podmíněné volání funkcí
text.splitAndReplaceBraces()
a následně
newSeq = sequence(modifiedText, options)
z funkce
transliterate()
- Volání funkce
titForTat()
z funkcetransliterate()
na ř. #2010 -> #2025- Funkce
titForTat()
nahradí znaky za latinku.
- Nahrazuje hebrejské znaky latinkou ve stylu "tit-for-tat".
- Vrací text v latince.
- Funkce
- Volání funce
.split(' ')
nebo.splitFirst(' ')
a výsledekem je polearray
. - Volání funkce
testEach
transliterate()
- Po provedení .split řetězce v latince se provede
testEach(array, options)
- Volání dalších pomocných funkcí (pokud je používají)
- Funkce
remove
,hebChars
,hebCharsRC
,hebCharsRV
, atd. - Tyto funkce provádějí další operace, jako testování slov, sekvencování textu, odstraňování prvků a definování mapy znaků pro převod.
- Funkce
- Konec programu
Toto je zjednodušený přehled volání funkcí v rámci programu. Skutečný call stack a postup volání funkcí může být komplexnější v závislosti na způsobu použití a interakcí mezi funkcemi.
3. Podrobnější přehled volání funkcí v rámci programu:
- Začátek programu
- Načtení modulu s indexem 2 (
heb()
)- Exportované funkce:
transliterate
,sequence
,remove
- Není zde žádné volání dalších funkcí.
- Exportované funkce:
- Načtení modulu s indexem 3 (
transliterate()
)- Exportovaná funkce
transliterate
- Proměnné:
newSeq
modifiedText
titTat
(výsledek volání funkcetitForTat(newSeq)
)array
(jednotlivá slova v latince)modArray
(výsledek volání funkcetestEach(array, options)
)transliteration
(výsledek volánímodArray.join(' ')
pro spojení transliterovaných slov do řetězce)
- Funkce
transliterate()
vrací proměnnoutransliteration
. - Provádí přípravu proměnných a konstant a provádí převod hebrejských znaků na latinské znaky.
- Pokud jsou v textu přítomny komentáře nebo čísla, odstraňuje z textu složené závorky.
- Exportovaná funkce
- Načtení modulu s indexem 4 (
titForTat
)- Exportovaná funkce
titForTat
- Proměnná
hebChars
(obsahuje mapu znaků pro převod hebrejských znaků na latinské znaky ve stylu "tit-for-tat") - Funkce
titForTat()
nahrazuje hebrejské znaky v textu latinskými znaky podle mapyhebChars
.
- Exportovaná funkce
- Načtení modulu s indexem 6 (
testEach
)- Exportovaná funkce
testEach
- Další operace prováděné touto funkcí pro testování slov.
- Exportovaná funkce
- Načtení modulu s indexem 8 (
hebChars
)- Exportované proměnné
hebCharsRC
(pole s kantilací) ahebCharsRV
(pole s kantilací bez samohlásek).
- Exportované proměnné
- Načtení modulu s indexem 7 (
changeElementSplit
)- Exportované funkce:
changeElementSplit
- provádí změnu prvků v řetězci nahrazením daného oddělovačechangeElementSubstr
- provádí změnu prvku v řetězci na zadaném indexu nahrazením znaku
- Exportované funkce:
- Načtení modulu s indexem 9 (
hebcharsRC
)- Exportované pole s kantilací
hebcharsRC
- Exportované pole s kantilací
- Načtení modulu s indexem 10 (
hebcharsRV
)- Exportované pole s kantilací bez samohlásek
hebcharsRV
- Exportované pole s kantilací bez samohlásek
- Načtení modulu s indexem 43
- Další modul, který není zde podrobně popsán.
- Načtení modulu s indexem 44
- Obslužná funkce události (kliknutí na tlačítko)
- Funkce přijímá vstupní parametry a provádí následující operace:
- Načte hodnoty různých prvků na stránce (
qametsQatan
,hebText
,hashem
,uppercase_tet
,remove_border_alef
,uppercase
,comments
,alphanum
,wawholem
,lang
). - Volá funkci
transliterate()
s předanými parametry (hebText
,qametsQatan
,lang
,uppercase_tet
,remove_border_alef
,wawholem
,uppercase
,comments
,alphanum
). - Zobrazuje převedený text ve výstupním poli:
$('#output').val(transText)
.
- Načte hodnoty různých prvků na stránce (
- Konec programu
Toto je podrobnější přehled volání funkcí a načítání modulů v rámci programu.
Cesta volání funkcí
Index 3: funkce transliterate()
- Call path: heb() -> transliterate() -> titForTat()
Index 4: funkce titForTat()
- Call path: transliterate() -> titForTat()
Více detailů
transliterate()
Tento kód definuje funkci transliterate
, která přijímá text a volitelné možnosti jako parametry. Funkce provádí transliteraci textu z hebrejštiny do latinky. Zde je přehled možností, které mohou být předány funkcí:
isSeqeunced
(výchozí hodnota:true
): Pokud je nastaveno natrue
, funkce sekvencuje text podle manuálu pro písmo SBL Hebrew Font.qametsQatan
(výchozí hodnota:false
): Kontroluje přítomnost Qamets Qatan (specifického znaku v hebrejštině).lang
(výchozí hodnota:lang
): Specifikuje cílový jazyk transliterace.uppercase_tet
(výchozí hodnota:true
): Rozlišuje mezi znaky thav (t) a tet (T).remove_border_alef
(výchozí hodnota:remove_border_alef
): Odstraňuje mezery na okraji znaku alef.wawholem
(výchozí hodnota:wawholem
): Nastavuje specifické chování pro kombinaci znaků "waw" a "holem".uppercase
(výchozí hodnota:true
): Rozlišuje nepodporované znaky pro německý, francouzský a španělský jazyk.comments
(výchozí hodnota:true
): Používá složené závorky k vynechání alfanumerických znaků.alphanum
(výchozí hodnota:true
): Automaticky přidává a odebírá složené závorky pro účely komentářů.
V kódu se také objevuje volání funkcí sequence
, titForTat
a testEach
, které jsou pravděpodobně importovány z jiných modulů.
Při zavolání funkce transliterate
se provádí transliterace textu z hebrejštiny na latinku titTat = titForTat(newSeq)
, přičemž se uplatňují nastavené možnosti. Funkce vrací výslednou transliteraci textu. Následně se volá titTat.split
nebo
titTat.splitFirst
, které rozdělí text latinky na slova. Nakonec se provedou testy a záměny pomocí funkce testEach(pole array, objekt options)
. Výsledkem je modArray
.
titForTat() #2025
Tento kód definuje funkci titForTat
, která nahrazuje hebrejské znaky latinskými znaky v tit-for-tat (jeden za jeden) způsobem. Funkce přijímá text jako vstup a vrací text s nahrazenými znaky.
Kód provádí import modulu hebChars
, který obsahuje mapování mezi hebrejskými a latinskými znaky
Existují dvě verze implementace funkce titForTat
. První verze (zastaralá) je zakomentována a používá regulární výraz pro nahrazení znaků. Druhá (aktuální) verze používá metodu map
pro každý znak textu a provádí nahrazení pomocí objektu hebChars
. Výsledek je pak spojen zpět do jednoho řetězce pomocí metody reduce
.
Kód nahrazuje hebrejské znaky v textu pomocí mapování RC
nebo hebCharsRV
v závislosti na nastavení přepínače options.removeVowels
. Pokud je options.removeVowels
nastaveno na false
, používá se mapování RC
, jinak se používá mapování hebCharsRV
. Nahrazení se provádí pomocí metody replace()
a regulárních výrazů.
V kódu [...text]
tři tečky představují rozložení textu na jednotlivé znaky pomocí operátoru rozložení (spread operator). Tento operátor umožňuje rozložit iterovatelný objekt, jako je řetězec, pole nebo jiná kolekce, na jednotlivé prvky.
V kontextu kódu titForTat
, [...text]
rozloží vstupní text na jednotlivé znaky a vytvoří z nich pole. Tím se umožní aplikovat operace na každý znak zvlášť, jako je například kontrola, zda je znak přítomen v mapování hebChars
a případné nahrazení.
Následně je použita metoda map()
na tomto poli znaků. Metoda map()
iteruje přes každý prvek pole a aplikuje na něj danou funkci. V případě titForTat
je funkce zapsána jako char => char in hebChars ? hebChars[char] : char
. Tato funkce zkontroluje, zda je znak přítomen v mapování hebChars
. Pokud ano, použije odpovídající nahrazení z hebChars
, jinak ponechá znak beze změny.
Celkově tedy [...text].map(char => char in hebChars ? hebChars[char] : char)
aplikuje operaci na každý znak vstupního textu, který je rozložen na pole. Následně je výsledek těchto operací uložen ve formě nového pole, které obsahuje nahrazené znaky.
* * *
[titForTat]
využívá tu funkci (#2723, index funkce: 8)
module.exports = (text, options = {'removeVowels':false}) => {
if (!options.removeVowels) {
return text.replace(/[\u0591-\u05F4, \uFB1D-\uFB4F]/g, i => RC[i]);
} else {
return text.replace(/[\u0591-\u05F4, \uFB1D-\uFB4F]/g, i => hebCharsRV[i]);
}
}
Funkce indexu 43
Tento kód je relativně jednoduchý. Definuje modul, který exportuje výsledek zavolání funkce __webpack_require__(44)
.
Modul __webpack_require__
je součástí systému sestavování modulů Webpack. Tento systém slouží k sestavení a balení JavaScriptových modulů do jediného souboru pro použití ve webových aplikacích.
Funkce s indexem 44 - konfigurace
Kód, je částí upraveného modulu, není součástí původního kodu Charles Lodera, je to modifikovaná verze. Exportuje jednu funkci. Zde je popis jednotlivých částí kódu:
var $ = __webpack_require__(1);
: Importuje modul$
(pravděpodobně knihovnu jQuery) ze závislosti s identifikátorem1
.var heb = __webpack_require__(2);
: Importuje modulheb
ze závislosti s identifikátorem2
.var transliterate = heb.transliterate;
: Přiřazuje funkcitransliterate
z moduluheb
do proměnnétransliterate
.
Následuje event listener #2058 $('#input_button').click(function () {});
$('#input_button').click() pro kliknutí na prvek s ID input_button
. Když se stane kliknutí, spustí se anonymní funkce:
var qametsQatan = $('#qametsQatan').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDqametsQatan
a uloží ji do proměnnéqametsQatan
.var hebText = $('#input').val();
: Získá hodnotu vstupního pole s IDinput
a uloží ji do proměnnéhebText
.var hashem = $('#hashem').val();
: Získá hodnotu prvku s IDhashem
a uloží ji do proměnnéhashem
.var uppercase_tet = $('#uppercase_tet').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDuppercase_tet
a uloží ji do proměnnéuppercase_tet
.var remove_border_alef = $('#remove_alef').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDremove_alef
a uloží ji do proměnnéremove_border_alef
.var uppercase = $('#uppercase').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDuppercase
a uloží ji do proměnnéuppercase
.var comments = $('#comments').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDcomments
a uloží ji do proměnnécomments
.var alphanum = $('#alphanum').prop('checked');
: Získá hodnotu vlastnostichecked
prvku s IDalphanum
a uloží ji do proměnnéalphanum
.var wawholem = 0;
: Inicializuje proměnnouwawholem
s hodnotou 0.- Podmínky pro nastavení hodnoty proměnné
wawholem
na základě stavu příslušných prvků s IDwawholem2
awawholem3
. var lang = 0;
: Inicializuje proměnnoulang
s hodnotou 0.- Podmínky pro nastavení hodnoty proměnné
lang
na základě stavu příslušných prvků s IDlang2
,lang3
,lang4
,lang5
alang6
. var transText = transliterate(hebText, { 'isSeqeunced': true, 'qametsQatan': qametsQatan, 'lang': lang, 'uppercase_tet': uppercase_tet, 'remove_border_alef': remove_border_alef, 'wawholem': wawholem, 'uppercase': uppercase, 'comments': comments, 'alphanum': alphanum });
: Volá funkcitransliterate
s předanými parametry a uloží její návratovou hodnotu do proměnnétransText
.$('#output').val(transText);
: Nastavuje hodnotu výstupního pole s IDoutput
na hodnotutransText
.
Celý kód je svázán s událostí kliknutí na prvek s ID input_button
a provádí transliteraci textu na základě zadaných voleb. Výsledný text je pak zobrazen ve výstupním poli s ID output
.
hebChars
Kód exportuje objekt obsahující mapování hebrejských znaků na odpovídající latinské znaky.
- Objekt obsahuje klíče a hodnoty, kde klíče jsou hebrejské znaky a hodnoty jsou odpovídající latinské znaky.
- Například
'ב':'b'
znamená, že hebrejský znak bet (ב) je nahrazen latinským znakem b. - Mapování obsahuje jak jednotlivé znaky, tak i ligatury a kombinace znaků, které se v hebrejštině používají.
- V kódu jsou také komentáře s popisem jednotlivých hebrejských znaků.
Uvnitř funkce titForTat se pracuje s mapou hebChars takto:
titForTat: text => [...text].map(char => char in hebChars ? hebChars[char] : char) .reduce((a, c) => a + c) })
Nahrazuje hebrejské znaky v textu odpovídajícími latinskými znaky na základě mapování definovaného v objektu hebChars
.
text => [...text]
převede vstupní text na pole jednotlivých znaků. Tím se text rozdělí na samostatné znaky, které mohou být zpracovány nezávisle..map(char => char in hebChars ? hebChars[char] : char)
prochází každý znak v poli a používá ternární operátor pro zjištění, zda je znak obsažen v objektuhebChars
. Pokud je znak v mapování, použije se odpovídající latinský znak zhebChars
, jinak se ponechá původní znak..reduce((a, c) => a + c)
sloučí všechny znaky zpět do jednoho řetězce. Tím se získá konečný výsledek nahrazeného textu.
testEach() - transformace
Funkce testEach
hraje klíčovou roli, protože slouží k testování a transformaci různých sekvencí znaků v poli array
. Jejím úkolem je iterovat přes všechny prvky pole a aplikovat na ně testy a transformace.
Funkce testEach
přijímá několik parametrů, včetně pole array
, ve kterém jsou uloženy prvky, které mají být testovány a transformovány. Další parametry jsou v podobě funkcí, které provádějí konkrétní testy a transformace na jednotlivých prvcích.
Ve funkci testEach
se postupně aplikují různé testy a transformace na jednotlivé prvky pole array
. Jednou z funkcí, kterou funkce testEach
využívá, je changeElementSplit()
(alias changeElementSubstr()
), která přijímá vstupní řetězec, rozdělovač a spojovací řetězec. Tato funkce provede transformaci prvku pole array
pomocí rozdělení vstupního řetězce na části na základě rozdělovače a následném spojení těchto částí s použitím spojovacího řetězce.
Celkově řečeno, funkce testEach
je odpovědná za provedení různých testů a transformací na prvky pole array
, včetně použití funkce changeElementSplit()
, aby dosáhla požadovaných změn v jednotlivých prvcích pole.
Funkce testEach()
je definována jako anonymní funkce, která bere dva parametry: array
a options
. Tato funkce používá několik podfunkcí, které jsou importovány ze souboru s cestou __webpack_require__(7)
.
V této funkci je provedeno několik testů a transformací na každý prvek pole array
. Zde je stručný přehled těchto testů a transformací:
Pro každý prvek
element
v poliarray
:- Pokud
element
obsahuje znak 'p', je provedena transformace pomocí funkcechangeElementSplit()
, která nahrazuje 'p' za 'f'. - Pokud
element
obsahuje znak 'k', je provedena transformace pomocí funkcechangeElementSplit()
, která nahrazuje 'k' za '[kh]'. - Pokud je zapnutý přepínač
comments
neboalphanum
aelement
začíná '{', je přerušena iterace a přejde se na další prvek.
- Pokud
Testy na jednotlivé znaky:
- Testuje se výskyt znaku '8' (shin-dot), a pokud je nalezen, je provedena transformace pomocí funkce
changeElementSplit()
, která odstraní tento znak. - Testuje se výskyt znaku '7' (sin-dot), a pokud je nalezen, je provedena transformace pomocí funkce
changeElementSplit()
, která tento znak nahradí za 's'. - Testuje se výskyt sekvencí 'iy' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'iy' nahradí za 'í'. - Testuje se výskyt sekvencí 'éy' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'éy' nahradí za 'é'. - Testuje se výskyt sekvencí 'ey' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'ey' nahradí za 'é'. - Testuje se výskyt sekvencí 'wó' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'wó' nahradí za 'ó'. Dále se testuje, zda je tento znak součástí slova, které končí na 'w', a pokud je nalezena shoda, je provedena další transformace pomocíchangeElementSplit()
, která 'wó' nahradí za 'ô'. - Testuje se výskyt sekvencí 'ów' (nebo 'ôw') následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'ów' (nebo 'ôw') nahradí za 'ů'.
Další testy a transformace:
- Testuje se výskyt sekvencí 'sh' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'sh' nahradí za 'š'. - Testuje se výskyt sekvencí 'ch' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'ch' nahradí za 'č'. - Testuje se výskyt sekvencí 'gh' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'gh' nahradí za 'ǧ'. - Testuje se výskyt sekvencí 'ng' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'ng' nahradí za 'ŋ'. - Testuje se výskyt sekvencí 'th' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'th' nahradí za 'θ'. - Testuje se výskyt sekvencí 'ph' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
changeElementSplit()
, která 'ph' nahradí za 'φ'.
- Testuje se výskyt sekvencí 'sh' následovaných některými znaky, a pokud je nalezena shoda, je provedena transformace pomocí funkce
Testy a transformace pro čísla:
- Pokud je zapnutý přepínač
comments
neboalphanum
aelement
začíná '{', je přerušena iterace a přejde se na další prvek. - Testuje se výskyt znaků '0' až '9' a pokud je nějaké číslo nalezeno, je provedena transformace pomocí funkce
changeElementSplit()
, která odstraní tato čísla.
- Pokud je zapnutý přepínač
Na konci funkce je vráceno pole
array
, které prošlo všemi testy a transformacemi.- Testuje se výskyt znaku '8' (shin-dot), a pokud je nalezen, je provedena transformace pomocí funkce
changeElementSplit()
Funkce changeElementSplit()
(alias changeElementSubstr()
) v rámci celého programu slouží k transformaci vstupního řetězce. Tato funkce umožňuje rozdělit řetězec na části na základě specifikovaného rozdělovače a následně tyto části spojit pomocí spojovacího řetězce.
Pomocí funkce changeElementSplit()
je možné provádět různé úpravy řetězců, například nahrazení určitého podřetězce jiným podřetězcem nebo rozdělení řetězce na části a jejich přeformátování. Tímto způsobem může být dosaženo požadovaného výsledku transformace řetězce.
Funkce changeElementSplit()
(alias changeElementSubstr()
) je součástí objektu, který je exportován modulem. Tato funkce slouží k transformaci vstupního řetězce input
pomocí rozdělení řetězce na části na základě specifikovaného rozdělovače (split
) a následném spojení těchto částí s použitím spojovacího řetězce (join
).
Funkce changeElementSplit()
má následující parametry:
input
: Řetězec, který má být transformován.split
: Řetězec, který slouží jako rozdělovač. Řetězecinput
je rozdělen na části na místech, kde se vyskytuje tento rozdělovač.join
: Řetězec, který slouží jako spojovací prvek. Rozdělené části řetězceinput
jsou spojeny za použití tohoto spojovacího řetězce.
Funkce changeElementSplit()
používá metody split()
a join()
nad řetězcem input
, které jsou vestavěné funkcionality v jazyce JavaScript. Metoda split()
rozdělí řetězec na části na základě zadaného rozdělovače a vrátí pole obsahující tyto části. Metoda join()
spojí prvky pole do jednoho řetězce, přičemž odděluje jednotlivé prvky spojovacím řetězcem.
Je také důležité zmínit, že funkce changeElementSplit()
je také dostupná pod alternativním názvem changeElementSubstr()
, což je zřejmě záměrné, aby byla zajištěna kompatibilita s jiným kódem nebo pro jednodušší použití v různých scénářích.
Remove()
Kód, který jste poskytl (kód č. 8), se zabývá odstraněním kantilace. Funkce remove()
je exportována a slouží k odstranění kantilačních značek z textu.
Funkce remove()
přijímá dva parametry: text
a volitelný objekt options
. text
je vstupní text, ze kterého se mají odstranit kantilační značky. options
je objekt s možnostmi, přičemž jedna z možností je removeVowels
, která určuje, zda se mají odstranit také samohlásky spolu s kantilačními značkami (výchozí hodnota je false
).
Samotná funkce provádí náhradu kantilačních značek v textu pomocí regulárního výrazu a funkce zvané replace()
. V závislosti na hodnotě removeVowels
jsou použity různé mapovací tabulky (hebCharsRC
nebo hebCharsRV
), které obsahují přepisy znaků s kantilačními značkami. Tímto způsobem jsou kantilační značky nahrazeny odpovídajícími znaky bez kantilace.
Celkově lze tedy říci, že role funkce remove()
je odstranit kantilační značky z textu a případně i samohlásky, pokud je taková možnost aktivována volbou removeVowels
.
hebCharsRC()
Funkce hebCharsRC()
je modul, který exportuje objekt obsahující mapování mezi kantilačními znaky a jejich odpovídajícími znaky bez kantilace. Tento objekt je použit v rámci funkce remove()
, která je definována v kódu č. 8.
V rámci funkce remove()
se volá metoda replace()
na vstupním textu. Regulární výraz /[\u0591-\u05F4, \uFB1D-\uFB4F]/g
vyhledává všechny kantilační znaky ve vstupním textu. Pokud volba options.removeVowels
není nastavena na true
, používá se objekt hebCharsRC
(který je vytvořený funkcí hebCharsRC()
) k nahrazení těchto znaků odpovídajícími znaky bez kantilace. Pokud je volba options.removeVowels
nastavena na true
, používá se objekt hebCharsRV
(který nebyl v kódu uveden) k nahrazení kantilačních znaků a také samotných samohlásek.
Takže funkce hebCharsRC()
poskytuje mapování mezi kantilačními znaky a odpovídajícími znaky bez kantilace, které je používáno ve funkci remove()
k odstranění kantilace z textu.
Žádné komentáře:
Okomentovat