list: major restructure
currently only tag search is functional.
This commit is contained in:
63
sxbm
63
sxbm
@ -86,62 +86,63 @@ bm_add() {
|
||||
die "Couldn't add link"
|
||||
}
|
||||
|
||||
__awk_search() {
|
||||
awk "$@"' { LINK=$1; $1="";
|
||||
print NR ") " LINK " " $0 }' "$DATA_FILE"
|
||||
}
|
||||
|
||||
# this entire function is a massive joke
|
||||
bm_list() {
|
||||
QUERY_TAG=""
|
||||
QUERY_TITLE=""
|
||||
QUERY_STRICT="||"
|
||||
TAG_STRICT="||"
|
||||
TITLE_STRICT="&&"
|
||||
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
"-c"|"--disable-colors")
|
||||
COL_LINK=""; COL_TITLE=""; COL_LINE_NUM="";
|
||||
shift
|
||||
unset COL_LINK COL_TITLE COL_LINE_NUM
|
||||
;;
|
||||
"-s"|"--strict")
|
||||
QUERY_STRICT="&&"
|
||||
shift
|
||||
TAG_STRICT="&&"
|
||||
;;
|
||||
"-S")
|
||||
TITLE_STRICT="||"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# POSIX shell doesn't have arrays.
|
||||
# Desperate times calls for desperate measures!
|
||||
# search titles
|
||||
# awk 'toupper($0)~"[[:blank:]]SUCKLESS[[:blank:]]" && toupper($0)~"[[:blank:]]ROCKS[[:blank:]]"'
|
||||
# search tags
|
||||
# awk "/[[:blank:]]\+apps($| )/ || /[[:blank:]]\+books($| )/"
|
||||
while [ -n "$1" ]; do
|
||||
case "$1" in
|
||||
+*)
|
||||
[ -z "$QUERY_TAG" ] &&
|
||||
QUERY_TAG="/[[:blank:]]\\$1($| )/" ||
|
||||
QUERY_TAG="${QUERY_TAG} $QUERY_STRICT /[[:blank:]]\\$1($| )/"
|
||||
QUERY_TAG="/[[:blank:]]\\$1($| )/ $TAG_STRICT $QUERY_TAG"
|
||||
;;
|
||||
*)
|
||||
if [ -z "$QUERY_TITLE" ]; then
|
||||
QUERY_TITLE="grep -i -e \"$1\""
|
||||
else
|
||||
[ "$QUERY_STRICT" = "&&" ] &&
|
||||
QUERY_TITLE="${QUERY_TITLE} | grep -i -e \"$1\"" ||
|
||||
QUERY_TITLE="${QUERY_TITLE} -e \"$1\""
|
||||
fi
|
||||
tmp_char="$(echo "$1" | tr '[:lower:]' '[:upper:]')"
|
||||
QUERY_TITLE=""
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
QUERY_TAG="${QUERY_TAG%$TAG_STRICT }"
|
||||
|
||||
__tag_search() {
|
||||
awk -v COL_LINE_NUM="$COL_LINE_NUM" \
|
||||
-v COL_LINK="$COL_LINK" -v COL_TITLE="$COL_TITLE" \
|
||||
"$QUERY_TAG"'{ LINK=$1; $1="";
|
||||
gsub(/[[:space:]]\+[^[:space:]]+/,"");
|
||||
print COL_LINE_NUM NR ") " COL_LINK LINK " " COL_TITLE $0 }' \
|
||||
"$DATA_FILE"
|
||||
}
|
||||
|
||||
[ -z "$QUERY_TITLE" ] &&
|
||||
__tag_search ||
|
||||
__tag_search | eval "$QUERY_TITLE"
|
||||
if [ -z "$QUERY_TAG" ] && [ -z "$QUERY_TITLE" ]; then
|
||||
__awk_search
|
||||
elif [ -n "$QUERY_TAG" ] && [ -z "$QUERY_TITLE" ]; then
|
||||
__awk_search "$QUERY_TAG"
|
||||
elif [ -z "$QUERY_TAG" ] && [ -n "$QUERY_TITLE" ]; then
|
||||
__awk_search "$QUERY_TITLE"
|
||||
elif [ -n "$QUERY_TAG" ] && [ -n "$QUERY_TITLE" ]; then
|
||||
printf '%s\n%s\n' \
|
||||
"$(__awk_search "$QUERY_TAG")" "$(__awk_search "$QUERY_TITLE")" |
|
||||
sort | uniq -d
|
||||
fi
|
||||
}
|
||||
|
||||
bm_open() {
|
||||
|
||||
Reference in New Issue
Block a user