Tomemos como ejemplo los primeros versos del Génesis, en hebreo:
בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃
וְהָאָ֗רֶץ הָיְתָ֥ה תֹ֙הוּ֙ וָבֹ֔הוּ וְחֹ֖שֶׁךְ עַל-פְּנֵ֣י תְה֑וֹם וְר֣וּחַ אֱלֹהִ֔ים מְרַחֶ֖פֶת עַל-פְּנֵ֥י הַמָּֽיִם׃
וַיֹּ֥אמֶר אֱלֹהִ֖ים יְהִ֣י א֑וֹר וַֽיְהִי-אֽוֹר׃
וַיַּ֧רְא אֱלֹהִ֛ים אֶת-הָא֖וֹר כִּי-ט֑וֹב וַיַּבְדֵּ֣ל אֱלֹהִ֔ים בֵּ֥ין הָא֖וֹר וּבֵ֥ין הַחֹֽשֶׁךְ׃
וַיִּקְרָ֨א אֱלֹהִ֤ים ׀ לָאוֹר֙ י֔וֹם וְלַחֹ֖שֶׁךְ קָ֣רָא לָ֑יְלָה וַֽיְהִי-עֶ֥רֶב וַֽיְהִי-בֹ֖קֶר י֥וֹם אֶחָֽד׃ (פ)
(Que (פ)
por alguna razón no está formateando correctamente en el blockquote, pero lo hace en mi archivo de texto).
Ahora, me gustaría despojar a este texto de todos los caracteres excepto el alfabeto hebreo estándar de 27 letras אבגדהוזחטיכךלמםנןסעפףצץקרשת
más los saltos de línea (que el editor de script interpreta automáticamente como \n
) y los saltos de línea y de párrafo ( :
y (פ)
o (ס)
). Observará que en varias líneas hay guiones, que deben sustituirse por un espacio. Algunas líneas también contienen |
- deben ser sustituidos por un único . Cuando esté hecho, debería tener el aspecto siguiente:
בראשית ברא אלהים את השמים ואת הארץ׃
והארץ היתה תהו ובהו וחשך על פני תהום ורוח אלהים מרחפת על פני המים׃
ויאמר אלהים יהי אור ויהי אור׃
וירא אלהים את האור כי טוב ויבדל אלהים בין האור ובין החשך׃
ויקרא אלהים לאור יום ולחשך קרא לילה ויהי ערב ויהי בקר יום אחד׃ (פ)
Al principio intenté algo sencillo: poner el alfabeto hebreo más , (
y )
a una lista, establezca x
a la longitud de la cadena introducida, y luego hacer una repetición para cada carácter de la cadena: si está en la lista, entonces añadirlo a la salida; si es un -
, añadir a la salida; si se trata de un \
y el siguiente es un n
, añadir \n
a la salida; y si hay dos espacios seguidos, se elimina el segundo.
Registré la salida y obtuve un galimatías:
(*אאית א ים ת ם ת ץץץץץץץץ ה הה הה ללללי ם ים ת ללללי םםםםםאאר ים י ר ייייררררררא ים תתתתתר ייייב ל ים ין ר ין א ים אאא ם א ה ייייב ייייר ם דד (פ)*)
que parece ser cada letra del pasaje sin vocal, duplicada en caso de que la(s) siguiente(s) la(s) tenga(n). (Mi error en las repeticiones - escribí mal el bucle de repetición.) Pero que se salte las consonantes que también tienen vocales es lo que me dejó pensando.
Así que hice una prueba:
set charNum to ASCII number "בְּ"
log charNum
set charNum to ASCII number "ב"
log charNum
-->result: (*63*) (*63*)
Aunque en el editor de texto, las vocales y similares son caracteres separados superpuestos a los anteriores, el editor de script no lo ve así, y ve בְּ y ב como la misma letra. Y sin embargo, al compararlo con mi lista, no reconoce el carácter y lo omite.
Entonces, ¿cómo puedo eliminar las vocales y similares de las letras sin hacer un bucle if para cualquier combinación posible de letra y vocal?