Ver Fonte

add some options regarding filename generation:

* force to lowercase or not
* what symbol to use instead of space
* what symbols to allow in filenames (makes bashblog more utf-8 friendly)
Alexey Shpakovsky há 11 anos atrás
pai
commit
5b71d1e524
1 ficheiros alterados com 16 adições e 5 exclusões
  1. 16 5
      bb.sh

+ 16 - 5
bb.sh

@@ -173,6 +173,14 @@ global_variables() {
     # prefix for tags/categories files
     # please make sure that no other html file starts with this prefix
     prefix_tags="tag_"
+    # force characters to lowercase - works with latin characters only
+    filename_lowercase="yes"
+    # when making filenames, replace spaces with this symbol
+    filename_spaces="-"
+    # Regexp explaining forbidden characters in filenames.
+    # Usually it's something like [^allowed-characters]
+    # Example for Cyrillic characters: [^A-z0-9А-я-]
+    filename_forbidden_characters=""
     # personalized header and footer (only if you know what you're doing)
     # DO NOT name them .header.html, .footer.html or they will be overwritten
     # leave blank to generate them, recommended
@@ -533,11 +541,14 @@ parse_file() {
             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=$title
+                [[ "$filename_lowercase" == "yes" ]] && filename="$(echo $filename | tr [:upper:] [:lower:])"
+                filename="$(echo $filename | sed "s/\\s/$filename_spaces/g")"
+                if [ "$filename_forbidden_characters" ]; then
+                    filename="$(echo $filename | LC_ALL=C.UTF-8 sed "s/$filename_forbidden_characters//g")"
+                else
+                    filename="$(echo $filename | tr -dc '[:alnum:]-')" # html likes alphanumeric
+                fi
                 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"