What's a better way to write this?
(defun parse-netscape-bookmarks (file)
"Return a consed list of titles and URLs from bookmark FILE."
(mapcar #'(lambda (b)
(let ((split (split-string b "\"")))
(cons (string-remove-suffix "</A>" (string-remove-prefix ">" (mapconcat 'identity (last split))))
(cadr split))))
(mapcar #'car (s-match-strings-all "<DT>.*" (f-read-text file)))))
[/code
Intended use:
(defun run-command-on-title (command prompt list)
"Select title with PROMPT from LIST and run COMMAND on consed URI."
(call-process-shell-command
(format "setsid -f %s %s &" command (shell-quote-argument
(cdr (assoc
(completing-read prompt list)
list))))))
(defun select-bookmark ()
"Select a Netscape bookmark and open in $BROWSER."
(interactive)
(run-command-on-title "$BROWSER" "Select bookmark:" (parse-netscape-bookmarks "~/.local/share/bookmarks.html")))