]> git.plutz.net Git - cgilite/blobdiff - misc.sh
support static file serving; support null-string default in validate functions
[cgilite] / misc.sh
diff --git a/misc.sh b/misc.sh
index 9d92805e4c9451c9c7fe8094a8fc2f60e1e0071a..19997d4312d7b3986994869559a15dba4a803cef 100755 (executable)
--- a/misc.sh
+++ b/misc.sh
@@ -30,23 +30,28 @@ data_dirs(){
 validate(){
   # print value if value matches regex; otherwise print default
   value="$1"
-  regex="$(printf %s\\n "$2" \
-           | sed -r 's;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g; s;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g;'
-          )" # ^^ escape only unescaped slash characters for later insertion
+  regex="$(printf %s\\n "$2" | sed -r ':X;s;(^|[^\\])((\\\\)*)/;\1\2\\/;g;tX')"
+                             # ^^ escape only unescaped slash characters for later insertion
   default="$3"
 
   printf %s\\n "${value}" \
-  | sed -rn "2q; /^(${regex})\$/{p;q}; a${default}"
+  | sed -rn "2q; /^(${regex})\$/{p;q}; a${default}
+            "
 }
 
 invalidate(){
   # print default if value matches regex; otherwise print value
   value="$1"
-  regex="$(printf %s\\n "$2" \
-           | sed -r 's;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g; s;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g;'
-          )" # ^^ escape only unescaped slash characters for later insertion
+  regex="$(printf %s\\n "$2" | sed -r ':X;s;(^|[^\\])((\\\\)*)/;\1\2\\/;g;tX')"
+                             # ^^ escape only unescaped slash characters for later insertion
   default="$3"
 
   printf %s\\n "${value}" \
-  | sed -rn "2q; /^(${regex})\$/{bd}; p;q; :d;a${default}"
+  | sed -rn "2q; /^(${regex})\$/{bX}; p;q; :X;a${default}
+            "
+}
+
+declare -A item_name
+l10n(){
+  [ -n "${item_name[$1]+x}" ] && printf %s "$item_name[$1]" || printf %s "$1"
 }