check: abbr (match term in article + stats)

This commit is contained in:
Cyrille L 2022-11-17 14:38:20 +01:00
parent 191329a69c
commit b66769a20a
4 changed files with 230 additions and 2 deletions

View File

@ -0,0 +1,16 @@
# Changelog
Tyto - Littérateur
- Repository: https://git.a-lec.org/echolib/tyto
- Issues: https://git.a-lec.org/echolib/tyto/-/issues
- Changelog: https://git.a-lec.org/echolib/tyto/-/blob/main/CHANGELOG.md
- License: https://git.a-lec.org/echolib/tyto/-/blob/main/LICENSE
Tyto - Litterateur is a Libre project to create and manage multiple
websites from articles' files. Tyto uses its own syntax to convert
your articles in HTML5 static pages. Tyto works on a GNU/Linux system
and needs minimal dependancies.
- python3 rsync nano gawk curl
## [0.9.0] First Commit version (pre-final)

View File

@ -0,0 +1,21 @@
# Installation manuelle
Si vous utilisez Debian, il est plus que recommandé de procéder à
l'installation par le paquet .deb
## Préparer les dossiers
````
sudo mkdir -p /var/lib/tyto /etc/tyto /var/log/tyto
sudo touch /usr/local/bin/tyto
sudo chown -R USER:GROUP /var/lib/tyto /etc/tyto /var/log/tyto
sudo chown USER:GROUP /usr/local/bin/tyto
sudo chmod +x /usr/local/bin/tyto
git clone https://git.a-lec.org/echolib/tyto
rsync -a folders'repo/ to /folders/
# Créer votre dossier pour le serveur web
# On utilise en général /var/www/
# Celui-ci sera à renseigner lors de la création d'un domaine dans Tyto
sudo mkdir -p /var/www/
````

View File

@ -0,0 +1,180 @@
# STL: Statique Littérateur
STL est une évolution du projet GSL. STL permet de créer un ou plusieurs
sites web/blogs statiques, en fonction de leur nom de domaine.
Tout comme GSL, STL reprend une grande partie de l'écriture nouvelle de
vos articles, en apportant quelques évolutions. Les articles sont donc
au format .stl.
# Fonctionnement de STL ; le dossier de base
Contrairement à GSL, vos articles et les pages de votre site web sont
situés dans le même dossier de base. Pour obtenir ce dossier de base,
et configurer votre domaine, vous devez d'abord vous placer dans le
dossier de votre choix, puis lancer la commande de configuration.
```
cd MON-DOSSIER-PREFERE
stl domain new
# Vous pouvez également pré-remplir votre domaine en fonction de l'URL
stl domain new https://mon-site.xyz
```
Dans ce dossier de base (MON-DOSSIER-PREFERE), après la configuration de
votre domaine, vous trouverez de nouveaux dossiers :
- articles/
- - images/
- - files/
Les sous-dossiers images/ et files/ sont proposés afin de faciliter la
réutilisation d'images et de fichiers (PDF, ou autres) déjà présents
dans un autre article. Lors de la synchronisation, il seront copiés à la
racine wip de votre serveur. Le but : faire en sorte que le
navigateur n'ait pas à recharger un même fichier depuis une URL
différente - ce qui plomberait la rapidité d'affichage de la page et
l'intérêt d'un site statique. L'utilisation de cette fonction dans vos
articles est simple ; voir la documentation expliquant comment écrire un
article dans le dossier help.
Dans le dossier du serveur (/var/www est un exemple), vous trouverez
les dossiers suivants :
- /var/www/DOMAIN/wip/
- - template (logos, styles.css, sidebar.html, footer.html, metas.html...)
- - images
- - files
- /var/www/DOMAIN/www/ (non créé pour une installation locale)
- - template/
- - images
- - files
## Installation (server, ou local)
Il est possible d'utiliser STL de 2 manières différentes. Lors de la
configuation d'un nouveau domaine, vous devrez choisir entre une
installation faite sur un serveur distant, et une installation faite
en local (sur votre PC). Vous pouvez bien sûr choisir une installation
de type "server" sur votre PC, si celui-ci sert de serveur web.
Concernant la décoration du site (styles.css, logos), les fichiers
devront être placés dans le dossier serveur /wip/template/ (créé par STL
lors de l'ajout d'un domaine).
### Installation "server"
À choisir si votre PC sert de serveur web, ou si vous avez installé STL
sur votre serveur distant.
Lorsque vous installez STL, sur votre serveur distant, vous pouvez gérer
pour un même nom de domaine, votre site sur 2 adresses URL différentes.
La version WIP, permet de prévisualiser les modifications apportées à
vos pages (sans modifier celles sur WWW) avant de les valider sur votre
site officiel.
Lorsque votre site prévisualisé sur WIP vous plaît, vous pouvez alors
synchroniser le dossier WIP sur WWW grâce à la commande :
```
# Pour publier un article précis
stl publish (ARTICLE)
# Pour publier tous les articles dans WIP
stl publish all
```
Note : cette commande crée automatiquement le flux RSS dans WIP avant
de tous synchroniser sur WWW.
### Installation "local"
À choisir si vous voulez utiliser STL sur votre PC, et synchroniser
vous-même le dossier WIP sur votre serveur distant. Inutile donc,
d'installer STL sur le serveur distant.
Lors d'une utilisation locale, STL ne crée pas le dossier WWW, et ne
synchronise donc pas le dossier WIP vers WWW. C'est à vous de le faire
(via ssh, par exemple).
Vous devrez lorsque votre site vous plaît localement lancer la création
du flux RSS - avant de synchroniser votre site local sur votre serveur
distant - avec la commande :
```
stl rss
```
# Utilisation de STL
Afin de gérer vos articles, vous devez vous placer dans MON-DOSSIER-PREFERE.
L'autocomplétion est activée et personnalisée pour vous aider à trouver
(ARTICLE.stl).
## Créer votre arborescence
Dans MON-DOSSIER-PREFERE, vous trouverez le dossier "articles". Celui-ci
sert de base à votre domain.xyz sur votre serveur. C'est dans ce dossier
"articles", que vous pouvez créer vos articles et vos sous-dossiers.
Il est à noter que le nom de l'article est important, puisque STL
l'utilisera en le transformant en .html. Il est donc recommandé - mais
pas obligatoire - de nommer vos articles index.stl, pour obtenir une page
index.html. Si vous voulez créer une page 404, nommez votre article 404.stl
à la racine du dossier "articles".
## Convertir votre article en HTML
Placez vous dans MON-DOSSIER-PREFERE.
Avant de pouvoir convertir votre article, STL dispose d'un système de
vérification de la syntaxe STL. Si des erreurs sont trouvées, un système
de logs vous aidera à corriger ces erreurs.
```
# N'oubliez pas d'utiliser l'autocomplétion
stl check (ARTICLE.stl)
```
Vous pouvez maintenant le convertir en HTML dans le dossier wip
```
stl wip (ARTICLE.stl)
```
## Utiliser la sidebar
C'est la seule partie du site qui est semi-statique. STL fait appel à
nginx, qui va se charger de traduire la balise HTML `<!--# include file="..." -->`,
et afficher le rendu du fichier sidebar.html
Chaque article, une fois convertit avec l'argument wip peut être placé
dans la sidebar à la position désirée, entre 1 et la valeur maximum
décidée, lors de la configuration du domaine.
```
stl sidebar add 1 (ARTICLE.stl)
```
Vous pouvez également décider de placer un article ausitôt convertit
avec l'argument wip sidebar=POSITON
```
stl wip sidebar=2 (ARTICLE.stl)
```
## Documentation de STL
Les fichiers de documentations sont dans le dossier help.
Le README est accessible depuis la ligne de commande, comme les arguments
utilisables.
```
stl help
stl readme
```
## Dépendances
STL est écrit en bash, et a besoin des utilitaires
- gawk
- rsync
- nano
- curl

