This commit is contained in:
Cyrille L 2023-05-09 14:39:29 +02:00
parent 22ce2f0aed
commit 43bc3eeac0
25 changed files with 184 additions and 338 deletions

2
debian/control vendored
View File

@ -1,5 +1,5 @@
Package: tyto Package: tyto
Version: 0.10.5 Version: 0.10.6
Section: custom Section: custom
Priority: optional Priority: optional
Architecture: all Architecture: all

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Version: 0.10.5 # Version: 0.10.6
# Tyto - Littérateur # Tyto - Littérateur
# #
# Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org> # Copyright (C) 2023 Cyrille Louarn <echolib+tyto@a-lec.org>
@ -28,13 +28,15 @@
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# Project files : 20 # Project files : 20
# Project lines : 7479 # Project lines : 7513
# Project comments : 1131 # Project comments : 1153
# Project functions: 108 # Project functions: 109
# Project program : 5657
# #
# file lines : 91 # file lines : 93
# file comments : 31 # file comments : 33
# file functions: 0 # file functions: 0
# file program : 47
#-------------------------- #--------------------------
import sys import sys

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 310 # file lines : 311
# file comments : 44 # file comments : 45
# file functions: 0 # file functions: 0
# file program : 234
#-------------------------- #--------------------------

View File

@ -7,8 +7,7 @@ Tyto - Littérateur
- License: https://git.a-lec.org/echolib/tyto-litterateur/-/blob/master/LICENSE - License: https://git.a-lec.org/echolib/tyto-litterateur/-/blob/master/LICENSE
- Documentation: https://tyto.echolib.re - Documentation: https://tyto.echolib.re
## [0.10.5] ## [0.10.6]
- New sitemap
- Very Last testings

View File

