diff options
author | Alexey Shpakovsky <alexey@shpakovsky.ru> | 2014-03-18 22:17:34 +0100 |
---|---|---|
committer | Alexey Shpakovsky <alexey@shpakovsky.ru> | 2014-03-18 23:50:25 +0100 |
commit | 74537033f3f144f6360d338ecd99764b85f82f10 (patch) | |
tree | 42b3f1ae675720d23dd0643f7fe5524ad970dc1a | |
parent | 99fea81fcbf7bbdd902a33e0c4a9d492826fde80 (diff) |
bugfix: keep old page filename in the page's title link to itself
pass proper filename through parse_file to create_html_page
Bug was that when editing with "bb edit page.html" and changing title,
regenerated page.html had <h3><a class="ablack"> linking to newtitle.html
(non-existing file)
-rwxr-xr-x | bb.sh | 46 |
1 files changed, 27 insertions, 19 deletions
@@ -365,12 +365,12 @@ edit() { get_html_file_content 'text' 'text' <$1 | sed "s|<a href='$prefix_tags\([^']*\).html'>\\1</a>|\\1|g" >> "$TMPFILE" rm $1 $EDITOR "$TMPFILE" - parse_file "$TMPFILE" "$edit_timestamp" # this command sets $filename as the html processed file - rm "$TMPFILE" if [ "$2" = "keep" ]; then - mv $filename $1 - filename="$1" + parse_file "$TMPFILE" "$edit_timestamp" "$1" + else + parse_file "$TMPFILE" "$edit_timestamp" # this command sets $filename as the html processed file fi + rm "$TMPFILE" fi touch -t "$touch_timestamp" "$filename" chmod 644 "$filename" @@ -487,8 +487,12 @@ create_html_page() { # Parse the plain text file into an html file # -# $1 file name +# $1 source file name # $2 (optional) timestamp for the file +# $3 (optional) destination file name +# note that although timestamp is optional, something must be provided at its +# place if destination file name is provided, i.e: +# parse_file source.txt "" destination.html parse_file() { # Read for the title and check that the filename is ok title="" @@ -497,21 +501,25 @@ parse_file() { # set title and # remove extra <p> and </p> added by markdown title=$(echo "$line" | sed 's/<\/*p>//g') - filename="$(echo $title | tr [:upper:] [:lower:])" - filename="$(echo $filename | sed 's/\ /-/g')" - filename="$(echo $filename | sed 'y/йцукенгшщзхъфывапролджэячсмитьбю/jcukengsszh-fyvaproldzeahsmit-by/')" - filename="$(echo $filename | sed 'y/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/jcukengsszh-fyvaproldzeahsmit-by/')" - filename="$(echo $filename | tr -dc '[:alnum:]-')" # html likes alphanumeric - filename="$(echo $filename | sed 's/^-*//')" # unix utilities are unhappy if filename starts with - - [ "$filename" ] || filename=$RANDOM # if filename gets empty, put something in it - filename="$filename.html" + if [ "$3" ]; then + filename=$3 + else + filename="$(echo $title | tr [:upper:] [:lower:])" + filename="$(echo $filename | sed 's/\ /-/g')" + filename="$(echo $filename | sed 'y/йцукенгшщзхъфывапролджэячсмитьбю/jcukengsszh-fyvaproldzeahsmit-by/')" + filename="$(echo $filename | sed 'y/ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ/jcukengsszh-fyvaproldzeahsmit-by/')" + filename="$(echo $filename | tr -dc '[:alnum:]-')" # html likes alphanumeric + filename="$(echo $filename | sed 's/^-*//')" # unix utilities are unhappy if filename starts with - + [ "$filename" ] || filename=$RANDOM # if filename gets empty, put something in it + filename="$filename.html" + + # Check for duplicate file names + while [ -f "$filename" ]; do + suffix="$RANDOM" + filename="$(echo $filename | sed 's/\.html/'$suffix'\.html/g')" + done + fi content="$filename.tmp" - - # Check for duplicate file names - while [ -f "$filename" ]; do - suffix="$RANDOM" - filename="$(echo $filename | sed 's/\.html/'$suffix'\.html/g')" - done # Parse possible tags elif [[ "$line" = "<p>$template_tags_line_header"* ]]; then tags="$(echo "$line" | cut -d ":" -f 2- | sed -e 's/<\/p>//g' -e 's/^ *//' -e 's/ *$//' -e 's/, /,/g')" |