]> Sergey Matveev's repositories - torn.git/blobdiff - torn.zsh
FAT-compatible characters
[torn.git] / torn.zsh
index 700d33b4f666e3041726e8d804329e7558fd5c04..bc23537e603335664187ee70bf70925641a31ba4 100755 (executable)
--- a/torn.zsh
+++ b/torn.zsh
@@ -10,6 +10,7 @@
 # to be used with zsh'es glob expansion.
 #
 # * transliterates everything
+# * replaces non FAT-compatible characters with underscores
 # * replaces spaces with underscores
 # * lowercases file's extension
 # * replaces "_-_" with single dash
@@ -28,6 +29,8 @@
 #   $ torn # assume that it is not autoloaded
 #   $ zmv "*" '`tornt $f`'
 #
+# torna() replaces non FAT-compatible characters with underscores.
+#
 # Recursively dive into subdirectories:
 #   $ zmv -Q "(**/)*(.)" '`torn $f`'
 
@@ -62,8 +65,20 @@ tornm() {
     print -- $n
 }
 
+torna() {
+    local n=$1
+    setopt REMATCH_PCRE
+    for i ({1..${#n}}) {
+        [[ ${n[$i]} =~ "[[:ascii:]]" ]] || n[$i]=_
+        [[ ${n[$i]} =~ "[[:print:]]" ]] || n[$i]=_
+        [[ ${n[$i]} =~ "[^,+/:;<=>?[]|]" ]] || n[$i]=_
+    }
+    print -- $n
+}
+
 [[ -n $1 ]] || exit
 local n=${1:t}
 n=`tornm $n`
 n=`tornt $n`
+n=`torna $n`
 print -- ${1:h}/$n