@ -1,5 +1,7 @@
# Tyto # Tyto
Pour obtenir de l'aide, taper juste la commande tyto - FR. Pour obtenir de l'aide, taper juste la commande tyto
- EN. To get help, just type tyto.
- - Doc is only in french yet, but Tyto is translated, also for your websites
## Répertoire de code du projet Tyto ## Répertoire de code du projet Tyto
https://git.a-lec.org/echolib/tyto-litterateur https://git.a-lec.org/echolib/tyto-litterateur
@ -7,234 +9,45 @@ https://git.a-lec.org/echolib/tyto-litterateur
## Documentation officielle ## Documentation officielle
https://tyto.echolib.re (en cours de construction) https://tyto.echolib.re (en cours de construction)
## Démarrage "rapide" ## Créer un domaine
```` ````
mkdir -p MONDOMAIN mkdir -p MONDOMAIN
cd MONDOMAIN cd MONDOMAIN
tyto new domain URL tyto new domain URL
tyto new index ````
# À ce stade, voir la doc "écrire" # Créer un article
https://tyto.echolib.re/%C3%A9crire/
```
cd articles/
tyto new index
tyto edit index.tyto tyto edit index.tyto
```
# Vérifier, prévisualiser un article
```
tyto check index.tyto tyto check index.tyto
tyto wip index.tyto tyto wip index.tyto
```
# Les modules
https://tyto.echolib.re/usages/modules.html
La barre latérale, le menu, le pied de page et les balises génériques metas
ne seront pas visible localement sans serveur nginx.
Utiliser l'option --static avec la commande wip pour les voir. Attention,
utiliser la commande publish après avoir utilisé l'option --static sur wip
mettra en ligne la version statique de la page. Il faut donc avant la
commande publish, recommencer la commande wip sur un article sans l'option
--static pour utiliser l'include de nginx (comportement par défaut)
# Publier ! # Publier !
```
# La première fois, ou après mise à jour des modules ou des fichiers (logo, css...)
tyto publish template tyto publish template
# Mettre dans le dossier "www" officiel
tyto publish index.tyto tyto publish index.tyto
``` ```
## Comment définir les métas
```
# Obligatoires uniques
# Ces marqueurs se configurent sur UNE ligne
title: Titre
about: Infos de l'article
author: Auteur
tags: mot-clé-1,mot 2,
date: YYYY-MM-DD (AAAA-MM-JJ)
# Pour snpic, l'image doit être configurée avec le même Nom
# qu'un marqueur d'entête "image:"
# Utilise l'image précisée comme "avatar" dans les réseaux sociaux
# Et dans le flux RSS
snpic: Nom
# Optionnels multiples
# Ces marqueurs se configurent sur 3 lignes
link: Nom du lien
URL
Texte Alternatif
image: Nom
URI
Texte Alternatif
file: Nom du lien
URL
Texte Alternatif
raw: Nom
URI
Texte Alternatif
abbr: abbrev
Définition de abbrev
ABBR (forme à afficher dans l'artile (optionnel))
# Séparateur d'au moins 5 "-" pour définir la fin
# des métadonnées d'entête de l'article
----------
```
## Comment écrire un article
### Écrire des titres
```
# Les titres HTML vont de 1 à 6 mais h1 est utilisé pour afficher
# le titre de l'article.
# Utiliser #N, où N est entre 1 et 5. (h+1 en HTML)
# Si du contenu existe entre les titres, une <div> est ajoutée
# Source
#1 Titre 1
Contenu 1
#2 Titre 2
#3 Titre 3
contenu 2
#4 Titre 4
```
### Balise div
```
<< CSS
((
1er paragraphes dans une balise div class="CSS"
))
((
2e paragraphes dans une balise div class="CSS"
))
>>
```
### Paragraphes
```
(( CSS
Un paragraphe
))
```
### Code Brut
```
{{ CSS
def hello_world():
print("Hello")
}}
```
### Listes ul/ol
```
-( CSS
= Liste ul
== Sous-liste ul
=== Sous-sous-liste ul
++++ Sous-sous-sous-liste ol
+++ Sous-sous-liste ol
-)
```
### Ancres
```
# Source de l'ancre cible. "id" est son identité
-> id
# Source de l'ancre d'appel
# Définir l'identité cible et le texte du lien
>_id:Retourner au point d'ancre id_<
```
### Retour à la ligne HTML
```
# Source
|
# HTML
<br />
```
### Lien vers URL
```
# Placer "_" devant le Nom du lien
Voir ce _Nom du lien # Ouverture même fenêtre
Voir ce _Nom du lien+ # ouverture nouvelle fenêtre
```
### Lien vers fichier
```
# Placer "__" devant le Nom du lien
Voir ce __Nom du lien # Ouverture même fenêtre
Voir ce __Nom du lien+ # ouverture nouvelle fenêtre
```
Note:
Vous pouvez avoir un Nom identique pour les marqueurs `file:` et `link:`
### Gras, Strong, italique...
```
*_très gras_* # <strong>
+_gras léger_+ # <b>
;_en italique_; # <em>
:_en italique_: # <i>
~_texte barré_~ # <del>
[_Citation rapide_] # <cite>
%_Classe personnalisée_% >>> <span class="custom">
._Souligné_. # <u>
{_Code_} # <code>
# Montrer comment écrire du code dans Tyto:
# Bypass avec \ devant {_ et _} (idem pour les marqueurs précédents)
{_\{_Comme ça\_}_}
```
### Abréviations
```
# abbrev sera remplacé par "ABBR" dans la page si défini en entête
# sinon, abbrev sera conservé
# - Toujours écrire dans l'article :
# - entre parenthèses ET majuscules les "(ABBREV)"
Avec cette (ABBREV).
# HTML: <abbr title="Définition de abbrev">ABBR</abbr>
```
### Images
```
# Chaque image doit être placée en début de ligne
# Placer dans un paragraphe pour chacune ou après "|",
# sinon, affichage les une à côté des autres
# ! Si pas d'unité pour w= et h= : défaut "px"
_image:Nom
_image:Nom c=CSS
_image:Nom c=css w=1080
_image:Nom w=640em h=480em
_image:Nom t=+ # Rend l'image interne cliquable
_image:Nom t=https://...# Donne un lien web à l'image
_image:Nom c=CSS t=https://... w=320px h=240 # 240px
```
### Code brut depuis un fichier
```
_raw:Nom
```
### Citations
Possibilité dans toute citation d'utiliser les marqueurs
optionnels `_xxx:`. Pour la date, utilisez le FORMAT INTERNATIONAL
```
# Source: citation complète
[[ CSS_TEST
_cite: echolib
_date: 2022-12-28 (format AAAA ou AAAA-MM ou AAAA-MM-JJ)
_lang: fr
_link: https://tyto.echolib.re
_book: Référence
((
Une belle citation complète
))
]]
````
```
# Source: citation basique
[[
Une citation simple, et sans paragraphe
]]
```

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 173 # file lines : 174
# file comments : 28 # file comments : 29
# file functions: 2 # file functions: 2
# file program : 135
#-------------------------- #--------------------------

View File

@ -27,9 +27,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 1141 # file lines : 1146
# file comments : 162 # file comments : 163
# file functions: 25 # file functions: 25
# file program : 873
#-------------------------- #--------------------------
import time, importlib, sys, os, re, datetime import time, importlib, sys, os, re, datetime
@ -65,14 +66,13 @@ def manage(target):
logs.out("1", db.uri_file, True) logs.out("1", db.uri_file, True)
# Already check # Already check
elif db.exists \ elif db.exists:
and not db.old_chk \ db.show_title()
and not args.option == "--force": if not db.old_chk and not args.option == "--force":
print(' ├ [%s] > %s'%(db.title, db.uri_file)) logs.out("20", '%s > %s'%(db.date_chk, db.uri_file), False)
logs.out("20", '%s > %s'%(db.date_chk, db.uri_file), False) answer = form.asking('%s%s '%(
answer = form.asking('%s%s '%( langs.site.check_a, langs.site.q
langs.site.check_a, langs.site.q ), True)
), True)
check_process(target) check_process(target)
else: else:
@ -122,6 +122,7 @@ def check_all(option):
# Then Do a check, and return # Then Do a check, and return
#----------------------------------------- #-----------------------------------------
if option == "added": if option == "added":
no_post = True
for root, dirs, files in os.walk(dom.articles_d[:-1]): for root, dirs, files in os.walk(dom.articles_d[:-1]):
for file in files: for file in files:
if (file.endswith('.tyto')): if (file.endswith('.tyto')):
@ -132,9 +133,13 @@ def check_all(option):
if os.path.exists(db_config): if os.path.exists(db_config):
continue continue
no_post = False
importlib.reload(db) importlib.reload(db)
check_process(args.target) check_process(args.target)
print() print()
if no_post:
logs.out("28", '%s'%langs.log.nonewpost, True)
return return
# With [updated], Article must have changed # With [updated], Article must have changed

View File

@ -27,9 +27,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 240 # file lines : 241
# file comments : 40 # file comments : 41
# file functions: 3 # file functions: 3
# file program : 182
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 195 # file lines : 206
# file comments : 35 # file comments : 37
# file functions: 0 # file functions: 1
# file program : 152
#-------------------------- #--------------------------
@ -193,3 +194,13 @@ if args.target \
# Article is updated on both servers # Article is updated on both servers
if hash_chk == hash_wip == hash_www: sync_srvs = True if hash_chk == hash_wip == hash_www: sync_srvs = True
#=========================#
# Show title and uri file #
#-------------------------#
def show_title():
try:
print('"%s" > %s'%(title, uri_file))
except:
return

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 317 # file lines : 318
# file comments : 30 # file comments : 31
# file functions: 1 # file functions: 1
# file program : 277
#-------------------------- #--------------------------

View File

@ -28,9 +28,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 1096 # file lines : 1097
# file comments : 103 # file comments : 104
# file functions: 7 # file functions: 7
# file program : 877
#-------------------------- #--------------------------

View File

@ -25,9 +25,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 543 # file lines : 544
# file comments : 70 # file comments : 71
# file functions: 8 # file functions: 8
# file program : 414
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 130 # file lines : 131
# file comments : 26 # file comments : 27
# file functions: 3 # file functions: 3
# file program : 91
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 89 # file lines : 90
# file comments : 27 # file comments : 28
# file functions: 0 # file functions: 0
# file program : 53
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 126 # file lines : 127
# file comments : 22 # file comments : 23
# file functions: 1 # file functions: 1
# file program : 93
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 93 # file lines : 94
# file comments : 26 # file comments : 27
# file functions: 1 # file functions: 1
# file program : 59
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 293 # file lines : 294
# file comments : 49 # file comments : 50
# file functions: 6 # file functions: 6
# file program : 206
#-------------------------- #--------------------------
@ -56,7 +57,6 @@ def manage(target):
target target
], ],
) )
print()
importlib.reload(db) importlib.reload(db)
check_to_publish('one') check_to_publish('one')
publish_article() publish_article()
@ -154,7 +154,8 @@ def check_to_publish(process):
global err_pub global err_pub
err_pub = False err_pub = False
print('\n ├ [%s] > %s'%(db.title, db.post_src)) print('')
db.show_title()
# Article was not checked or changed # Article was not checked or changed
if db.no_chk: if db.no_chk:

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 128 # file lines : 129
# file comments : 27 # file comments : 28
# file functions: 1 # file functions: 1
# file program : 90
#-------------------------- #--------------------------

