From 6c1780cca818447652ebcbd9f34acaec3036a4c3 Mon Sep 17 00:00:00 2001 From: NRK Date: Wed, 14 Apr 2021 07:30:08 +0600 Subject: [PATCH] better implementation of add (arguably) the grep regex-s used "should" be posix compliant. also fixes grabbing words inside a link starting with + into TAGS --- sxbm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sxbm b/sxbm index 29448ac..51d7744 100755 --- a/sxbm +++ b/sxbm @@ -56,12 +56,14 @@ bm_add(){ # TODO while functional, this is extremely fucking stupid. # there has to be a better way to do this. - local LINK=$( echo "$@" | tr " " "\n" | grep -E "\w+\.\w+" ) + local LINK=$( echo "$@" | grep -o "[^[:space:]]\+\.[^[:space:]]\+" ) [ -z "$LINK" ] && die "No links found" [ "$( echo "$LINK" | wc -l )" -gt 1 ] && die "Too many links!!\n$LINK" - local TAGS=$( echo "$@" | grep -o -E "\+\w+" | tr "\n" " " ) - local TITLE=$( echo "$@" | tr " " "\n" | sed '/^+/d;/.*\.[a-zA-Z]/d' | tr "\n" " " ) + local REMAINING=$( echo "$@" | tr " " "\n" | grep -v "[^[:space:]]\+\.[^[:space:]]\+" ) + [ -n "$REMAINING" ] && + local TAGS=$( echo "$REMAINING" | grep "^\\+[^[:space:]]" | tr "\n" " " ) && + local TITLE=$( echo "$REMAINING" | grep -v "^\\+[^[:space:]]" | tr "\n" " " ) echo "$LINK $TITLE $TAGS" >> $DATA_FILE && echo "Link $(wc -l < "$DATA_FILE") added successfully!" ||