diff options
Diffstat (limited to 'packages/html.source.sh')
| -rw-r--r-- | packages/html.source.sh | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/packages/html.source.sh b/packages/html.source.sh deleted file mode 100644 index 5a292f1c..00000000 --- a/packages/html.source.sh +++ /dev/null @@ -1,153 +0,0 @@ -# Convert special characters to their HTML codes -html::encode () { - $SED ' - s|\&|\&|g; - s|<|\<|g; - s|>|\>|g; - ' <<< "$@" -} - -# Make a HTML paragraph. -html::make_paragraph () { - local -r text="$1"; shift - test -n "$text" && echo "<p>$(html::encode "$text")</p>" -} - -# Make a HTML header. -html::make_heading () { - local -r text=$($SED -E 's/^#+ //' <<< "$1"); shift - local -r level="$1"; shift - echo "<h${level}>$(html::encode "$text")</h${level}>" -} - -# Make a HTML quotation -html::make_quote () { - local -r quote="${1/> }" - echo "<p class=\"quote\"><i>$(html::encode "$quote")</i></p>" -} - -# Make a HTML image -html::make_img () { - local link="$1"; shift - local descr="$1"; shift - - if [ -z "$descr" ]; then - echo -n "<a href=\"$link\"><img src=\"$link\" /></a>" - else - echo -n "<i>$descr:</i>" - echo -n "<a href=\"$link\"><img alt=\"$descr\" title=\"$descr\" src=\"$link\" /></a>" - fi - - echo "<br />" -} - -# Make a HTML hyperlink -html::make_link () { - local link="$1"; shift - local descr="$1"; shift - - $GREP -F -q '://' <<< "$link" || link=${link/.gmi/.html} - test -z "$descr" && descr="$link" - echo "<a class=\"textlink\" href=\"$link\">$descr</a><br />" -} - -# Convert Gemtext to HTML -html::fromgmi () { - local is_list=no - local is_plain=no - - while IFS='' read -r line; do - if [[ "$is_list" == yes ]]; then - if [[ "$line" == '* '* ]]; then - echo "<li>$(html::encode "${line/\* /}")</li>" - else - is_list=no - echo "</ul>" - fi - continue - - elif [[ "$is_plain" == yes ]]; then - if [[ "$line" == '```'* ]]; then - echo "</pre>" - is_plain=no - else - html::encode "$line" - fi - continue - fi - - case "$line" in - '* '*) - is_list=yes - echo "<ul>" - echo "<li>${line/\* /}</li>" - ;; - '```'*) - is_plain=yes - echo "<pre>" - ;; - '# '*) - html::make_heading "$line" 1 - ;; - '## '*) - html::make_heading "$line" 2 - ;; - '### '*) - html::make_heading "$line" 3 - ;; - '> '*) - html::make_quote "$line" - ;; - '=> '*) - generate::make_link html "$line" - ;; - *) - html::make_paragraph "$line" - ;; - esac - done -} - -# Test HTML package. -html::test () { - local line='Hello world! This is a paragraph.' - assert::equals "$(html::make_paragraph "$line")" '<p>Hello world! This is a paragraph.</p>' - - line='' - assert::equals "$(html::make_paragraph "$line")" '' - - line='Foo &<>& Bar!' - assert::equals "$(html::make_paragraph "$line")" '<p>Foo &<>& Bar!</p>' - - line='# Header 1' - assert::equals "$(html::make_heading "$line" 1)" '<h1>Header 1</h1>' - - line='## Header 2' - assert::equals "$(html::make_heading "$line" 2)" '<h2>Header 2</h2>' - - line='### Header 3' - assert::equals "$(html::make_heading "$line" 3)" '<h3>Header 3</h3>' - - line='> This is a quote' - assert::equals "$(html::make_quote "$line")" '<p class="quote"><i>This is a quote</i></p>' - - line='=> https://example.org' - assert::equals "$(generate::make_link html "$line")" \ - '<a class="textlink" href="https://example.org">https://example.org</a><br />' - - line='=> index.gmi' - assert::equals "$(generate::make_link html "$line")" \ - '<a class="textlink" href="index.html">index.html</a><br />' - - line='=> http://example.org Description of the link' - assert::equals "$(generate::make_link html "$line")" \ - '<a class="textlink" href="http://example.org">Description of the link</a><br />' - - line='=> http://example.org/image.png' - assert::equals "$(generate::make_link html "$line")" \ - '<a href="http://example.org/image.png"><img src="http://example.org/image.png" /></a><br />' - - line='=> http://example.org/image.png Image description' - assert::equals "$(generate::make_link html "$line")" \ - '<i>Image description:</i><a href="http://example.org/image.png"><img alt="Image description" title="Image description" src="http://example.org/image.png" /></a><br />' -} |