View File

@ -27,9 +27,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 215 # file lines : 216
# file comments : 38 # file comments : 39
# file functions: 3 # file functions: 3
# file program : 156
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 225 # file lines : 226
# file comments : 37 # file comments : 38
# file functions: 4 # file functions: 4
# file program : 166
#-------------------------- #--------------------------

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 238 # file lines : 241
# file comments : 50 # file comments : 51
# file functions: 3 # file functions: 3
# file program : 170
#-------------------------- #--------------------------
@ -223,6 +224,8 @@ def check(target):
# Check servers files # # Check servers files #
#---------------------# #---------------------#
def check_domain_files(srv): def check_domain_files(srv):
import tyto
if srv == "www": template_files = dom.templates_files_www if srv == "www": template_files = dom.templates_files_www
elif srv == "wip": template_files = dom.templates_files_wip elif srv == "wip": template_files = dom.templates_files_wip
else: return else: return

View File

@ -26,9 +26,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 724 # file lines : 725
# file comments : 120 # file comments : 121
# file functions: 14 # file functions: 14
# file program : 522
#-------------------------- #--------------------------

View File

@ -29,9 +29,10 @@
#------------------------- #-------------------------
# Funny Stats Project # Funny Stats Project
#------------------------- #-------------------------
# file lines : 1112 # file lines : 1110
# file comments : 166 # file comments : 167
# file functions: 26 # file functions: 26
# file program : 860
#-------------------------- #--------------------------
@ -167,7 +168,8 @@ def wip_article(target):
# Convert file to strings # Convert file to strings
file_to_string(target) file_to_string(target)
print('\n ├ [%s] > %s'%(db.title, db.post_src)) #print(' │\n')
db.show_title()
global post_header global post_header
global post_bottom global post_bottom
@ -408,11 +410,8 @@ def wip_return_link_nbr(marker, nbr):
# Sort length by bigger in new array # Sort length by bigger in new array
for i in sorted(items,reverse=True): for i in sorted(items,reverse=True):
try: try: links = links + ((i[1]),)
print(i[1]) except: pass
links = links + ((i[1]),)
except:
pass
return links return links
@ -467,7 +466,6 @@ def wip_links():
link_set = link_html%( link_set = link_html%(
link_css, link_anc, link_title, "%s", link_name link_css, link_anc, link_title, "%s", link_name
) )
print(">", eval(link)[1])
replace_in_post(eval(link)[0]+'+', link_set%link_tb) replace_in_post(eval(link)[0]+'+', link_set%link_tb)
replace_in_post(eval(link)[0], link_set%link_ts) replace_in_post(eval(link)[0], link_set%link_ts)

