главная|main page

состояние|status

блог|blog

файлы|files

программы|software

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Shpakovsky <alexey@shpakovsky.ru>2014-03-18 22:17:34 +0100
committerAlexey Shpakovsky <alexey@shpakovsky.ru>2014-03-18 23:50:25 +0100
commit74537033f3f144f6360d338ecd99764b85f82f10 (patch)
tree42b3f1ae675720d23dd0643f7fe5524ad970dc1a
parent99fea81fcbf7bbdd902a33e0c4a9d492826fde80 (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-xbb.sh46
1 files changed, 27 insertions, 19 deletions
diff --git a/bb.sh b/bb.sh
index 1a68286..9097a61 100755
--- a/bb.sh
+++ b/bb.sh
@@ -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')"