foqu (faux-quni) est un outil qui converti l'écriture avec des points médians vers un formatage en html dont les différentes expressions de genre notées s'insèrent dans le .
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
3.4 KiB

#!/bin/sh
# Écriture du dictionnaire de substitutions de foqu à
# partir du tableau QUNI et de ses substitutions opentype
# nom des balises et de l'attribut QUNI correspondant
Q="q"
T="t"
U="u"
# note sur le symbole «|» : un pipe, ou tuyau permet de rediriger la sortie d'un programme dans l'entrée du suivant.
# la fonction dictionnaire ci-dessous est construite sur ce principe
dictionnaire () {
# télécharge le tableau QUNI et enregistre le dans un fichier qui s'appelle tableau
# curl -O https://typotheque.byebyebinary.space/fr/quni/tableau
# ne conserve que le texte contenu dans les div avec une classe ligne contenue dans l'élément avec un id ligature
cat tableau | htmlq main "#ligature" div.ligne --text |
# retire les espaces au début des lignes
sed 's/^[[:space:]]*//' |
# ne garde que les lignes qui commencent par «sub» ou qui contiennent «U+»
grep -E "^sub|U\+" |
# exclue les lignes qui contiennent «Unicode», «masc», «fem», «nb» ou des parenthèses
grep -vE "Unicode|masc|fem|nb|\(|\)" |
# remplace «;» par deux retours à la ligne
sed 's/;/\n\n/g' |
# efface les lignes vides
sed '/^$/d' |
# avant une ligne qui commence par «U+», ajoute un retour à la ligne
sed 's/^U+/\nU+/g' |
# retire «by» et ce qu'il y a après
sed 's/ by.*//g' |
# retire les espaces
sed 's/[[:space:]]//g' |
# remplace les noms ascii des diacritiques, espaces et points médians par leurs symboles unicode
sed -e 's/eacute/è/g' \
-e 's/Eacute/È/g' \
-e 's/aacute/á/g' \
-e 's/Aacute/Á/g' \
-e 's/agrave/à/g' \
-e 's/Agrave/À/g' \
-e 's/egrave/è/g' \
-e 's/Egrave/È/g' \
-e 's/idieresis/ï/g' \
-e 's/Idieresis/Ï/g' \
-e 's/space/ /g' \
-e 's/periodcentered.case/˙/' \
-e 's/periodcentered/·/' |
# retire les déclarations de substitutions opentype «sub» qui restent en début de ligne
sed 's/^sub//g' |
# remplace un seul retour à la ligne par une tabulation, mais pas deux
awk 'BEGIN {RS=""; ORS="\n\n"} {gsub(/\n/, "\t"); print}' |
# crée le dictionnaire de substitution sed en bouclant à partir du deuxième champ de chaque ligne
awk -v Q="$Q" -v T="$T" -v U="$U" -F'\t' '{
for (i = 2; i <= NF; i++){
split($i, term, "·|˙")
printf "-e '\''s\t%s\t<%s data-%s=\"%s\">", $2, Q, U, $1
for (t = 1; t <= length(term); t++){
printf "<%s>%s</%s>", T, term[t], T
}
printf "</%s>\tg'\'' \\\n", Q
}
}' |
# trie les substitutions pour les appliquer des plus longues aux plus courtes
awk '{ print length($0) " " $0; }'| sort -r -n | cut -d ' ' -f 2- |
# enlève la dernière barre oblique inversée «\» de la dernière ligne
sed '${s/ \\$//}'
}
cat << % > foqu
#!/bin/sh
#·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·
#
# Un outil qui sémantise l'écriture inclusive à point médian dans un document html
#
# Exemple :
# cat texte.html | foqu > texte-foqu.html
# <p>créateur·ices</p> → <p>créat<q><t>eur</t><t>ice</t></q>s</p>
#
# S'utilise en avale d'une conversion vers l'html au risque de rencontrer des soucis.
# le programme a été ré-écrit par le programme tableau.sh le $(date '+%A %d %B %Y à %Hh%M').
# auteur·ices :
# Martin Lemaire
#
#·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·˙·
sed \\
$(dictionnaire)
%