New version 0.0.36

This commit is contained in:
Cyrille L 2022-04-23 17:51:46 +02:00
parent c924dad232
commit 629ddf024f
12 changed files with 400 additions and 279 deletions

View File

@ -1,5 +1,5 @@
Package: egsl Package: egsl
Version: 0.0.35 Version: 0.0.36
Section: custom Section: custom
Priority: optional Priority: optional
Architecture: all Architecture: all

View File

@ -42,7 +42,7 @@ gsl_filename_auth="authors.db"
# GSL Internal Configuration # GSL Internal Configuration
#======================================================================= #=======================================================================
# minimum size to check a post # minimum size to check a post
gsl_post_min_size=800 gsl_post_min_size=150
# Max Posts list in sidebar # Max Posts list in sidebar
gsl_list_max_posts=5 gsl_list_max_posts=5
@ -103,7 +103,7 @@ gsl_mark_strong='\*\*'
gsl_mark_italic='\/' gsl_mark_italic='\/'
gsl_mark_code="¤" gsl_mark_code="¤"
gsl_mark_list='=' gsl_mark_list='='
gsl_mark_listo="ø" gsl_mark_listo="+"
gsl_mark_blockquote='---' gsl_mark_blockquote='---'

View File

@ -1,11 +1,37 @@
# Créer un fichier depuis la ligne de commande
------------------------------------------------------------------------
Vous pouvez créer un fichier daté du jour avec les METAS obligatoires
intégrés (à renseigner après). Vous devez spécifier si votre article
sera une page ou un post (Voir section plus bas) et lui donner un nom.
Rendez vous dans le dossier de vos articles, enregistrés lors de l'ajout
de votre domaine (ou celui que vous avez configuré).
Évitez les espaces dans le nom du fichier ou utilisez des guillemets.
```
# Crréer une page nommée index
gsl create page index
# Créer un article nommé mes-vacances
gsl create post mes-vacances
```
Vous pouvez l'éditer dans le terminal ou avec votre éditeur de texte.
```
gsl edit mes-vacances.gsl
```
# Comment écrire un article # Comment écrire un article
------------------------------------------------------------------------ ------------------------------------------------------------------------
Votre article doit contenir 2 sections. Les Metas avant #1 et Votre article doit contenir 2 sections. Les METAS avant ```#1``` et
l'article à partir de ce repère (servant de titre h1). l'article à partir de ce repère (servant de titre h1).
- METAS : configurer votre article (titre, date, liens...) - METAS : configurer votre article (titre, date, liens...)
- ARTICLE : Contenue rédactionnel avec quelques marqueurs (gras...) - ARTICLE : contenue rédactionnel avec quelques marqueurs (gras...)
## METAS obligatoires (avant #1) ## METAS obligatoires (avant #1)
@ -26,17 +52,17 @@ première ligne de votre article
``` ```
# Page (index, 404, about...) # Page (index, 404, about...)
# Création selon le slug: /POST-TITLE.html # Création HTML selon le slug: /POST-TITLE.html
type: page type: page
# Article (monarticle) # Article (monarticle)
# Création selon le slug: /POST-TITLE/index.html # Création HTML selon le slug: /POST-TITLE/index.html
type: post type: post
``` ```
## METAS optionnelles (avant #1) ## METAS optionnelles (avant ```#1```)
Définir les marqueurs (abbr:, link:...) et utiliser " : " comme séparateur Définir les marqueurs (abbr:, link:...) et utiliser ``` : ``` comme séparateur
``` ```
abbr: COURT : LONG abbr: COURT : LONG
@ -242,15 +268,15 @@ _book: Esperanza 64
### Créer des listes ### Créer des listes
L'arborescence est "infinie". L'arborescence est "infinie".
- Chaque contenu de la liste *doit être sur la même ligne* - Chaque contenu de la liste **doit être sur la même ligne**
Dans l'article... Dans l'article...
- utilisez ```=``` pour définir l'arborescence d'une liste simple - utilisez ```=``` pour définir l'arborescence d'une liste simple (ul)
- utilisez ```ø``` pour définir une liste ordonnée (alt+gr + o (FR azerty)) - utilisez ```+``` pour définir une liste ordonnée (ol)
``` ```
( (
Voici une liste Voici une liste simple
= Fruits : *mangez-en* = Fruits : *mangez-en*
== Kiwis == Kiwis
== Fraises == Fraises

View File

@ -25,16 +25,16 @@ gsl sync
GSL synchronisera votre template sur votre webserver. GSL synchronisera votre template sur votre webserver.
Rechargez votre page dans votre navigateur Rechargez votre page dans votre navigateur
Si vous avez modifié header ou footer.html, ou si de nouvelles fonctions Si vous avez modifié header.html ou footer.html dans votre dossier
sont arrivées et concernent les pages HTML dans GSL, il vous faudra /templates, ou si de nouvelles fonctions sont arrivées et concernent les
reconstruire toutes les pages pages HTML dans GSL, il vous faudra reconstruire toutes les pages
``` ```
gsl make -F gsl make -F
``` ```
## Listes de classes utilisées. ## Listes de classes utilisées.
Rappel: les classes et IDs commencent passent votre ACRONYM configuré, Rappel: les classes et IDs commencent par votre ACRONYM configuré,
lors de la création d'un domaine avec ```gsl new```, suivi par ```_```. lors de la création d'un domaine avec ```gsl new```, suivi par ```_```.
Pour une meilleure lisibilité, votre ACRONYM est marqué xxx. Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
@ -55,11 +55,11 @@ Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
### Dans ```<article>``` ### Dans ```<article>```
- CLASS= - CLASS=
- - div après chaque titre ```<hX>```: xxx_content-pX - - div après chaque titre ```<hX>```: xxx_content-p xxx_content-pX
- - p dans div content-pX: xxx_paragraph - - p dans div content-p: xxx_paragraph
- - - si contenu ```( 2```: xxx_paragraph-2 - - - si contenu ```( 2```: xxx_paragraph-2
- - code pour les inline-code avec ```¤...¤```: xxx_icode - - code pour les inline-code avec ```¤...¤```: xxx_icode
- - li (liste) en fonction du nombre N de ```=```: xxx__list-li x_list-N - - li (liste) en fonction du nombre N de ```= | +```: xxx__list-li x_list-N
- - ul (liste) simple: xxx_list-ul - - ul (liste) simple: xxx_list-ul
- - ol (liste) ordonnée: xxx_list-ol - - ol (liste) ordonnée: xxx_list-ol

10
new-version.md Normal file
View File

@ -0,0 +1,10 @@
# Version: 0.0.35 > 0.0.36
- New list converter (! Use + for ol, not ø)
- New block titles converter with div
- New option: create
- New option with edit: conf (to edit domain configuration)
- New option: --version (to show changes)
- New generic function if invalid option
- Fix: No <div</div> if block title empty

View File

@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
# Version: 0.0.35 # Version: 0.0.36
# file: gsl # file: gsl
# Folder: /usr/local/bin # Folder: /usr/local/bin
# By echolib # By echolib
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 # License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#======================================================================= #=======================================================================
# Tool: Check needed file and sourcee if asked # Tools
#======================================================================= #=======================================================================
if__command() { if__command() {
! [[ `command -v $1` ]] \ ! [[ `command -v $1` ]] \
@ -33,6 +33,11 @@ case "$2" in
esac esac
} }
gsl__invalid_option() {
echo "! Invalid argument '$1': $2"
exit
}
# Get conf # Get conf
gsl__if_file "/etc/gsl/gsl.conf" source gsl__if_file "/etc/gsl/gsl.conf" source
gsl__if_file "$gsl_dir_scripts/gsl__log_manager" source gsl__if_file "$gsl_dir_scripts/gsl__log_manager" source
@ -52,7 +57,10 @@ case "$1" in
gsl__if_file "$gsl_dir_helps/gsl_help_install" read gsl__if_file "$gsl_dir_helps/gsl_help_install" read
;; ;;
write|-w) write|-w)
gsl__if_file "$gsl_dir_helps/gsl_help_write_post" read gsl__if_file "$gsl_dir_lib/help//article-comment-ecrire.md" read
;;
template|-t)
gsl__if_file "$gsl_dir_lib/help/template-comment-creer.md" read
;; ;;
esac esac
exit exit
@ -169,7 +177,7 @@ case "$1" in
exit 0 exit 0
;; ;;
version|-v) -v)
awk 'NR==2 {print "# Installed:",$3}' "/usr/local/bin/$app_name" awk 'NR==2 {print "# Installed:",$3}' "/usr/local/bin/$app_name"
exit exit
;; ;;
@ -182,6 +190,12 @@ case "$1" in
echo -ne "Online: $v_onl\n" echo -ne "Online: $v_onl\n"
exit exit
;; ;;
--version)
awk 'NR==2 {print "# Installed:",$3}' "/usr/local/bin/$app_name"
gsl__if_file "$gsl_dir_lib/new-version.md" read
exit
;;
esac esac
#======================================================================= #=======================================================================
@ -204,12 +218,74 @@ gsl__if_file "$gsl_dir_scripts/gsl__do_commons" source
# Main # Main
#======================================================================= #=======================================================================
case "$1" in case "$1" in
create)
case "$2" in
page|post)
true
;;
*)
gsl__invalid_option "$2" "page|post"
;;
esac
case "$3" in
"")
gsl__invalid_option "$3" "Please set a name for your $2"
;;
esac
gsl_postname="$3"
[[ "$gsl_postname" =~ ".gsl" ]] \
&& gsl_postname=${gsl_postname/.gsl/}
gsl__logs_print \
"$gsl_log_i" \
"Starting" \
"Create" \
"$2" \
"$PWD/$3.gsl"
if [[ -f "$gsl_postname.gsl" ]];then
gsl__logs_print \
"$gsl_log_w" \
"Create" \
"File" \
"$3.gsl already exists !" \
"$PWD/$3.gsl"
gsl_checker_war=true
else
gsl__create_article "$2" "$(date +%F)" "$gsl_postname" && \
gsl__logs_print \
"$gsl_log_i" \
"Create" \
"$2" \
"You can edit it with 'gsl edit $3.gsl'" \
"$PWD/$3.gsl"
fi
gsl__logs_print \
"$gsl_log_i" \
"Stopping" \
"Create" \
"$2" \
"$PWD/$3.gsl"
;;
edit|-E) edit|-E)
! [[ "$2" ]] \ ! [[ "$2" ]] \
&& echo "! Missing argument: post [FILE]" \ && gsl__invalid_option "$2" "[File]"
&& exit
case "$2" in
conf)
echo "> $gsl_this_conf_domain/$gsl_find_domain.conf"
gsl_this_post="$gsl_this_conf_domain/$gsl_find_domain.conf"
gsl__if_file "$gsl_this_post"
;;
*)
gsl__if_file "$PWD/$2" post
;;
esac
gsl__if_file "$2" post
if ! [[ "$EDITOR" ]];then if ! [[ "$EDITOR" ]];then
if__command nano if__command nano
EDITOR=`which nano` EDITOR=`which nano`
@ -219,23 +295,23 @@ case "$1" in
"$gsl_log_i" \ "$gsl_log_i" \
"Starting" \ "Starting" \
"Process" \ "Process" \
"edit $gsl_this_post with $EDITOR" \ "edit with $EDITOR" \
"$PWD/$gsl_this_post" "$gsl_this_post"
gsl__get_sum "$PWD/$gsl_this_post" gsl__get_sum "$gsl_this_post"
gsl__logs_print \ gsl__logs_print \
"$gsl_log_i" \ "$gsl_log_i" \
"Post" \ "Edit" \
"edit" \ "File" \
"$gsl_this_post > Hash: $gsl_post_hash | Size: $gsl_post_size" \ "Hash: $gsl_post_hash | Size: $gsl_post_size" \
"$PWD/$gsl_this_post" "$gsl_this_post"
gsl_post_hash_old=$gsl_post_hash gsl_post_hash_old=$gsl_post_hash
$EDITOR $PWD/$gsl_this_post $EDITOR "$gsl_this_post"
gsl__get_sum "$PWD/$gsl_this_post" gsl__get_sum "$gsl_this_post"
if (( $gsl_post_hash != $gsl_post_hash_old ));then if (( $gsl_post_hash != $gsl_post_hash_old ));then
gsl_log_infos="NEW > Hash: $gsl_post_hash | Size: $gsl_post_size" gsl_log_infos="NEW > Hash. Size: $gsl_post_size"
gsl_log_level="$gsl_log_w" gsl_log_level="$gsl_log_w"
else else
gsl_log_infos="Unchanged" gsl_log_infos="Unchanged"
@ -244,22 +320,21 @@ case "$1" in
gsl__logs_print \ gsl__logs_print \
"$gsl_log_level" \ "$gsl_log_level" \
"Post" \ "Edit" \
"edit" \ "File" \
"$gsl_this_post > $gsl_log_infos" \ "$gsl_log_infos" \
"$PWD/$gsl_this_post" "$gsl_this_post"
gsl__logs_print \ gsl__logs_print \
"$gsl_log_i" \ "$gsl_log_i" \
"Stopping" \ "Stopping" \
"Process" \ "Process" \
"edit $gsl_this_post with $EDITOR" \ "edit with $EDITOR" \
"$PWD/$gsl_this_post" "$gsl_this_post"
;; ;;
db) db)
! [[ "$2" ]] \ ! [[ "$2" ]] \
&& echo "! Missing argument: post [FILE]" \ && gsl__invalid_option "$2" "[File]"
&& exit
gsl__if_file "$2" post gsl__if_file "$2" post
[[ -f "$gsl_dir_db/$gsl_this_post.db" ]] \ [[ -f "$gsl_dir_db/$gsl_this_post.db" ]] \
@ -319,7 +394,7 @@ case "$1" in
gsl__srv_sync "$gsl_srv_wip" gsl__srv_sync "$gsl_srv_wip"
;; ;;
*) *)
echo "! Bad Argument: $2 ? OPT=www/wip/''" gsl__invalid_option "$2" "www|wip"
gsl__logs_print \ gsl__logs_print \
"$gsl_log_i" \ "$gsl_log_i" \
"Sync" \ "Sync" \
@ -370,8 +445,7 @@ case "$1" in
www) www)
! [[ "$2" ]] \ ! [[ "$2" ]] \
&& echo "! Missing argument: add/remove" \ && gsl__invalid_option "$2" "add|remove"
&& exit
if__command rsync if__command rsync
gsl_www_act="$2" gsl_www_act="$2"
@ -383,14 +457,12 @@ case "$1" in
gsl_ask="! REMOVE ALL www posts (yes|N)? " gsl_ask="! REMOVE ALL www posts (yes|N)? "
;; ;;
*) *)
echo "! Bad argument: $2 ? OPT=add/remove" gsl__invalid_option "$2" "add|remove"
exit
;; ;;
esac esac
! [[ "$3" ]] \ ! [[ "$3" ]] \
&& echo "! Missing argument: post [FILE]/all" \ && gsl__invalid_option "$3" "[FILE]|all"
&& exit
case "$3" in case "$3" in
all) all)