View File

@ -325,14 +325,14 @@ def post_to_strings(post_uri):
def check_post_header(headers): def check_post_header(headers):
global Post_Err global Post_Err
global stats_links_uniq, stats_files_uniq, stats_images_uniq, stats_abbrs_uniq global stats_links_uniq, stats_files_uniq, stats_images_uniq, stats_abbrs_uniq
global stats_links_p, stats_files_p, stats_images_p global stats_links_p, stats_files_p, stats_images_p, stats_abbrs_p
global stats_links global stats_links
# Mandatory markers # Mandatory markers
global title, about, author, tags, date global title, about, author, tags, date
# Set Stats # Set Stats
stats_links_uniq = stats_files_uniq = stats_images_uniq = stats_abbrs_uniq = 0 stats_links_uniq = stats_files_uniq = stats_images_uniq = stats_abbrs_uniq = 0
stats_links = stats_links_p = stats_files_p = stats_images_p = 0 stats_links = stats_links_p = stats_files_p = stats_images_p = stats_abbrs_p = 0
# Set Mandatory marker. 0:True/False 1:ln 2: Content # Set Mandatory marker. 0:True/False 1:ln 2: Content
title = about = author = tags = date = ('','','') title = about = author = tags = date = ('','','')
@ -746,6 +746,16 @@ def check_abbrs(line, ln, stats_abbrs_uniq):
check_new_marker(abbr_rep) check_new_marker(abbr_rep)
if new_marker or not abbr_rep: abbr_rep = abbr_name if new_marker or not abbr_rep: abbr_rep = abbr_name
# Check NAME in article
if not abbr_name in article:
msg_log = 'Unused "%s" for marker "abbr:" in article"'%abbr_name
log.append_f(post_logs,msg_log,1)
Post_Err = True
return(1)
# Statistics for all ABBR in article
stats_abbrs_p = stats_abbrs_p + stats_counter(abbr_name)
abbr_nbr = 'abbr_%s'%stats_abbrs_uniq abbr_nbr = 'abbr_%s'%stats_abbrs_uniq
abbr = ( abbr = (
abbr_name, abbr_name,
@ -1130,6 +1140,7 @@ def create_DB(post_db):
'links_p = %d'%stats_links_p, 'links_p = %d'%stats_links_p,
'files_p = %d'%stats_files_p, 'files_p = %d'%stats_files_p,
'images_p = %d'%stats_images_p, 'images_p = %d'%stats_images_p,
'abbrs_p = %d'%stats_abbrs_p,
'\n# Statistics (Templates)', '\n# Statistics (Templates)',
'titles = %d'%stats_titles, 'titles = %d'%stats_titles,
'anchors = %d'%stats_anchors, 'anchors = %d'%stats_anchors,