zshrc: Remove zurl's dependency on =~ type regexp conditions
authorFrank Terbeck <ft@grml.org>
Fri, 9 Nov 2012 09:25:26 +0000 (10:25 +0100)
committerFrank Terbeck <ft@grml.org>
Fri, 9 Nov 2012 09:36:54 +0000 (10:36 +0100)
This should improve backwards compatibility with older zsh-versions.

Reported-by: Ilya Novoselov
Signed-off-by: Frank Terbeck <ft@grml.org>
etc/zsh/zshrc

index 89b64bf..7bd4416 100644 (file)
@@ -2632,12 +2632,15 @@ xtrename() {
 # API reference: https://code.google.com/apis/urlshortener/
 function zurl() {
     emulate -L zsh
+    setopt extended_glob
+
     if [[ -z $1 ]]; then
         print "USAGE: zurl <URL>"
         return 1
     fi
 
-    local PN url prog api json data
+    local PN url prog api json contenttype item
+    local -a data
     PN=$0
     url=$1
 
@@ -2655,11 +2658,19 @@ function zurl() {
     api='https://www.googleapis.com/urlshortener/v1/url'
     contenttype="Content-Type: application/json"
     json="{\"longUrl\": \"${url}\"}"
-    data=$($prog --silent -H ${contenttype} -d ${json} $api)
-    # Match against a regex and print it
-    if [[ $data =~ '"id": "(http://goo.gl/[[:alnum:]]+)"' ]]; then
-        print $match;
-    fi
+    data=(${(f)"$($prog --silent -H ${contenttype} -d ${json} $api)"})
+    # Parse the response
+    for item in "${data[@]}"; do
+        case "$item" in
+            ' '#'"id":'*)
+                item=${item#*: \"}
+                item=${item%\",*}
+                printf '%s\n' "$item"
+                return 0
+                ;;
+        esac
+    done
+    return 1
 }
 
 #f2# Find history events by search pattern and list them by date.