View File

@ -1,11 +1,37 @@
# Créer un fichier depuis la ligne de commande
------------------------------------------------------------------------
Vous pouvez créer un fichier daté du jour avec les METAS obligatoires
intégrés (à renseigner après). Vous devez spécifier si votre article
sera une page ou un post (Voir section plus bas) et lui donner un nom.
Rendez vous dans le dossier de vos articles, enregistrés lors de l'ajout
de votre domaine (ou celui que vous avez configuré).
Évitez les espaces dans le nom du fichier ou utilisez des guillemets.
```
# Crréer une page nommée index
gsl create page index
# Créer un article nommé mes-vacances
gsl create post mes-vacances
```
Vous pouvez l'éditer dans le terminal ou avec votre éditeur de texte.
```
gsl edit mes-vacances.gsl
```
# Comment écrire un article # Comment écrire un article
------------------------------------------------------------------------ ------------------------------------------------------------------------
Votre article doit contenir 2 sections. Les Metas avant #1 et Votre article doit contenir 2 sections. Les METAS avant ```#1``` et
l'article à partir de ce repère (servant de titre h1). l'article à partir de ce repère (servant de titre h1).
- METAS : configurer votre article (titre, date, liens...) - METAS : configurer votre article (titre, date, liens...)
- ARTICLE : Contenue rédactionnel avec quelques marqueurs (gras...) - ARTICLE : contenue rédactionnel avec quelques marqueurs (gras...)
## METAS obligatoires (avant #1) ## METAS obligatoires (avant #1)
@ -26,17 +52,17 @@ première ligne de votre article
``` ```
# Page (index, 404, about...) # Page (index, 404, about...)
# Création selon le slug: /POST-TITLE.html # Création HTML selon le slug: /POST-TITLE.html
type: page type: page
# Article (monarticle) # Article (monarticle)
# Création selon le slug: /POST-TITLE/index.html # Création HTML selon le slug: /POST-TITLE/index.html
type: post type: post
``` ```
## METAS optionnelles (avant #1) ## METAS optionnelles (avant ```#1```)
Définir les marqueurs (abbr:, link:...) et utiliser " : " comme séparateur Définir les marqueurs (abbr:, link:...) et utiliser ``` : ``` comme séparateur
``` ```
abbr: COURT : LONG abbr: COURT : LONG
@ -242,15 +268,15 @@ _book: Esperanza 64
### Créer des listes ### Créer des listes
L'arborescence est "infinie". L'arborescence est "infinie".
- Chaque contenu de la liste *doit être sur la même ligne* - Chaque contenu de la liste **doit être sur la même ligne**
Dans l'article... Dans l'article...
- utilisez ```=``` pour définir l'arborescence d'une liste simple - utilisez ```=``` pour définir l'arborescence d'une liste simple (ul)
- utilisez ```ø``` pour définir une liste ordonnée (alt+gr + o (FR azerty)) - utilisez ```+``` pour définir une liste ordonnée (ol)
``` ```
( (
Voici une liste Voici une liste simple
= Fruits : *mangez-en* = Fruits : *mangez-en*
== Kiwis == Kiwis
== Fraises == Fraises

View File

@ -25,16 +25,16 @@ gsl sync
GSL synchronisera votre template sur votre webserver. GSL synchronisera votre template sur votre webserver.
Rechargez votre page dans votre navigateur Rechargez votre page dans votre navigateur
Si vous avez modifié header ou footer.html, ou si de nouvelles fonctions Si vous avez modifié header.html ou footer.html dans votre dossier
sont arrivées et concernent les pages HTML dans GSL, il vous faudra /templates, ou si de nouvelles fonctions sont arrivées et concernent les
reconstruire toutes les pages pages HTML dans GSL, il vous faudra reconstruire toutes les pages
``` ```
gsl make -F gsl make -F
``` ```
## Listes de classes utilisées. ## Listes de classes utilisées.
Rappel: les classes et IDs commencent passent votre ACRONYM configuré, Rappel: les classes et IDs commencent par votre ACRONYM configuré,
lors de la création d'un domaine avec ```gsl new```, suivi par ```_```. lors de la création d'un domaine avec ```gsl new```, suivi par ```_```.
Pour une meilleure lisibilité, votre ACRONYM est marqué xxx. Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
@ -55,11 +55,11 @@ Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
### Dans ```<article>``` ### Dans ```<article>```
- CLASS= - CLASS=
- - div après chaque titre ```<hX>```: xxx_content-pX - - div après chaque titre ```<hX>```: xxx_content-p xxx_content-pX
- - p dans div content-pX: xxx_paragraph - - p dans div content-p: xxx_paragraph
- - - si contenu ```( 2```: xxx_paragraph-2 - - - si contenu ```( 2```: xxx_paragraph-2
- - code pour les inline-code avec ```¤...¤```: xxx_icode - - code pour les inline-code avec ```¤...¤```: xxx_icode
- - li (liste) en fonction du nombre N de ```=```: xxx__list-li x_list-N - - li (liste) en fonction du nombre N de ```= | +```: xxx__list-li x_list-N
- - ul (liste) simple: xxx_list-ul - - ul (liste) simple: xxx_list-ul
- - ol (liste) ordonnée: xxx_list-ol - - ol (liste) ordonnée: xxx_list-ol

View File

@ -116,7 +116,6 @@ cat << EOPAGE > "$gsl_srv_wip_page"
</div> </div>
`cat "$gsl_a11y_post"` `cat "$gsl_a11y_post"`
</div>
</article> </article>
<aside id="${gsl_site_css}_sidebar"> <aside id="${gsl_site_css}_sidebar">

View File

@ -36,8 +36,6 @@ gsl__make_list
gsl__do_icode "make" "$gsl_tmp_post" gsl__do_icode "make" "$gsl_tmp_post"
gsl__make_titles gsl__make_titles
gsl_ct=0 && gsl__make_titles_div_open
gsl_ct=0 && gsl__make_titles_div_close
gsl__do_header "make" "$gsl_marker_image" "$gsl_post" gsl__do_header "make" "$gsl_marker_image" "$gsl_post"
gsl__make_paragraphs gsl__make_paragraphs
@ -99,148 +97,147 @@ awk -v s="$1" \
#====================================================================== #======================================================================
# Convert List.Get first/last line item / repeat till no more mark # Convert List.Get first/last line item / repeat till no more mark
#====================================================================== #======================================================================
# Loop till no more list marker
gsl__make_list() { gsl__make_list() {
unset gsl_found_list if [[ `awk -v mls="$gsl_mark_listo" \
if [[ `awk -v m="$gsl_mark_list" \ '$1 ~ mls {print NR,$0;exit}' \
'$1 == m {print $1;exit}' \ "$gsl_tmp_post"` ]] || \
[[ `awk -v mls="$gsl_mark_list" \
'$1 ~ mls {print NR,$0;exit}' \
"$gsl_tmp_post"` ]];then "$gsl_tmp_post"` ]];then
gsl_found_list=true gsl__make_list_read_by_block
fi
if [[ `awk -v m="$gsl_mark_listo" \
'$1 == m {print $1;exit}' \
"$gsl_tmp_post"` ]];then
gsl_found_list=true
fi
if [[ $gsl_found_list ]];then
gsl__make_list_read
gsl__make_list
fi fi
return
} }
gsl__make_list_read() { # =====================================================================
# Get block lists by line numbers From Content # Read list by block, create tmp file, convert in HTML, replace block
gsl_last_line=`cat $gsl_tmp_post | wc -l` # ln: line number | ml: marker list
while read -r "gsl_line" "gsl_content" # =====================================================================
gsl__make_list_read_by_block() {
unset list_lb list_le
# Making tmp block file list
gsl_file_block_list=`mktemp`
while read -r "ln" "ml" "content"
do do
case "$gsl_content" in case "$ml" in
"$gsl_mark_list"*|"$gsl_mark_listo"*) "$gsl_mark_list"*|"$gsl_mark_listo"*)
! [[ $gsl_list ]] \ case "$ml" in
&& gsl_list=true \ "$gsl_mark_list"*)
&& gsl_list_o=$gsl_line \ gsl_html_uol="ul"
&& continue ;;
"$gsl_mark_listo"*)
[[ $gsl_list ]] && (( $gsl_line == $gsl_last_line )) \ gsl_html_uol="ol"
&& gsl_list_c=$gsl_line \ ;;
&& gsl__make_list_get_block \ esac
&& break ! [[ $list_lb ]] && list_lb="$ln"
echo "$ml $content" >> "$gsl_file_block_list"
case "$gsl_content" in
"$gsl_mark_list"*) gsl_html_uol="ul" ;;
"$gsl_mark_listo"*) gsl_html_uol="ol" ;;
esac
;; ;;
""|*) ""|*)
[[ "$gsl_list" ]] \ if [[ $list_lb ]];then
&& gsl_list_c=$(( gsl_line - 1 )) \ list_le=$ln
&& unset gsl_list \ echo "" >> "$gsl_file_block_list"
&& gsl__make_list_get_block \ break
&& break fi
;; ;;
esac esac
done < <(cat -n "$gsl_tmp_post") done < <(cat -n "$gsl_tmp_post")
}
#======================================================================
# Convert List. tmp file block list. replace mark with number
#======================================================================
gsl__make_list_get_block() {
echo -ne "\r\033[2K: Converting Block-List... $gsl_list_o > $gsl_list_c"
# Create tmp file with this block-list and marks converted
gsl_file_block_list=`mktemp`
while read -r "mark" "content"
do
echo "${#mark} $content" >> "$gsl_file_block_list"
done < <(awk -v o="$gsl_list_o" -v c="$gsl_list_c" \
'NR >= o && NR <= c' \
"$gsl_tmp_post")
# Convert block_list
echo -ne "\r\033[2K: Converting list block... $list_lb-$list_le"
gsl__make_list_convert gsl__make_list_convert
# No more needed # Remove in gsl_tmp_post block list and replace with $gsl_file_html_list
unset gsl_list_o gsl_list_c diff_lines=$(( list_le - list_lb ))
#seq $list_lb $list_le
for rml in `seq 1 $diff_lines`
do
sed -i "${list_lb}d" "$gsl_tmp_post"
done
sed -i "$((list_lb -1))r $gsl_file_html_list" "$gsl_tmp_post"
# No more needed html file list
rm -f "$gsl_file_html_list"
# No more needed block list file
rm -f "$gsl_file_block_list" rm -f "$gsl_file_block_list"
# Go again if new list found
gsl__make_list
} }
#====================================================================== # =====================================================================
# Convert List. tmp HTML file. # Create TMP HTML block list file
#====================================================================== # =====================================================================
gsl_file_html_list=`mktemp`
gsl__make_list_convert() { gsl__make_list_convert() {
# Get previeous line mark number # mln: marker list number | pmln: previous list mark number
gsl__make_list_get_prev_mark() { gsl__make_list_count_prev_mark() {
pm=` pml=`awk -v pln=$(( ln -1 )) 'NR == pln {print $1}' "$gsl_file_block_list"`
awk -v pm="$(( $ln - 1))" \ pmln=${#pml}
'NR == pm {print $1}' \
"$gsl_file_block_list"`
! [[ $pm ]] && pm=0
} }
# Create tmp file with HTML block-list mln_indent=0
gsl_HTML_list=`mktemp` while read -r "ln" "ml" "content"
#ln: line number ; mn: mark number
while read -r "ln" "mn" "content"
do do
mln=${#ml}
(( $mln_indent < $mln )) \
&& mln_indent=$mln \
&& mln_indent_close=$((mln_indent * 3 - 3))
gsl__make_list_get_prev_mark gsl__make_list_count_prev_mark
gsl_diff_pm_mn=$(( mn - pm )) diff_pmln_mln=$(( mln - pmln ))
if (( $gsl_diff_pm_mn == 0 ));then #echo "$mln (pmln=$pmln ; diff: $diff_pmln_mln)" >> "$gsl_file_html_list"
printf "%s%s\n" \ if (( $diff_pmln_mln == 0 ));then
printf "%$((mln * 3))s%s\n" \
"" \ "" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mn\">$content</li>" \ "<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mln\">$content</li>" \
>> "$gsl_HTML_list" >> "$gsl_file_html_list"
elif (( $gsl_diff_pm_mn > 0 ));then
printf "%s%s\n" \ elif (( $diff_pmln_mln > 0 ));then
printf "%$((mln * 3 - 3))s%s\n%$((mln * 3))s%s\n" \
"" \ "" \
"<$gsl_html_uol class=\"${gsl_site_css}_list-$gsl_html_uol\">" \ "<$gsl_html_uol class=\"${gsl_site_css}_list-$gsl_html_uol\">" \
>> "$gsl_HTML_list"
printf "%s%s\n" \
"" \ "" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mn\">$content</li>" \ "<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mln\">$content</li>" \
>> "$gsl_HTML_list" >> "$gsl_file_html_list"
elif (( $gsl_diff_pm_mn < 0 ));then
printf "</$gsl_html_uol>%.s\n" {1..eval $n} \
>> "$gsl_HTML_list"
printf "%s%s\n" \
"" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mn\">$content</li>" \
>> "$gsl_HTML_list"
elif (( $diff_pmln_mln < 0 ));then
for i in `seq $diff_pmln_mln -1`
do
if [[ "$content" ]];then
printf "%${mln_indent_close}s%s\n%${mln_indent_close}s%s\n" \
"" \
"</$gsl_html_uol>" \
"" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mln\">$content</li>" \
>> "$gsl_file_html_list"
else
printf "%${mln_indent_close}s%s\n" \
"" \
"</$gsl_html_uol>" \
>> "$gsl_file_html_list"
fi
mln_indent_close=$((mln_indent_close - 3))
(( $mln_indent_close < 0 )) && mln_indent_close=0
done
fi fi
done < <(cat -n "$gsl_file_block_list") done < <(cat -n "$gsl_file_block_list")
echo "</$gsl_html_uol>" >> "$gsl_HTML_list"
# Remove useless list in tmp_post
gsl_list_rm_tl=$(( $gsl_list_c - $gsl_list_o ))
for rml in `seq 0 $gsl_list_rm_tl`
do
sed -i "${gsl_list_o}d" "$gsl_tmp_post"
done
# Insert new HTML file list in tmp_post
gsl_list_line_i=$(( gsl_list_o - 1))
sed -i "${gsl_list_line_i}r $gsl_HTML_list" "$gsl_tmp_post"
rm -f "$gsl_HTML_list" # No more needed HTML tmp file list
} }
#---------------------------------------------------------------------- #----------------------------------------------------------------------
#====================================================================== #======================================================================
# Replace gsl_mark_fcode # Replace gsl_mark_fcode
#====================================================================== #======================================================================
@ -276,7 +273,6 @@ do
sed -i "${line}d" "$gsl_tmp_post" sed -i "${line}d" "$gsl_tmp_post"
rm -f "$gsl_file_tmp_code" rm -f "$gsl_file_tmp_code"
rm -f "$gsl_file_bcode" rm -f "$gsl_file_bcode"
done < <(grep -n "$gsl_mark_fcode" "$gsl_tmp_post" | head -n 1) done < <(grep -n "$gsl_mark_fcode" "$gsl_tmp_post" | head -n 1)
} }
@ -299,7 +295,7 @@ printf '%s%s%s%s' \
"$gsl_post_hf_1" \ "$gsl_post_hf_1" \
"</a>"` "</a>"`
echo -ne "\r\033[2K: Converting Links... $gsl_post_hf_1" echo -ne "\r\033[2K: Converting Link... $gsl_post_hf_1"
sed -i "s|_${gsl_post_hf_1_t}|$gsl_html_link_t|g" "$gsl_tmp_post" sed -i "s|_${gsl_post_hf_1_t}|$gsl_html_link_t|g" "$gsl_tmp_post"
# No Target # No Target
@ -317,103 +313,71 @@ unset gsl_post_hf_3 gsl_html_link_title
# From gsl__do_header: Make ABBRS # From gsl__do_header: Make ABBRS
#====================================================================== #======================================================================
gsl__make_abbr() { gsl__make_abbr() {
echo -ne "\r\033[2K: Converting ABBRs... $gsl_post_hf_1" echo -ne "\r\033[2K: Converting ABBR... $gsl_post_hf_1"
gsl_html_long="<abbr title=\"$gsl_post_hf_2\">$gsl_post_hf_1</abbr>" gsl_html_long="<abbr title=\"$gsl_post_hf_2\">$gsl_post_hf_1</abbr>"
sed -i "s|$gsl_post_hf_1|$gsl_html_long|" "$gsl_tmp_post" sed -i "s|$gsl_post_hf_1|$gsl_html_long|" "$gsl_tmp_post"
} }
#======================================================================= #=======================================================================
# Find and convert Titles #1-6 # Find and convert Titles #1-6 + block dib
#======================================================================= #=======================================================================
gsl__make_titles() { gsl__make_titles() {
for t in `seq 1 6` gsl_file_block_titles=`mktemp`
while read -r "ln" "t" "content"
do do
while read -r "h" "content" echo -ne "\r\033[2K: Converting Block Title... $t $content"
do if [[ $ln_o ]];then
gsl_html_title="<h$t>$content</h$t>" if [[ $ln_c ]];then
ln_o=$ln_c
ln_c=$ln
else
ln_c=$ln
fi
else
ln_o=$ln
tn=${t: -1}
echo "<h$tn>$content</h$tn>" >> "$gsl_file_block_titles"
fi
echo -ne "\r\033[2K: Converting Titles... $content" if [[ $ln_c ]];then
sed -i "s^$h $content^$gsl_html_title^" \ tn=${t: -1}
"$gsl_tmp_post" if [[ `awk -v o="$ln_o" -v c="$ln_c" \
done < <(grep "#$t" "$gsl_tmp_post") 'NR > o && NR < c' \
done "$gsl_tmp_post"` ]];then
echo "<div class=\"${gsl_site_css}_content-p ${gsl_site_css}_content-p$tn\">" \
>> "$gsl_file_block_titles"
awk -v o="$ln_o" -v c="$ln_c" \
'NR > o && NR < c && $0' \
"$gsl_tmp_post" \
>> "$gsl_file_block_titles"
echo -e "</div>\n" \
>> "$gsl_file_block_titles"
fi
echo "<h$tn>$content</h$tn>" >> "$gsl_file_block_titles"
fi
done < <(awk '$1 ~ /#/ {print NR,$0}' "$gsl_tmp_post")
# Doing the last title block content
last_line=`cat "$gsl_tmp_post" | wc -l`
if [[ `awk -v o="$ln_o" -v c="$last_line" \
'NR > o && NR <= c' \
"$gsl_tmp_post"` ]];then
echo "<div class=\"${gsl_site_css}_content-p ${gsl_site_css}_content-p$tn\">" \
>> "$gsl_file_block_titles"
awk -v o="$ln_c" -v c="$last_line" \
'NR > o && NR <= c' \
"$gsl_tmp_post" \
>> "$gsl_file_block_titles"
echo "</div>" >> "$gsl_file_block_titles"
fi
cat "$gsl_file_block_titles" > "$gsl_tmp_post"
rm -f "$gsl_file_block_titles"
} }
#-----------------------------------------------------------------------
#
#=======================================================================
# Open DIVs after titles for css
#=======================================================================
gsl__make_titles_div_open() {
echo -ne "\r\033[2K: Searching Titles and Opening DIVs..."
gsl_ct=$(( gsl_ct + 1 ))
gsl_content_title=`
grep -n "<h" "$gsl_tmp_post" \
| head -n $gsl_ct \
| tail -n 1`
[[ "$gsl_content_title" == "$gsl_content_same_title" ]] && return
! [[ "$gsl_content_title" ]] && return
gsl_content_line_nbr=`
awk -F: '{print $1}' \
<<< $gsl_content_title`
gsl_title_n=`
awk -F"<h" '{print $2}' \
<<< "$gsl_content_title" \
| awk -F">" '{print $1}'`
gsl_html_div="<div class=\"${gsl_site_css}_content-p$gsl_title_n\">"
sed -i "$(( $gsl_content_line_nbr + 1 ))i$gsl_html_div" \
"$gsl_tmp_post"
gsl_content_same_title="$gsl_content_title"
gsl__make_titles_div_open
}
#=======================================================================
# Close DIVs before titles for css
#=======================================================================
gsl__make_titles_div_close() {
echo -ne "\r\033[2K: Searching Titles and Closing DIVs..."
gsl_test_line="<div class=\"${gsl_site_css}_content"
gsl_ct=$(( gsl_ct + 1 ))
gsl_content_title=`
grep -n "$gsl_test_line" "$gsl_tmp_post" \
| head -n $gsl_ct \
| tail -n 1`
[[ "$gsl_content_title" == "$gsl_content_same_title" ]] \
&& return
! [[ "$gsl_content_title" ]] && return
gsl_content_line_nbr=`
awk -F: '{print $1}' \
<<< $gsl_content_title`
while read -r "gsl_search_line_nbr" "gsl_search_line"
do
case "$gsl_search_line" in
"<h"*)
sed -i "${gsl_search_line_nbr}i</div>" "$gsl_tmp_post"
break
;;
*) continue ;;
esac
done < <(awk -v l="$gsl_content_line_nbr" \
'NR > l {print NR,$0}' \
"$gsl_tmp_post")
gsl_content_same_title="$gsl_content_title"
gsl__make_titles_div_close
}
#
#-----------------------------------------------------------------------
#======================================================================= #=======================================================================
# Find and convert paragraphs (3 different css styles) # Find and convert paragraphs (3 different css styles)
@ -739,6 +703,12 @@ do
if (( $gsl_line_nbr > $gsl_last_title_line ));then if (( $gsl_line_nbr > $gsl_last_title_line ));then
gsl_stop_line=`cat "$gsl_tmp_post" | wc -l` gsl_stop_line=`cat "$gsl_tmp_post" | wc -l`
gsl__make_a11y_add_space gsl__make_a11y_add_space
# print last line and stop
awk -v last="$gsl_stop_line" -v space="$gsl_space" \
'NR == last {print space $0}' \
"$gsl_tmp_post" \
>> "$gsl_a11y_post"
break break
fi fi

