diff --git a/qsgen2 b/qsgen2 index 309e4b4..4eb812c 100755 --- a/qsgen2 +++ b/qsgen2 @@ -16,7 +16,7 @@ ############################################################################### ############################################################################### -VERSION="0.4.3" # Sat-2024-02-24 +VERSION="0.4.4" # Sat-2024-07-10 QSGEN="Quick Site Generator 2" # Set to true or false @@ -516,29 +516,33 @@ function _pages() { if (${debug}) _msg debug "${0:t}_msg_16" page_content=$( _image "${page_content}" ) fi - if [[ $( echo ${page_content} | grep \#ytvideo ) ]]; then + if [[ $( echo ${page_content} | grep \#linkimg ) ]]; then if (${debug}) _msg debug "${0:t}_msg_17" + page_content=$( _linkimg "${page_content}" ) + fi + if [[ $( echo ${page_content} | grep \#ytvideo ) ]]; then + if (${debug}) _msg debug "${0:t}_msg_18" page_content=$( _youtube "${page_content}" ) fi # Replace every #pagetitle in pages_tpl - if (${debug}) _msg debug "${0:t}_msg_18" + if (${debug}) _msg debug "${0:t}_msg_19" pages_tpl=$(echo "${pages_tpl}" | perl -pe "s|#pagetitle|${page_title}|gs; s|#tagline|${config[site_tagline]}|gs; s|#sitename|${config[site_name]}|gs") - if (${debug}) _msg debug "${0:t}_msg_19" + if (${debug}) _msg debug "${0:t}_msg_20" # Use awk for multi-line and special character handling pages_tpl=$( awk -v new_body="$page_content" '{sub(/BODY/, new_body)} 1' <(echo "${pages_tpl}") ) # Replace #updated with today's date and #version with Name and Version to footer - if (${debug}) _msg debug "${0:t}_msg_20" + if (${debug}) _msg debug "${0:t}_msg_21" pages_tpl=$( _last_updated ${pages_tpl} ) # Always use lowercase for file names - if (${debug}) _msg debug "${0:t}_msg_21" + if (${debug}) _msg debug "${0:t}_msg_22" pages_title_lower=$( _file_to_lower "${pages_in_array}" ) # Clean up unused tags, if any - if (${debug}) _msg debug "${0:t}_msg_22" + if (${debug}) _msg debug "${0:t}_msg_23" pages_tpl=$( _cleanup "${pages_tpl}" ) # Write pages_tpl to disk @@ -548,9 +552,9 @@ function _pages() { # Insert the blog to the front page is blog_in_index is true and the file in the array is index.file_ext # and if index.tmp.html exist and is not empty if [[ ${pages_in_array} == "index.${file_ext}" && ${config[site_blog]} == "true" && -s "${config[project_root]}/blog/index.tmp.html" ]]; then - if (${debug}) _msg sub "${0:t}_msg_23" " ${pages_in_array}" - if (${debug}) _msg sub "${0:t}_msg_24" " ${config[site_blog]}" - if (${debug}) _msg sub "${0:t}_msg_25" + if (${debug}) _msg sub "${0:t}_msg_24" " ${pages_in_array}" + if (${debug}) _msg sub "${0:t}_msg_25" " ${config[site_blog]}" + if (${debug}) _msg sub "${0:t}_msg_26" if (${debug}) ls -l ${config[project_root]}/blog/index.tmp.html _add_blog_list_to_index fi @@ -563,15 +567,15 @@ function _pages() { # Insert the blog to the front page is blog_in_index is true and the file in the array is index.file_ext # and if index.tmp.html exist and is not empty if [[ ${config[site_blog]} == "true" && -s "${config[project_root]}/blog/index.tmp.html" ]]; then - _msg std "${0:t}_msg_26" - if (${debug}) _msg sub "${0:t}_msg_27" " ${pages_in_array}" - if (${debug}) _msg sub "${0:t}_msg_28" " ${config[site_blog]}" - if (${debug}) _msg sub "${0:t}_msg_25" + _msg std "${0:t}_msg_27" + if (${debug}) _msg sub "${0:t}_msg_28" " ${pages_in_array}" + if (${debug}) _msg sub "${0:t}_msg_29" " ${config[site_blog]}" + if (${debug}) _msg sub "${0:t}_msg_30" if (${debug}) ls -l ${config[project_root]}/blog/index.tmp.html _add_blog_list_to_index fi - _msg sub "${0:t}_msg_29" + _msg sub "${0:t}_msg_31" export new_updated_pages=false fi @@ -727,13 +731,17 @@ function _blogs() { if (${debug}) _msg debug "${0:t}_msg_18" blog_content=$(_image "${blog_content}") fi - if [[ $( echo ${blog_content} | grep \#ytvideo ) ]]; then + if [[ $( echo ${blog_content} | grep \#linkimg ) ]]; then if (${debug}) _msg debug "${0:t}_msg_19" + blog_content=$(_linkimg "${blog_content}") + fi + if [[ $( echo ${blog_content} | grep \#ytvideo ) ]]; then + if (${debug}) _msg debug "${0:t}_msg_20" blog_content=$(_youtube "${blog_content}") fi # Replace every #tagline in blog_content - if (${debug}) _msg debug "${0:t}_msg_20" + if (${debug}) _msg debug "${0:t}_msg_21" blog_content=$( echo ${blog_content} | perl -pe "s|#tagline|${config[site_tagline]}|gs; s|#sitename|${config[site_name]}|gs; s|#pagetitle|${page_title}|gs" ) if (${debug}) _msg debug "* Running _last_updated" @@ -742,11 +750,11 @@ function _blogs() { blog_content=$(_cleanup "${blog_content}") # Create directory if it doesn't exist - if (${debug}) _msg debug "${0:t}_msg_21" " ${config[site_root]}${blog_dir}" + if (${debug}) _msg debug "${0:t}_msg_22" " ${config[site_root]}${blog_dir}" [[ ! -d "${config[site_root]}/${blog_dir}" ]] && mkdir -p "${config[site_root]}/${blog_dir}" # Write to file - if (${debug}) _msg debug "${0:t}_msg_22" " ${config[site_root]}${blog_url}" + if (${debug}) _msg debug "${0:t}_msg_23" " ${config[site_root]}${blog_url}" echo "${blog_content}" > "${config[site_root]}${blog_url}" unset sdate btitle ingress body blog_index blog_dir blog_url @@ -754,18 +762,18 @@ function _blogs() { done # Now BLOG_META_STR_ARRAY contains the metadata string for each blog post export BLOG_META_STR_ARRAY - if (${debug}) _msg debug "${0:t}_msg_23" + if (${debug}) _msg debug "${0:t}_msg_24" export new_updated_blogs=true else - _msg sub "${0:t}_msg_24" + _msg sub "${0:t}_msg_25" export new_updated_blogs=false fi if [[ ${new_updated_blogs} == "true" ]]; then - if (${debug}) _msg sub "${0:t}_msg_25" - _blog_idx_for_index if (${debug}) _msg sub "${0:t}_msg_26" + _blog_idx_for_index + if (${debug}) _msg sub "${0:t}_msg_27" _blog_index fi @@ -1111,6 +1119,49 @@ function _image() { } +function _linkimg() { + # This function replaces #linkimg tags with tags around tags + + if [[ ${globaldebug} == "true" ]]; then + local debug=true + else + local debug=false + fi + + local content="${1}" + local modified_content="" + + # Process the content line by line + echo "${content}" | while IFS= read -r line; do + if [[ ${line} == *"#linkimg"* ]]; then + if (${debug}) _msg debug "${0:t}_msg_1" " ${line}" + + # Extract link, image, and alt text + local img_link=$(echo "${line}" | awk -F'#linkimg ' '{print $2}') + local img_url=$(echo "${img_link}" | awk -F'¤' '{print $1}') + local img_alt=$(echo "${img_link}" | awk -F'¤' '{print $2}') + + # Determine the source of the image + local real_image="" + if [[ ${img_url} =~ ^https?:// ]]; then + real_image=${img_url} + elif [[ ${img_url} =~ ^\/ ]]; then + real_image=${img_url} + else + real_image="/images/${img_url}" + fi + + # Form the replacement HTML link and image tag + local img_tag="\"${img_alt}\"" + line=${line//"#linkimg ${img_link}"/${img_tag}} + fi + modified_content+="${line}\n" + done + + # Return the modified content + echo -e "${modified_content}" +} + function _youtube() { # This embeds a YouTube video in a provided string @@ -1163,6 +1214,7 @@ function _cleanup() { -e "s|#showimg\ ||g" \ -e "s|#ytvideo\ ||g" \ -e "s|#link\ ||g" \ + -e "s|#linkimg\ ||g" \7 ) # Return the cleaned content