stl-statilque-litterateur/var/lib/stl/scripts/wip__article

1013 lines
25 KiB
Text
Raw Normal View History

2022-07-20 19:37:21 +02:00
#!/bin/bash
# Name: Statique Littérateur
# Type: Article makers
# file: wip__article
# Folder: /var/lib/stl/scripts/
# By echolib (XMPP: im@echolib.re)
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#======================================================================
# Argument make
# $1: mak
# $2: arguments
#======================================================================
wip__OPTIONS() {
! [[ "$2" ]] \
&& noarg "Cannot be empty"
case "$2" in
sidebar)
if ! [[ "$3" ]];then
domain__get
sidebar__create_HTML
return
fi
;;
esac
while test "$2"
do
case "$2" in
-F) wip_force=true ;;
*".stl") article__hash "$2" ;;
"sidebar="*) sidebar="$2";position=${sidebar/sidebar=} ;;
*) noarg "$2" "Use: -F, (ARTICLE).stl,sidebar" ;;
esac
shift
done
# Before convert, check if article has db, not changed, errors
if__article_db "$article_db"
if [[ $need_check ]];then
echo "! Article has changed. you must check it first"
exit
elif [[ $article_error == 'yes' ]];then
echo "! Article is not valid. Check for errors first"
exit
fi
# check wip hash and wip file exists
do_wip=true
if [[ $article_wip_hash ]];then
if [[ -f "$domain_dir_wip$article_uri_srv" ]];then
2022-07-20 19:37:21 +02:00
if [[ $article_wip_hash == $article_chk_hash ]];then
if [[ $wip_force ]];then
log__add -w -M -A \
"Already Exists and up. Force connvert again"
else
log__add -w -M -A \
"Already Exists and up. Use -F to connvert again"
unset do_wip
fi
else
log__add -i -M -A \
"Already Exists but old. Connvert"
fi
else
log__add -w -M -A \
"Was manually deleted ! Convert again"
fi
else
log__add -i -M -A \
"Create new HTML convertion"
fi
if [[ $do_wip ]];then
split_article "$uri_article" # Split metas & content
makers "$article_tmp_post"
fi
# Option sidebar from command line with wip
2022-07-20 19:37:21 +02:00
if [[ $sidebar ]];then
sidebar__OPTIONS sidebar add $position "$this_article"
fi
}
#======================================================================
# Modules to convert article to HTML
# $1: $article_tmp_post
#======================================================================
makers() {
# First, if inlince code: convert it to base64
make__icode_b64 code "$1"
# Quotes
make__quotes "$1"
# Titles
make__titles "$1"
make__lists "$1"
get__content_metas "^abbr: " "$article_tmp_head" make "$1"
get__content_metas "^file: " "$article_tmp_head" make "$1"
get__content_metas "^link: " "$article_tmp_head" make "$1"
get__content_metas "^image: " "$article_tmp_head" make "$1"
get__content_metas "^code: " "$article_tmp_head" make "$1"
# Bold, strong, emphasis...
make__strongs "$1"
make__bolds "$1"
make__emphasis "$1"
make__cross "$1"
make__del "$1"
make__br "$1"
# Paragraphs
make__paragraphs "$1"
# Last, decode icode from base64
make__icode_b64 decode "$1"
# At the very last converter
get__content_metas "^brut: " "$article_tmp_head" make "$1"
# a11y (tabulation)
spc=' ' # 8 spaces. Main content (2*4)
sed -i -e "s|^|$spc|" "$article_tmp_post"
#cat "$1"
create__HTML_translation
create__HTML_page
# Write wip hash to Db
sed -i "s^article_wip_hash=.*^article_wip_hash=$article_hash^" \
"$db_file" && \
log__add -i -db $article_id \
"Updated wip status"
rm -f "$article_tmp_post"
rm -f "$article_tmp_head"
}
#======================================================================
# code, decode to,from base64 icode content. Ensure keep brut text
# for decode: convert also to HTML
# $2: $article_tmp_post
#======================================================================
make__icode_b64() {
case "$1" in
code)
while IFS=: read -r 'ln' 'content'
do
while read -r 'bcode'
do
b64_bcode=`echo "$bcode" | base64`
sed -i "${ln}s^$bcode^$b64_bcode^" "$2"
done < <(grep -o -P '(?<=_`).*?(?=`_)' <<<"$content")
done < <(grep -n '`' "$2")
;;
decode)
while read -r 'bcode'
do
b64_bcode=`echo "$bcode" | base64 --decode`
sed -i "s^$bcode^$b64_bcode^" "$2"
done < <(grep -o -P '(?<=_`).*?(?=`_)' "$2")
HTML_icode="<code class=\"${domain_css}_icode\">"
sed -i "s^_\`^$HTML_icode^g" "$2"
sed -i 's^`_^</code>^g' "$2"
;;
esac
}
#======================================================================
# Covnert words in content from abbr in meta
# $1: $article_tmp_post
#======================================================================
make__abbrs() {
[[ $meta ]] || return
[[ "$header_f3" ]] \
&& abbr_use="$header_f3" \
|| abbr_use="$header_f1"
HTML_abbr=`
printf '%s %s%s%s' \
"<abbr class=\"${domain_css}_abbr\"" \
"title=\"$header_f2\">" \
"$abbr_use" \
"</abbr>"`
sed -i "s^$header_f1^$HTML_abbr^g" "$1"
}
#======================================================================
# Convert IMAGES
# $1: $article_tmp_post
#======================================================================
make__images() {
[[ $meta ]] || return
unset ${!image_@}
case "$header_f2" in
"@"*)
header_f2=${header_f2/@/}
uri_file="${sub_genuri_srv}images/$header_f2"
;;
*)
uri_file="$header_f2"
;;
esac
while read -r 'image_article'
do
image_css="center" # Default class
mark_image=${image_article#*:} # image mark to replace in article
read -r -a image_field <<<"$image_article" # fields in array
ln=`echo "${image_field[0]}" | awk -F: '{print $1}'` # Line number
for i in `seq 1 ${#image_field[@]}`
do
case "${image_field[$i]}" in
"c="*)
image_class=${image_field[$i]/c=/}
case "$image_class" in
l|g|L|G) image_css="left" ;;
r|d|R|D) image_css="right" ;;
c|C) image_css="center" ;;
*) image_css="$image_class" ;;
esac
;;
"t="*)
image_target=${image_field[$i]/t=/}
case "$image_target" in
http*|ftp*)
image_html_link_start="<a href=\"$image_target\">"
image_html_link_close="</a>"
;;
"+")
image_html_link_start="<a href=\"$uri_file\">"
image_html_link_close="</a>"
;;
esac
;;
"w="*)
image_width=${image_field[$i]/w=/}
width=`
grep -Eo '[[:alpha:]]+|[0-9]+' \
<<<"$image_width" \
| head -n 1`
if (( $width != 0 ));then
width_u=${image_width/$width}
! [[ $width_u ]] && width_u="px"
image_html_w="width:$width$width_u"
fi
;;
"h="*)
image_height=${image_field[$i]/h=/}
height=`
grep -Eo '[[:alpha:]]+|[0-9]+' \
<<<"$image_height" \
| head -n 1`
if (( $height != 0 ));then
height_u=${image_height/$height}
! [[ $height_u ]] && height_u="px"
image_html_h="height:$height$height_u"
fi
;;
esac
done
# Define Style
if [[ $width && $height ]];then
image_style=" style=\"$image_html_w;$image_html_h\""
elif [[ $width ]];then
image_style=" style=\"$image_html_w\""
elif [[ $height ]];then
image_style=" style=\"$image_html_h\""
fi
image_HTML=`
printf '%s%s%s%s%s%s\n' \
"$image_html_link_start" \
"<img class=\"${domain_css}_image $image_css\" " \
"src=\"$uri_file\" " \
"alt=\"$header_f3\" title=\"$header_f3\"" \
"$image_style />" \
"$image_html_link_close"`
sed -i "${ln}s^$mark_image^$image_HTML^" "$1"
done < <(grep -n "_image:$header_f1" "$1")
}
#======================================================================
# Convert links (with file)
# $1: $article_tmp_post
#======================================================================
make__links_file() {
[[ $meta ]] || return
case "$header_f2" in
"@"*)
header_f2=${header_f2/@/}
uri_file="${sub_genuri_srv}files/$header_f2";;
*)
uri_file="$header_f2"
;;
esac
flink_name="__$header_f1"
[[ "$header_f3" ]] \
&& flink_title=" title=\"$header_f3\""
HTML_flink=`
printf '%s %s%s%s' \
"<a class=\"${domain_css}_link-file\"" \
"href=\"$uri_file\"$flink_title>" \
"$header_f1" \
"</a>"`
HTML_flink_target=`
printf '%s %s%s%s' \
"<a class=\"${domain_css}_link-file\"" \
"href=\"$uri_file\"$flink_title target=\"_blank\">" \
"$header_f1" \
"</a>"`
sed -i "s^${flink_name}+^$HTML_flink_target^g" "$1"
sed -i "s^$flink_name^$HTML_flink^g" "$1"
}
#======================================================================
# Covnert links (not links with file)
# $1: $article_tmp_post
#======================================================================
make__links() {
[[ $meta ]] || return
link_name="_$header_f1"
[[ "$header_f3" ]] \
&& link_title=" title=\"$header_f3\""
HTML_link=`
printf '%s %s%s%s' \
"<a class=\"${domain_css}_link\"" \
"href=\"$header_f2\"$link_title>" \
"$header_f1" \
"</a>"`
HTML_link_target=`
printf '%s %s%s%s' \
"<a class=\"${domain_css}_link\"" \
"href=\"$header_f2\"$link_title target=\"_blank\">" \
"$header_f1" \
"</a>"`
sed -i "s^${link_name}+^$HTML_link_target^g" "$1"
sed -i "s^${link_name}^$HTML_link^g" "$1"
}
#======================================================================
# Convert strong word(s)
# $1: $article_tmp_post
#======================================================================
make__strongs() {
HTML_strong="<strong class=\"${domain_css}_strong\">"
sed -i "s^\*_^$HTML_strong^g" "$1"
sed -i 's^_\*^</strong>^g' "$1"
}
#======================================================================
# Convert bold word(s)
# $1: $article_tmp_post
#======================================================================
make__bolds() {
HTML_bold="<b class=\"${domain_css}_bold\">"
sed -i "s^+_^$HTML_bold^g" "$1"
sed -i 's^_+^</b>^g' "$1"
}
#======================================================================
# Convert emphasis word(s)
# $1: $article_tmp_post
#======================================================================
make__emphasis() {
HTML_em="<i class=\"${domain_css}_em\">"
sed -i "s^\\\_^$HTML_em^g" "$1"
sed -i 's^_\\^</i>^g' "$1"
}
#======================================================================
# Convert cross word(s)
# $1: $article_tmp_post
#======================================================================
make__cross() {
HTML_cross="<span class=\"${domain_css}_cross\">"
sed -i "s^×_^$HTML_cross^g" "$1"
sed -i 's^_×^</spa>^g' "$1"
}
#======================================================================
# Convert del word(s)
# $1: $article_tmp_post
#======================================================================
make__del() {
HTML_del="<del class=\"${domain_css}_del\">"
sed -i "s^~_^$HTML_del^g" "$1"
sed -i 's^_~^</del>^g' "$1"
}
#======================================================================
# Create paragraphs (classic and custom)
# $1: $article_tmp_post
#======================================================================
make__paragraphs() {
[[ `grep "^)$" "$1"` ]] \
&& sed -i "s,^)$,</p>,g" "$1" \
|| return
while read -r "lnpm" "class"
do
ln=`awk -F: '{print $1}' <<<$lnpm`
pm=`awk -F: '{print $2}' <<<$lnpm`
if [[ $class ]];then
HTML_p="<p class=\"${domain_css}_p $class\">"
sed -i "${ln}s^$pm $class^$HTML_p^" "$1"
else
HTML_p="<p class=\"${domain_css}_p\">"
sed -i "${ln}s^$pm^$HTML_p^" "$1"
fi
done < <(grep -n '^($\|^( ' "$1")
}
#======================================================================
# Create <br /> (with | at begining line
# $1: $article_tmp_post
#======================================================================
make__br() {
sed -i 's,^|$,<br />,g' "$1"
}
#======================================================================
# Create tmp file to copy article content
# Create HTML TITLES and add divs if content after
# Get rid of comments
# Copy tmp file to new article_tmp_post
# $1: $article_tmp_post
#======================================================================
make__titles() {
article_tmp_content=`mktemp` # Create tmp file to copy content
while read -r 'line'
do
if [[ $new_title ]];then
case "$line" in
''|"#"[1-6]*) ;; # If no content or title after title, do nothing
*)
printf '%s%s\n' \
"<div class=\"${domain_css}_content " \
"${domain_css}_content-h$tn\">" \
>> "$article_tmp_content"
unset new_title
div_open=true
;;
esac
fi
case "$line" in
"#"[1-6]*)
if [[ $div_open ]];then
printf '%s\n\n' \
"</div>" \
>> "$article_tmp_content"
unset div_open
fi
tn=${line:1:1}
printf '%s%s%s%s\n' \
"<h$tn " \
"class=\"${domain_css}_title ${domain_css}_title-$tn\">" \
"${line:3}" \
"</h$tn>" \
>> "$article_tmp_content"
new_title=true
;;
"# "*) continue ;; # Get rid of comments
'') continue ;;
*) printf '%s\n' "$line" >> "$article_tmp_content" ;;
esac
done < <(cat "$1")
# Close last div
[[ $div_open ]] \
&& printf '%s\n' \
"</div>" \
>> "$article_tmp_content"
# Copy tmp file to legacy article file
cat "$article_tmp_content" > "$1"
# Remove tmp content created for titles and divs
rm -f "$article_tmp_content"
}
#======================================================================
# make conteent Quotes
# $1: $article_tmp_post
#======================================================================
make__quotes() {
[[ `grep '^---' "$1"` ]] \
&& article_tmp_content=`mktemp` \
|| return
# After getting datas from loop below, print in tmp file content
# --------------------------------------------------------------
make__quote_print() {
if [[ $quote_fig ]];then
if [[ $quote_book && $quote_year ]];then
quote_title=" title=\"$quote_book $quote_year\""
quote_datas=" $quote_book $quote_year"
elif [[ $quote_book ]];then
quote_title=" titlee=\"$quote_book\""
quote_datas=" $quote_book"
elif [[ $quote_year ]];then
quote_datas=" $quote_year"
fi
cat <<EOQ >> "$article_tmp_content"
<figure class="$quote_css">
<blockquote$quote_lang$quote_html_cite>
$(printf '%s\n' "${quote_line[@]}")
</blockquote>
<figcaption>
<cite>
<a href="$quote_link"$quote_title>$quote_author</a>$quote_datas
</cite>
</figcaption>
</figure>
EOQ
else
cat <<EOQ >> "$article_tmp_content"
<blockquote class="$quote_css"$quote_lang$quote_html_cite>
$(printf '%s\n' "${quote_line[@]}")
</blockquote>
EOQ
fi
}
while read -r 'line'
do
case "$line" in
'---'*)
if [[ $quote_start ]];then
quote_close=true
make__quote_print
unset ${!quote_@}
else
quote_start=true
unset quote_close
quote_css=`awk '{print $2}' <<<"$line"`
! [[ $quote_css ]] \
&& quote_css="${domain_css}_quote" \
|| quote_css="${domain_css}_quote $quote_css"
fi
;;
*)
if [[ $quote_start ]];then
case "$line" in
"_cite"*)
quote_fig=true
quote_author=`awk -F" : " '{print $2}' <<<"$line"`
;;
"_link"*)
quote_link=`awk -F" : " '{print $2}' <<<"$line"`
quote_html_cite=" cite=\"$quote_link\""
;;
"_lang"*)
quote_lang=`awk -F" : " '{print $2}' <<<"$line"`
quote_lang=" lang=\"$quote_lang\""
;;
"_book"*)
quote_book=`awk -F" : " '{print $2}' <<<"$line"`
;;
"_year"*)
quote_year=`awk -F" : " '{print $2}' <<<"$line"`
quote_year="($quote_year)"
;;
*)
((ln++))
quote_line[ln]="$line"
;;
esac
else
printf '%s\n' "$line" >> "$article_tmp_content"
fi
;;
esac
done < <(cat "$1")
# Copy tmp file new content to legacy article file
cat "$article_tmp_content" > "$1"
# Remove tmp content created for quotes
rm -f "$article_tmp_content"
}
#======================================================================
# Lists (independant module)
# repeat for each ^>> found
# Put bloc list in a file: gsl_tmp_list_brut
# Convert list to HTML in a new file: gsl_tmp_list_HTML
# Replace gsl bloc with new file
# $1: $article_tmp_post
#======================================================================
make__lists() {
# Check for last bloc Item list
[[ `grep '^>>' "$1"` ]] || return
unset mark list mn sign muo_class my_class
# Define start and close line number
list_ln_start=`grep -n "^<<" "$1" | head -n 1 | awk -F: '{print $1}'`
list_ln_close=`grep -n "^>>" "$1" | head -n 1 | awk -F: '{print $1}'`
#----------------------------------------------------------------------
# Put gsl block list in tmp file
#----------------------------------------------------------------------
gsl_tmp_list_brut=`mktemp`
awk -v lns="$list_ln_start" -v lnc="$list_ln_close" \
'NR >= lns && NR <= lnc {print}' \
"$1" \
> "$gsl_tmp_list_brut"
# File to print HTML List
gsl_tmp_list_HTML=`mktemp`
# Define CSS class
li_class="${domain_css}_li ${domain_css}_li-"
uo_class="${domain_css}_list ${domain_css}_list-"
# Custom class for bloc only
my_class=`awk 'NR == 1 {print $2}' "$gsl_tmp_list_brut"`
[[ $my_class ]] \
&& muo_class=" $my_class $my_class-"
#----------------------------------------------------------------------
# Define list in arrays
#----------------------------------------------------------------------
i=0;l=0
while read -r "ln" "mark" "content"
do
((i++))
mark[$i]="${mark}"
sign[$i]="${mark:0:1}"
line[$i]="$ln"
mn[$i]="${#mark}"
case "$mark" in
"="*) list[$i]="ul" ;;
"+"*) list[$i]="ol" ;;
esac
done < <(awk '($1 ~ "=" || $1 ~ "+" || $1 ~ ">>") \
{print NR,$0}' \
"$gsl_tmp_list_brut")
# Generic prints li
# -----------------
make__list_li() {
printf "%$((sp + 2))s%s\n" "" \
"<li class=\"$li_class${mn[$n]}\">${content[$n]}</li>" \
| awk -v sp="$((sp+2))" \
'NR == 1 {print $0};NR > 1 {printf "%" sp "s%s\n", "", $0}' \
>> "$gsl_tmp_list_HTML"
}
# Generic print ul | ol (open current)
# ------------------------------------
make__list_open_n() {
l=$(( l + 1 ))
printf "%${sp}s%s\n" "" \
"<${list[n]}>" \
>> "$gsl_tmp_list_HTML"
}
#----------------------------------------------------------------------
# Define content items and make HTML list
#----------------------------------------------------------------------
for n in `seq 1 $i`
do
# Define content items for each list
content[$n]=`
awk -v cts="${line[$n]}" -v ctc="${line[$((n+1))]}" \
'NR >= cts && NR < ctc {print $0}' \
"$gsl_tmp_list_brut" \
| awk '{ sub(/^[ \t]+/, ""); print }'`
content[$n]=${content[$n]/${mark[$n]}/}
content[$n]=`awk '{sub(/^[ \t]+/, ""); print}' <<<"${content[$n]}"`
# Define HTML ul | ol from previous item list
# ----------------------------------------
# Define a11y tabulation for each item
sp=$(( ${mn[$n]} * 2 - 2 ))
# ----------
# First Item
# ----------
if (( $n == 1 ));then
uo_class+="${list[n]}"
[[ $my_class ]] \
&& muo_class+="${list[n]}"
l=$(( l + 1 ))
printf "%${sp}s%s\n" "" \
"<${list[n]} class=\"$uo_class$muo_class\">" \
>> "$gsl_tmp_list_HTML"
printf "%$((sp + 2))s%s\n" "" \
"<li class=\"${li_class}1\">${content[$n]}</li>" \
>> "$gsl_tmp_list_HTML"
# ---------
# Last Item
# ---------
elif (( $n == $i ));then
sp=$(( ${mn[$(( n - 1 ))]} * 2 - 2 ))
# ---------------------
# Same sign | Last Item
# ---------------------
if [[ ${sign[1]} == ${sign[$(( n - 1 ))]} ]];then
for c in `seq 1 ${mn[$(( n - 1 ))]}`
do
printf "%${sp}s%s\n" "" \
"</${list[l]}>" \
>> "$gsl_tmp_list_HTML"
sp=$(( sp - 2 ))
l=$(( l - 1 ))
done
# ---------------------
# Diff sign | Last Item
# ---------------------
else
printf "%${sp}s%s\n" "" \
"</${list[$(( n - 1 ))]}>" \
>> "$gsl_tmp_list_HTML"
l=$(( l - 1 ))
for c in `seq 1 ${mn[$(( n - 1 ))]}`
do
l=$(( l - 1 ))
sp=$(( sp - 2 ))
(( $sp < 0 )) && sp=0
printf "%${sp}s%s\n" "" \
"</${list[l]}>" \
>> "$gsl_tmp_list_HTML"
done
fi
# -----------
# Middle Item
# -----------
else
# Diff NBR between current and previous mark: mark difference
md=$(( ${mn[$n]} - ${mn[$((n - 1))]} ))
#echo "${mark[n]} | ${sign[n]} <==> ${mark[$(( n - 1 ))]} | ${sign[$(( n - 1 ))]}"
# ----------------------------
# Same Diff from previous Item
# ----------------------------
if (( $md == 0 ));then
# ---------------------
# Same sign | Same Item
# ---------------------
if [[ ${sign[n]} == ${sign[$(( n - 1 ))]} ]];then
make__list_li
# ---------------------
# Diff sign | Same Item
# ---------------------
else
make__list_open_n
make__list_li
fi
# -------------------------
# NEW Item UP from previous
# -------------------------
elif (( $md > 0 ));then
# -----------------------
# Same sign | New Item UP
# -----------------------
if [[ ${sign[n]} == ${sign[$(( n - 1 ))]} ]];then
make__list_open_n
make__list_li
# -----------------------
# Diff sign | New item UP
# -----------------------
else
make__list_open_n
make__list_li
fi
# ---------------------------
# New Item DOWN from previous
# ---------------------------
else
bsp=$(( ${mn[$(( n - 1 ))]} * 2 - 2 ))
# -------------------------
# Same sign | New Item Down
# -------------------------
if [[ ${sign[n]} == ${sign[$(( n - 1 ))]} ]];then
for c in `seq 1 ${md/-/}`
do
printf "%${bsp}s%s\n" "" \
"</${list[l]}>" \
>> "$gsl_tmp_list_HTML"
bsp=$(( bsp - 2 ))
l=$(( l - 1 ))
done
make__list_li
# -------------------------
# Diff sign | New Item Down
# -------------------------
else
l=$(( l + 1 ))
for c in `seq 1 $(( ${md/-/} + 1 ))`
do
printf "%${bsp}s%s\n" "" \
"</${list[$(( n - 1 ))]}>" \
>> "$gsl_tmp_list_HTML"
bsp=$(( bsp - 2 ))
l=$(( l - 1 ))
done
make__list_li
fi
fi
fi
done
# Delete source lines and insert HTML file
del_ln=`seq $list_ln_start $list_ln_close | wc -l`
for i in `seq 1 $del_ln`
do
sed -i "${list_ln_start}d" "$1"
done
sed -i "$((list_ln_start - 1))r$gsl_tmp_list_HTML" "$1"
rm -f "$gsl_tmp_list_brut"
rm -f "$gsl_tmp_list_HTML"
make__lists "$1"
}
#======================================================================
# make conteent precode
# $1: $article_tmp_post
#======================================================================
make__precode() {
[[ $meta ]] || return
unset ${!precode_@}
# Define CSS
precode_css="class=\"${domain_css}_code-block code-block-$header_f1\""
precode_css_line="class=\"${domain_css}_code-line\""
precode_css_content="class=\"${domain_css}_code-content\""
precode_css_source="class=\"${domain_css}_code-link\""
precode_css_div="class=\"${domain_css}_code-div\""
# No Alt-Text ; generate
[[ "$header_f3" ]] \
&& precode_title=" title=\"Code: source\"" \
|| header_f3="Code: source"
case "$header_f2" in
"@"*)
header_f2=${header_f2/@/}
uri_file="${sub_genuri_srv}files/$header_f2"
uri_file_hard="$domain_dir_files/$header_f2"
;;
*)
uri_file="$header_f2"
uri_file_hard="$uri_folder/$header_f2"
;;
esac
# Create TMP file with HTML precode
article_tmp_content=`mktemp`
cat << EOCODE > "$article_tmp_content"
<pre $precode_css>
$(while read -r 'ln' 'content'
do
printf '%2s%s%s\n' "" \
"<span $precode_css_line>$ln</span>" \
"<span $precode_css_content>$content</span>"
done < <(cat -n "$uri_file_hard"))
</pre>
<div $precode_css_div>
<a $precode_css_source
target="_blank"
href="$uri_file"$precode_title>
$header_f3
</a>
</div>
EOCODE
while IFS=: read -r 'ln' 'content'
do
sed -i "${ln}r $article_tmp_content" "$1"
sed -i "${ln}d" "$1"
done < <(grep -n "_code:$header_f1" "$1")
# Remove TMP file
rm -f "$article_tmp_content"
}
#======================================================================
# make conteent brut (copy file as is)
# $1: $article_tmp_post
#======================================================================
make__brut() {
[[ $meta ]] || return
case "$header_f2" in
"@"*)
header_f2=${header_f2/@/}
uri_file="$domain_dir_files/$header_f2"
;;
*)
uri_file="$uri_folder/$header_f2"
;;
esac
while IFS=: read -r 'ln' 'content'
do
sed -i "${ln}r $uri_file" "$1"
sed -i "${ln}d" "$1"
done < <(grep -n "_brut:$header_f1" "$1")
}