View File

@ -13,11 +13,12 @@ gsl__loop_posts() {
gsl__check_nbr_posts gsl__check_nbr_posts
(( $gsl_nbr_posts == 0 )) \ (( $gsl_nbr_posts == 0 )) \
&& gsl__logs_print \ && gsl__logs_print \
"$gsl_log_i" \ "$gsl_log_w" \
"Files" \ "Files" \
"Not found" \ "Not found" \
"$gsl_nbr_posts post. Nothing to do in" \ "Nothing to do" \
"${PWD}" \ "${PWD}" \
&& gsl_checker_war=true \
&& return && return
gsl__logs_print \ gsl__logs_print \
@ -38,13 +39,13 @@ do
gsl__get_sum "$gsl_post" gsl__get_sum "$gsl_post"
# Post too small # Post too small / Should miss headers
if (( "$gsl_post_size" <= $gsl_post_min_size ));then if (( "$gsl_post_size" <= $gsl_post_min_size ));then
gsl__logs_print \ gsl__logs_print \
"$gsl_log_w" \ "$gsl_log_w" \
"File" \ "File" \
"Size" \ "Content" \
"$gsl_post - Too small $gsl_post_size <= $gsl_post_min_size" \ "Not enough datas $gsl_post ($gsl_post_size < $gsl_post_min_size)" \
"${PWD}/$gsl_post" "${PWD}/$gsl_post"
gsl_checker_war=true gsl_checker_war=true
continue continue
@ -61,6 +62,7 @@ do
if [[ "$gsl_post_new_hash" ]];then if [[ "$gsl_post_new_hash" ]];then
unset gsl_db_post_status unset gsl_db_post_status
gsl_checker_war=true
if [[ -f "$gsl_srv_wip_page" ]];then if [[ -f "$gsl_srv_wip_page" ]];then
rm -f "$gsl_srv_wip_page" && \ rm -f "$gsl_srv_wip_page" && \
gsl__logs_print \ gsl__logs_print \
@ -69,7 +71,6 @@ do
"Delete" \ "Delete" \
"$gsl_post_type ; $gsl_post has changed !" \ "$gsl_post_type ; $gsl_post has changed !" \
"$gsl_srv_wip_page" "$gsl_srv_wip_page"
gsl_checker_war=true
fi fi
if [[ -f "$gsl_file_db_post" ]];then if [[ -f "$gsl_file_db_post" ]];then
@ -80,7 +81,6 @@ do
"Delete" \ "Delete" \
"file ; $gsl_post has changed !" \ "file ; $gsl_post has changed !" \
"$gsl_file_db_post" "$gsl_file_db_post"
gsl_checker_war=true
fi fi
fi fi

View File

@ -249,9 +249,9 @@ if ! [[ "$gsl_post_hf_3" ]];then
fi fi
} }
#======================================================================= #======================================================================
# A very simple debugger that show some values # A very simple debugger that show some values
#======================================================================= #======================================================================
gsl__debug() { gsl__debug() {
printf '\n%s\n%s\n%s\n%s\n' \ printf '\n%s\n%s\n%s\n%s\n' \
"D> 1. '$1'" \ "D> 1. '$1'" \
@ -260,3 +260,21 @@ printf '\n%s\n%s\n%s\n%s\n' \
"D> 4. '$4'" "D> 4. '$4'"
sleep .5 sleep .5
} }
#======================================================================
# Basic: create a page/post named $3 from command line with date
#======================================================================
gsl__create_article() {
touch "$PWD/$3.gsl"
cat << EONEWP >> "$PWD/$3.gsl"
type: $1
title:
slug:
info:
author:
tags:
date: $2
#1
EONEWP
}