#!/usr/bin/env bash if [ -n "$debug" ] ; then set -x fi markdown="markdown" SRCDIR="$1" BASE_OUTPUT="$2" pushd "$SRCDIR" > /dev/null function header { local title="$1" local breadcrumb="$2" local output="$3" cat - > $output < $title
EOF } function footer { local output="$1" cat - >> $output < EOF } function proc_text { # Local links: [[...]] # Git links: [git:...] # Other remote links: [...] # Headings: == bleh == # Paragraphs: \n\n sed -re ' s/\[\[([-_a-zA-Z0-9]+)\]\]/\1<\/a>/g' - \ | sed -re ' s/\[git:([^]]+)\]/\1<\/a>/g' \ | sed -re ' s/\[([^]]+)\]/\1<\/a>/g' \ | sed -re ' s/====([^=]+)====/

\1<\/h4>/g' \ | sed -re ' s/===([^=]+)===/

\1<\/h3>/g' \ | sed -re ' s/==([^=]+)==/

\1<\/h2>/g' \ | sed -re ':a;N;$!ba;s/\n\n/<\/p>

/g' \ | awk 'BEGIN { print "

" } { print } END { print "

" }' } function proc_text_markdown { sed -re ' s/\[git:([^]]+)\]/
\1<\/a>/g' } # generate entry page echo "generating index page" header "LibreOffice Modules" " " "$BASE_OUTPUT/index.html" for module_name in *; do if [ -d $module_name ]; then cur_file=$(echo $module_name/README.md) if [ -f "$cur_file" ]; then # write index.html entry text=$(echo -e "

${module_name}

\n") if [ ${cur_file: -3} == ".md" ]; then # This is a markdown file. header_text="$(head -n1 $cur_file)" header_text="$(echo ${header_text} | sed -e 's/^\#*//g')" text="${text}${header_text}" else text="${text}$(head -n1 $cur_file | proc_text)" fi echo -e "$text" >> "$BASE_OUTPUT/index.html" # write detailed module content header "$module_name" "LibreOffice » ${module_name}" "$BASE_OUTPUT/${module_name}.html" text="

View module in:" text="${text}   git" if $(echo $INPUT_PROJECTS | grep -q $module_name); then text="${text}   Doxygen" fi text="${text}

 

" echo -e "$text" >> "$BASE_OUTPUT/${module_name}.html" if [ ${cur_file: -3} == ".md" ]; then # This is a markdown file. text="$(${markdown} $cur_file | proc_text_markdown)" echo -e "$text" >> "$BASE_OUTPUT/${module_name}.html" else proc_text < $cur_file >> "$BASE_OUTPUT/${module_name}.html" fi footer "$BASE_OUTPUT/${module_name}.html" else empty_modules[${#empty_modules[*]}]=$module_name fi fi done if [ ${#empty_modules[*]} -gt 10 ]; then echo -e "

 

READMEs were not available for these modules:

    \n" >> "$BASE_OUTPUT/index.html" for module_name in "${empty_modules[@]}"; do if [[ "$module_name" =~ ^(autom4te.cache|dictionaries|docs|helpcompiler|helpcontent2|include|instdir|lo|translations|workdir)$ ]] then continue fi echo -e "
  • ${module_name}
  • \n" >> "$BASE_OUTPUT/index.html" done echo -e "
\n" >> "$BASE_OUTPUT/index.html" fi footer "$BASE_OUTPUT/index.html" popd > /dev/null ## done