View File

@ -11,30 +11,30 @@
#********************************************************************** #**********************************************************************
# Generic # Generic
sidebar = 'Sidebar' sidebar = 'Sidebar'
navbar = 'Navbar' navbar = 'Navbar'
meta_t = '<meta> tag' meta_t = '<meta> tag'
time_t = '<time> tag' time_t = '<time> tag'
metas = 'Metas Tags' metas = 'Metas Tags'
footer = 'Footer' footer = 'Footer'
line = "Ligne" line = "Ligne"
no_up = "not updated"
no_up = "not updated" ntd = "Nothing to do"
ntd = "Nothing to do" all_ok = "All is OK"
all_ok = "All is OK" nonewpost = "No new article"
unused_r = "Unused ressource" unused_r = "Unused ressource"
unused_c = "Unused database value" unused_c = "Unused database value"
db_inv = "Corrupted article's database" db_inv = "Corrupted article's database"
err_arg = "Argument error" err_arg = "Argument error"
no_arg = "Unused argument" no_arg = "Unused argument"
no_fidi = "Black Hole: no file or directory here" no_fidi = "Black Hole: no file or directory here"
dom_ina = "Inactive domain" dom_ina = "Inactive domain"
dom_inc = "Incomplete domain" dom_inc = "Incomplete domain"
dom_act = "Active domain" dom_act = "Active domain"
dom_cor = "Corrupted domain" dom_cor = "Corrupted domain"
data_inc = "Incomplete data" data_inc = "Incomplete data"
data_inv = "Invalid data" data_inv = "Invalid data"
dom_no = "No domain found" dom_no = "No domain found"
file_c = "File created" file_c = "File created"
file_n = "File changed" file_n = "File changed"

