]> git.plutz.net Git - confetti/blobdiff - pages/cards.sh
mailto: function in card listing
[confetti] / pages / cards.sh
index a90981c6a16d02ec265bc80653aed9b29b90eca4..538146d83749fdc2b1c24d403c1a69e51487b090 100755 (executable)
@@ -64,7 +64,26 @@ list_categories() {
   | sed -r '/^[\t ]*$/d'
 }
 
   | sed -r '/^[\t ]*$/d'
 }
 
-listcards() {
+listcards_order(){
+  while read file; do
+    case "${_GET[order]}" in
+      firstname)
+        printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" "$file"
+        ;;
+      lastname)
+        printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){0} *([^;]*).*$:\3:p' "$file")" "$file"
+        ;;
+      bdate)
+        printf '%s\t%s\n' "$(sed -rn 's:^BDAY(;.+)*\:(.*)$:\2:p' "$file")" "$file"
+        ;;
+      *)  printf 'x\t%s\n' "$file"
+        ;;
+    esac
+  done \
+  | sort -u |sed -r 's;^.*\t;;'
+}
+
+listcards_filter(){
   filterex='s;^([^\n]+)\n.*$;\1;p'
   printf '%s\n' "${_GET[filter]}" |tr '^' '\n' \
   | sed -r 's;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\\\&;g' \
   filterex='s;^([^\n]+)\n.*$;\1;p'
   printf '%s\n' "${_GET[filter]}" |tr '^' '\n' \
   | sed -r 's;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\\\&;g' \
@@ -80,27 +99,24 @@ listcards() {
     filterex='/(^|\n)'"${expr}"'/I{'"${filterex}"'}'
   done
 
     filterex='/(^|\n)'"${expr}"'/I{'"${filterex}"'}'
   done
 
-  for file in "${_DATA}/vcard/"*.vcf; do
-    case "${_GET[order]}" in
-      firstname)
-        printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" "$file"
-        ;;
-      lastname)
-        printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){0} *([^;]*).*$:\3:p' "$file")" "$file"
-        ;;
-      bdate)
-        printf '%s\t%s\n' "$(sed -rn 's:^BDAY(;.+)*\:(.*)$:\2:p' "$file")" "$file"
-        ;;
-      *)  printf 'x\t%s\n' "$file"
-        ;;
-    esac
-  done \
-  | sort -u |sed -r 's;^.*\t;;' \
-  | while read n; do
+  while read n; do
     { printf '%s\n' "$n"; cat "$n"; } \
     { printf '%s\n' "$n"; cat "$n"; } \
-    | sed -rn ':X;N;$!bX; {'"$filterex"'}'
-  done \
-  | sed -r 's;^(.*/)*;;;'
+    | sed -En ':X;N;$!bX; {'"$filterex"'}'
+  done
+
+}
+
+listcards() {
+  printf %s\\n "${_DATA}/vcard/"*.vcf \
+  | listcards_filter \
+  | listcards_order \
+  | sed -E 's;^(.*/)*;;;'
+}
+
+listcards_mail() {
+  printf %s\\n "${_DATA}/vcard/"*.vcf \
+  | listcards_filter \
+  | xargs -r -d\\n sed -En 's:^EMAIL(;.+)*\:(.+)\r$:\2,:p'
 }
 
 vcf_parse() {
 }
 
 vcf_parse() {