diff options
| author | Paul Buetow <paul@buetow.org> | 2022-07-02 18:06:13 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2022-07-02 18:06:13 +0300 |
| commit | 30f00fa694280a7eaa23c20affba22bd14b91739 (patch) | |
| tree | e740fee1f38945578b1c841662134c9e2fb2aadd /lib | |
| parent | 4568e15116c06897986090f1b73a419caf129002 (diff) | |
refactor the HTML extras sub-directory
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/generate.source.sh | 64 | ||||
| -rw-r--r-- | lib/html.source.sh | 21 |
2 files changed, 49 insertions, 36 deletions
diff --git a/lib/generate.source.sh b/lib/generate.source.sh index 2e1c6ef..b2dafbc 100644 --- a/lib/generate.source.sh +++ b/lib/generate.source.sh @@ -71,13 +71,19 @@ generate::convert_gmi_atom_to_html_atom () { } # Internal helper function for generate::fromgmi -generate::_fromgmi () { +generate::_to_output_format () { local -r src="$1"; shift local -r format="$1"; shift + local dest=${src/gemtext/$format} dest=${dest/.gmi/.$format} local dest_dir=$(dirname "$dest") + local title=$($SED -n '/^# / { s/# //; p; q; }' "$src" | tr '"' "'") + if [[ -z "$title" ]]; then + title="$SUBTITLE" + fi + if [[ ! -d "$dest_dir" ]]; then mkdir -p "$dest_dir" fi @@ -87,16 +93,7 @@ generate::_fromgmi () { html::fromgmi < "$src" >> "$dest.tmp" cat "$HTML_FOOTER" >> "$dest.tmp" - elif [[ "$format" == md ]]; then - md::fromgmi < "$src" >> "$dest.tmp" - fi - - local title=$($SED -n '/^# / { s/# //; p; q; }' "$src" | tr '"' "'") - if [[ -z "$title" ]]; then - title=$SUBTITLE - fi - - if [[ "$format" == html ]]; then + # For HTML, we can override the style sheet per directory. local stylesheet="$(basename "$HTML_CSS_STYLE")" local stylesheet_override="${stylesheet/.css/-override.css}" if [[ "$CONTENT_BASE_DIR/html" != "$(dirname "$dest")" ]]; then @@ -106,7 +103,15 @@ generate::_fromgmi () { s|%%DOMAIN%%|$DOMAIN|g; s|%%STYLESHEET%%|$stylesheet|g; s|%%STYLESHEET_OVERRIDE%%|$stylesheet_override|g;" "$dest.tmp" + + elif [[ "$format" == md ]]; then + md::fromgmi < "$src" >> "$dest.tmp" + + else + log ERROR "Unknown output format '$format'" + exit 2 fi + mv "$dest.tmp" "$dest" } @@ -117,37 +122,18 @@ generate::fromgmi () { log INFO "Generating $* from Gemtext" + # Add content while read -r src; do num_gmi_files=$(( num_gmi_files + 1 )) log INFO "Generating output formats from $src" for format in "$@"; do - generate::_fromgmi "$src" "$format" & + generate::_to_output_format "$src" "$format" & done done < <(find "$CONTENT_BASE_DIR/gemtext" -type f -name \*.gmi) - wait + wait log INFO "Converted $num_gmi_files Gemtext files" - # Add HTML extras (will be cleaned up further below) - cp $HTML_CSS_STYLE $CONTENT_BASE_DIR/gemtext/style.css - for section in . gemfeed notes; do - if [[ ! -d "$CONTENT_BASE_DIR/gemtext/$section" ]]; then - continue - fi - - local override_source="./htmlextras/style-${section}-override.css" - local override_dest="$CONTENT_BASE_DIR/gemtext/$section/style-override.css" - if [ ! -f "$override_source" ]; then - touch "$override_dest" # Empty override - continue - fi - cp "$override_source" "$override_dest" - done - cp "$HTML_WEBFONT_TEXT" $CONTENT_BASE_DIR/gemtext/text.ttf - cp "$HTML_WEBFONT_CODE" $CONTENT_BASE_DIR/gemtext/code.ttf - cp "$HTML_WEBFONT_HANDNOTES" $CONTENT_BASE_DIR/gemtext/handnotes.ttf - cp "$HTML_WEBFONT_TYPEWRITER" $CONTENT_BASE_DIR/gemtext/typewriter.ttf - # Add non-.gmi files to html dir. log VERBOSE "Adding other docs to $*" @@ -156,7 +142,7 @@ generate::fromgmi () { for format in "$@"; do generate::fromgmi_add_docs "$src" "$format" & done - done < <(find "$CONTENT_BASE_DIR/gemtext" -type f | $GREP -E -v '(\.git.*|\.gmi|atom.xml|\.tmp|htmlextras)$') + done < <(find "$CONTENT_BASE_DIR/gemtext" -type f | $GREP -E -v '(\.git.*|\.gmi|atom.xml|\.tmp)$') wait log INFO "Added $num_doc_files other documents to each of $*" @@ -176,8 +162,14 @@ generate::fromgmi () { done wait - # Cleanup HTML extras - rm $CONTENT_BASE_DIR/gemtext/{style.css,*.ttf} + # Add extra content + for format in "$@"; do + if [[ "$format" == html ]]; then + log INFO "Adding HTML extras" + html::add_extras & + fi + done + wait for format in "$@"; do log INFO "$format can be found in $CONTENT_BASE_DIR/$format now" diff --git a/lib/html.source.sh b/lib/html.source.sh index d55067d..125b174 100644 --- a/lib/html.source.sh +++ b/lib/html.source.sh @@ -69,6 +69,27 @@ html::process_inline () { html::process_inline_code } +html::add_extras () { + local -r html_base_dir="$CONTENT_BASE_DIR/html" + cp "$HTML_CSS_STYLE" "$html_base_dir/style.css" + + find "$html_base_dir" -mindepth 1 -maxdepth 1 -type d | $GREP -E -v '(\.git)' | + while read section_dir; do + local override_source="./extras/html/style-$(basename $section_dir)-override.css" + local override_dest="$section_dir/style-override.css" + if [ ! -f "$override_source" ]; then + touch "$override_dest" # Empty override + else + cp "$override_source" "$override_dest" + fi + done + + cp "$HTML_WEBFONT_TEXT" "$html_base_dir/text.ttf" + cp "$HTML_WEBFONT_CODE" "$html_base_dir/code.ttf" + cp "$HTML_WEBFONT_HANDNOTES" "$html_base_dir/handnotes.ttf" + cp "$HTML_WEBFONT_TYPEWRITER" "$html_base_dir/typewriter.ttf" +} + # Convert Gemtext to HTML html::fromgmi () { local is_list=no |
