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
Version: 0.0.35
Version: 0.0.36
Section: custom
Priority: optional
Architecture: all

View File

@ -42,7 +42,7 @@ gsl_filename_auth="authors.db"
# GSL Internal Configuration
#=======================================================================
# minimum size to check a post
gsl_post_min_size=800
gsl_post_min_size=150
# Max Posts list in sidebar
gsl_list_max_posts=5
@ -103,7 +103,7 @@ gsl_mark_strong='\*\*'
gsl_mark_italic='\/'
gsl_mark_code="¤"
gsl_mark_list='='
gsl_mark_listo="ø"
gsl_mark_listo="+"
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
------------------------------------------------------------------------
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).
- 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)
@ -26,17 +52,17 @@ première ligne de votre article
```
# Page (index, 404, about...)
# Création selon le slug: /POST-TITLE.html
# Création HTML selon le slug: /POST-TITLE.html
type: page
# Article (monarticle)
# Création selon le slug: /POST-TITLE/index.html
# Création HTML selon le slug: /POST-TITLE/index.html
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
@ -242,15 +268,15 @@ _book: Esperanza 64
### Créer des listes
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...
- utilisez ```=``` pour définir l'arborescence d'une liste simple
- utilisez ```ø``` pour définir une liste ordonnée (alt+gr + o (FR azerty))
- utilisez ```=``` pour définir l'arborescence d'une liste simple (ul)
- utilisez ```+``` pour définir une liste ordonnée (ol)
```
(
Voici une liste
Voici une liste simple
= Fruits : *mangez-en*
== Kiwis
== Fraises

View File

@ -25,16 +25,16 @@ gsl sync
GSL synchronisera votre template sur votre webserver.
Rechargez votre page dans votre navigateur
Si vous avez modifié header ou footer.html, ou si de nouvelles fonctions
sont arrivées et concernent les pages HTML dans GSL, il vous faudra
reconstruire toutes les pages
Si vous avez modifié header.html ou footer.html dans votre dossier
/templates, ou si de nouvelles fonctions sont arrivées et concernent les
pages HTML dans GSL, il vous faudra reconstruire toutes les pages
```
gsl make -F
```
## 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 ```_```.
Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
@ -55,11 +55,11 @@ Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
### Dans ```<article>```
- CLASS=
- - div après chaque titre ```<hX>```: xxx_content-pX
- - p dans div content-pX: xxx_paragraph
- - div après chaque titre ```<hX>```: xxx_content-p xxx_content-pX
- - p dans div content-p: xxx_paragraph
- - - si contenu ```( 2```: xxx_paragraph-2
- - 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
- - 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
# Version: 0.0.35
# Version: 0.0.36
# file: gsl
# Folder: /usr/local/bin
# By echolib
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#=======================================================================
# Tool: Check needed file and sourcee if asked
# Tools
#=======================================================================
if__command() {
! [[ `command -v $1` ]] \
@ -33,6 +33,11 @@ case "$2" in
esac
}
gsl__invalid_option() {
echo "! Invalid argument '$1': $2"
exit
}
# Get conf
gsl__if_file "/etc/gsl/gsl.conf" 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
;;
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
exit
@ -169,7 +177,7 @@ case "$1" in
exit 0
;;
version|-v)
-v)
awk 'NR==2 {print "# Installed:",$3}' "/usr/local/bin/$app_name"
exit
;;
@ -182,6 +190,12 @@ case "$1" in
echo -ne "Online: $v_onl\n"
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
#=======================================================================
@ -204,12 +218,74 @@ gsl__if_file "$gsl_dir_scripts/gsl__do_commons" source
# Main
#=======================================================================
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)
! [[ "$2" ]] \
&& echo "! Missing argument: post [FILE]" \
&& exit
&& gsl__invalid_option "$2" "[File]"
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__command nano
EDITOR=`which nano`
@ -219,23 +295,23 @@ case "$1" in
"$gsl_log_i" \
"Starting" \
"Process" \
"edit $gsl_this_post with $EDITOR" \
"$PWD/$gsl_this_post"
"edit with $EDITOR" \
"$gsl_this_post"
gsl__get_sum "$PWD/$gsl_this_post"
gsl__get_sum "$gsl_this_post"
gsl__logs_print \
"$gsl_log_i" \
"Post" \
"edit" \
"$gsl_this_post > Hash: $gsl_post_hash | Size: $gsl_post_size" \
"$PWD/$gsl_this_post"
"Edit" \
"File" \
"Hash: $gsl_post_hash | Size: $gsl_post_size" \
"$gsl_this_post"
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
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"
else
gsl_log_infos="Unchanged"
@ -244,22 +320,21 @@ case "$1" in
gsl__logs_print \
"$gsl_log_level" \
"Post" \
"edit" \
"$gsl_this_post > $gsl_log_infos" \
"$PWD/$gsl_this_post"
"Edit" \
"File" \
"$gsl_log_infos" \
"$gsl_this_post"
gsl__logs_print \
"$gsl_log_i" \
"Stopping" \
"Process" \
"edit $gsl_this_post with $EDITOR" \
"$PWD/$gsl_this_post"
"edit with $EDITOR" \
"$gsl_this_post"
;;
db)
! [[ "$2" ]] \
&& echo "! Missing argument: post [FILE]" \
&& exit
&& gsl__invalid_option "$2" "[File]"
gsl__if_file "$2" post
[[ -f "$gsl_dir_db/$gsl_this_post.db" ]] \
@ -319,7 +394,7 @@ case "$1" in
gsl__srv_sync "$gsl_srv_wip"
;;
*)
echo "! Bad Argument: $2 ? OPT=www/wip/''"
gsl__invalid_option "$2" "www|wip"
gsl__logs_print \
"$gsl_log_i" \
"Sync" \
@ -370,8 +445,7 @@ case "$1" in
www)
! [[ "$2" ]] \
&& echo "! Missing argument: add/remove" \
&& exit
&& gsl__invalid_option "$2" "add|remove"
if__command rsync
gsl_www_act="$2"
@ -383,14 +457,12 @@ case "$1" in
gsl_ask="! REMOVE ALL www posts (yes|N)? "
;;
*)
echo "! Bad argument: $2 ? OPT=add/remove"
exit
gsl__invalid_option "$2" "add|remove"
;;
esac
! [[ "$3" ]] \
&& echo "! Missing argument: post [FILE]/all" \
&& exit
&& gsl__invalid_option "$3" "[FILE]|all"
case "$3" in
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
------------------------------------------------------------------------
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).
- 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)
@ -26,17 +52,17 @@ première ligne de votre article
```
# Page (index, 404, about...)
# Création selon le slug: /POST-TITLE.html
# Création HTML selon le slug: /POST-TITLE.html
type: page
# Article (monarticle)
# Création selon le slug: /POST-TITLE/index.html
# Création HTML selon le slug: /POST-TITLE/index.html
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
@ -242,15 +268,15 @@ _book: Esperanza 64
### Créer des listes
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...
- utilisez ```=``` pour définir l'arborescence d'une liste simple
- utilisez ```ø``` pour définir une liste ordonnée (alt+gr + o (FR azerty))
- utilisez ```=``` pour définir l'arborescence d'une liste simple (ul)
- utilisez ```+``` pour définir une liste ordonnée (ol)
```
(
Voici une liste
Voici une liste simple
= Fruits : *mangez-en*
== Kiwis
== Fraises

View File

@ -25,16 +25,16 @@ gsl sync
GSL synchronisera votre template sur votre webserver.
Rechargez votre page dans votre navigateur
Si vous avez modifié header ou footer.html, ou si de nouvelles fonctions
sont arrivées et concernent les pages HTML dans GSL, il vous faudra
reconstruire toutes les pages
Si vous avez modifié header.html ou footer.html dans votre dossier
/templates, ou si de nouvelles fonctions sont arrivées et concernent les
pages HTML dans GSL, il vous faudra reconstruire toutes les pages
```
gsl make -F
```
## 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 ```_```.
Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
@ -55,11 +55,11 @@ Pour une meilleure lisibilité, votre ACRONYM est marqué xxx.
### Dans ```<article>```
- CLASS=
- - div après chaque titre ```<hX>```: xxx_content-pX
- - p dans div content-pX: xxx_paragraph
- - div après chaque titre ```<hX>```: xxx_content-p xxx_content-pX
- - p dans div content-p: xxx_paragraph
- - - si contenu ```( 2```: xxx_paragraph-2
- - 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
- - ol (liste) ordonnée: xxx_list-ol

View File

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

View File

@ -36,8 +36,6 @@ gsl__make_list
gsl__do_icode "make" "$gsl_tmp_post"
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__make_paragraphs
@ -99,148 +97,147 @@ awk -v s="$1" \
#======================================================================
# Convert List.Get first/last line item / repeat till no more mark
#======================================================================
# Loop till no more list marker
gsl__make_list() {
unset gsl_found_list
if [[ `awk -v m="$gsl_mark_list" \
'$1 == m {print $1;exit}' \
if [[ `awk -v mls="$gsl_mark_listo" \
'$1 ~ mls {print NR,$0;exit}' \
"$gsl_tmp_post"` ]] || \
[[ `awk -v mls="$gsl_mark_list" \
'$1 ~ mls {print NR,$0;exit}' \
"$gsl_tmp_post"` ]];then
gsl_found_list=true
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
gsl__make_list_read_by_block
fi
return
}
gsl__make_list_read() {
# Get block lists by line numbers From Content
gsl_last_line=`cat $gsl_tmp_post | wc -l`
while read -r "gsl_line" "gsl_content"
# =====================================================================
# Read list by block, create tmp file, convert in HTML, replace block
# ln: line number | ml: marker list
# =====================================================================
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
case "$gsl_content" in
case "$ml" in
"$gsl_mark_list"*|"$gsl_mark_listo"*)
! [[ $gsl_list ]] \
&& gsl_list=true \
&& gsl_list_o=$gsl_line \
&& continue
[[ $gsl_list ]] && (( $gsl_line == $gsl_last_line )) \
&& gsl_list_c=$gsl_line \
&& gsl__make_list_get_block \
&& break
case "$gsl_content" in
"$gsl_mark_list"*) gsl_html_uol="ul" ;;
"$gsl_mark_listo"*) gsl_html_uol="ol" ;;
esac
case "$ml" in
"$gsl_mark_list"*)
gsl_html_uol="ul"
;;
"$gsl_mark_listo"*)
gsl_html_uol="ol"
;;
esac
! [[ $list_lb ]] && list_lb="$ln"
echo "$ml $content" >> "$gsl_file_block_list"
;;
""|*)
[[ "$gsl_list" ]] \
&& gsl_list_c=$(( gsl_line - 1 )) \
&& unset gsl_list \
&& gsl__make_list_get_block \
&& break
if [[ $list_lb ]];then
list_le=$ln
echo "" >> "$gsl_file_block_list"
break
fi
;;
esac
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
# No more needed
unset gsl_list_o gsl_list_c
# Remove in gsl_tmp_post block list and replace with $gsl_file_html_list
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"
# 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() {
# Get previeous line mark number
gsl__make_list_get_prev_mark() {
pm=`
awk -v pm="$(( $ln - 1))" \
'NR == pm {print $1}' \
"$gsl_file_block_list"`
! [[ $pm ]] && pm=0
# mln: marker list number | pmln: previous list mark number
gsl__make_list_count_prev_mark() {
pml=`awk -v pln=$(( ln -1 )) 'NR == pln {print $1}' "$gsl_file_block_list"`
pmln=${#pml}
}
# Create tmp file with HTML block-list
gsl_HTML_list=`mktemp`
#ln: line number ; mn: mark number
while read -r "ln" "mn" "content"
mln_indent=0
while read -r "ln" "ml" "content"
do
mln=${#ml}
(( $mln_indent < $mln )) \
&& mln_indent=$mln \
&& mln_indent_close=$((mln_indent * 3 - 3))
gsl__make_list_get_prev_mark
gsl_diff_pm_mn=$(( mn - pm ))
gsl__make_list_count_prev_mark
diff_pmln_mln=$(( mln - pmln ))
if (( $gsl_diff_pm_mn == 0 ));then
printf "%s%s\n" \
#echo "$mln (pmln=$pmln ; diff: $diff_pmln_mln)" >> "$gsl_file_html_list"
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>" \
>> "$gsl_HTML_list"
elif (( $gsl_diff_pm_mn > 0 ));then
printf "%s%s\n" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mln\">$content</li>" \
>> "$gsl_file_html_list"
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_list"
printf "%s%s\n" \
"" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mn\">$content</li>" \
>> "$gsl_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-$mln\">$content</li>" \
>> "$gsl_file_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" \
"" \
"<li class=\"${gsl_site_css}_list-li ${gsl_site_css}_list-$mn\">$content</li>" \
>> "$gsl_HTML_list"
"</$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
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
#======================================================================
@ -276,7 +273,6 @@ do
sed -i "${line}d" "$gsl_tmp_post"
rm -f "$gsl_file_tmp_code"
rm -f "$gsl_file_bcode"
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" \
"</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"
# No Target
@ -317,103 +313,71 @@ unset gsl_post_hf_3 gsl_html_link_title
# From gsl__do_header: Make ABBRS
#======================================================================
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>"
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() {
for t in `seq 1 6`
gsl_file_block_titles=`mktemp`
while read -r "ln" "t" "content"
do
while read -r "h" "content"
do
gsl_html_title="<h$t>$content</h$t>"
echo -ne "\r\033[2K: Converting Block Title... $t $content"
if [[ $ln_o ]];then
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"
sed -i "s^$h $content^$gsl_html_title^" \
"$gsl_tmp_post"
done < <(grep "#$t" "$gsl_tmp_post")
done
if [[ $ln_c ]];then
tn=${t: -1}
if [[ `awk -v o="$ln_o" -v c="$ln_c" \
'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_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)
@ -739,6 +703,12 @@ do
if (( $gsl_line_nbr > $gsl_last_title_line ));then
gsl_stop_line=`cat "$gsl_tmp_post" | wc -l`
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
fi

View File

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

View File

@ -249,9 +249,9 @@ if ! [[ "$gsl_post_hf_3" ]];then
fi
}
#=======================================================================
#======================================================================
# A very simple debugger that show some values
#=======================================================================
#======================================================================
gsl__debug() {
printf '\n%s\n%s\n%s\n%s\n' \
"D> 1. '$1'" \
@ -260,3 +260,21 @@ printf '\n%s\n%s\n%s\n%s\n' \
"D> 4. '$4'"
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
}