View File

@ -11,35 +11,35 @@
#********************************************************************** #**********************************************************************
# Generique # Generique
sidebar = 'Barre Latérale' sidebar = 'Barre Latérale'
navbar = 'Barre de navigation' navbar = 'Barre de navigation'
meta_t = 'Balise <meta>' meta_t = 'Balise <meta>'
time_t = 'Balise <time>' time_t = 'Balise <time>'
metas = 'Balises Metas' metas = 'Balises Metas'
footer = "Pied de Page" footer = "Pied de Page"
line = "Line" line = "Line"
no_up = "non mise à jour"
no_up = "non mise à jour" ntd = "Rien à faire"
ntd = "Rien à faire" all_ok = "Tout va bien"
all_ok = "Tout va bien" nonewpost = "Rien de nouveau"
unused_r = "Ressource manquante" unused_r = "Ressource manquante"
unused_c = "Valeur de la base de donnée manquante" unused_c = "Valeur de la base de donnée manquante"
db_inv = "Base de donnée de l'article corrompue" db_inv = "Base de donnée de l'article corrompue"
err_arg = "Erreur d'argument" err_arg = "Erreur d'argument"
no_arg = "Argument manquant" no_arg = "Argument manquant"
no_fidi = "Trou Noir: aucun fichier ou dossier ici" no_fidi = "Trou Noir: aucun fichier ou dossier ici"
dom_ina = "Domaine inactif" dom_ina = "Domaine inactif"
dom_inc = "Domaine incomplet" dom_inc = "Domaine incomplet"
dom_act = "Domaine actif" dom_act = "Domaine actif"
dom_cor = "Domaine corrompu" dom_cor = "Domaine corrompu"
data_inc = "Donnée incomplète" data_inc = "Donnée incomplète"
data_inv = "Donnée invalide" data_inv = "Donnée invalide"
dom_no = "Aucun domaine trouvé" dom_no = "Aucun domaine trouvé"
file_c = "Fichier créé" file_c = "Fichier créé"
file_n = "Fichier modifié" file_n = "Fichier modifié"
file_e = "Fichier présent" file_e = "Fichier présent"
dir_c = "Dossier créé" dir_c = "Dossier créé"
dir_e = "Dossier présent" dir_e = "Dossier présent"
post_exists = "Un article existe déjà" post_exists = "Un article existe déjà"
# chk # chk