From 195ee944a1dd95380c680d886e15a8aadab50b8e Mon Sep 17 00:00:00 2001 From: rnadler Date: Sat, 18 Nov 2023 16:32:37 -0800 Subject: [PATCH] Make tags case insensitive to fix duplicate groups. --- NEWS.org | 4 ++++ elfeed-curate.el | 34 +++++++++++++++++++++++++--------- test/elfeed-curate-tests.el | 3 +++ 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/NEWS.org b/NEWS.org index 34a7b35..1e51068 100644 --- a/NEWS.org +++ b/NEWS.org @@ -1,5 +1,9 @@ #+TITLE: Changes +*** 0.2.1 (2023-11-18) + +- Make tags case insensitive to fix duplicate groups. + *** 0.2.0 (2023-11-10) - Add entry link override functionality (=< text >= annotation). diff --git a/elfeed-curate.el b/elfeed-curate.el index 040d4c7..c3c6094 100644 --- a/elfeed-curate.el +++ b/elfeed-curate.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2023 Robert Nadler ;; Author: Robert Nadler -;; Version: 0.2.0 +;; Version: 0.2.1 ;; Package-Requires: ((emacs "25.1") (elfeed "3.4.1")) ;; Keywords: news ;; URL: https://github.com/rnadler/elfeed-curate @@ -239,12 +239,28 @@ draft = false (mapconcat (lambda (author) (plist-get author :name)) authors ", "))) +(defun elfeed-curate-normalize-one-tag (tag) + "Normalize one TAG." + (intern (downcase (symbol-name tag)))) + +(defun elfeed-curate-normalize-tags (tags) + "Return the TAGS list without semantic duplicates." + (delete-dups (mapcar (lambda (tag) (elfeed-curate-normalize-one-tag tag)) tags))) + +(defun elfeed-curate-entry-tags (entry) + "Get normalized tags for ENTRY." + (elfeed-curate-normalize-tags (elfeed-entry-tags entry))) + +(defun elfeed-curate-exclude-list() + "Get normalized exclude list tags." + (elfeed-curate-normalize-tags elfeed-curate-group-exclude-tag-list)) + (defun elfeed-curate-concat-other-groups (entry group) "Return a string of all other groups (not GROUP) concatenated for the given ENTRY." - (let* ((tags (copy-sequence (elfeed-entry-tags entry))) - (tags (delq group tags)) - (tags (cl-remove-if (lambda (tag) (memq tag elfeed-curate-group-exclude-tag-list)) tags))) + (let* ((tags (elfeed-curate-entry-tags entry)) + (tags (delq (elfeed-curate-normalize-one-tag group) tags)) + (tags (cl-remove-if (lambda (tag) (memq tag (elfeed-curate-exclude-list))) tags))) (mapconcat (lambda (tag) (elfeed-curate-tag-to-group-name tag)) tags ", "))) @@ -320,10 +336,10 @@ Show the group count if SHOW-GROUP-COUNT is not nil." (interactive) (let ((entry-list ())) (with-elfeed-db-visit (entry _) - (let ((tags (elfeed-entry-tags entry)) + (let ((tags (elfeed-curate-entry-tags entry)) (pushed)) (cl-dolist (tag tags) - (when (not (memq tag elfeed-curate-group-exclude-tag-list)) + (when (not (memq tag (elfeed-curate-exclude-list))) (progn (setq pushed t) (cl-return)))) @@ -335,10 +351,10 @@ Show the group count if SHOW-GROUP-COUNT is not nil." "Create a plist of grouped ENTRIES." (let (groups) (dolist (entry entries) - (let ((tags (elfeed-entry-tags entry)) + (let ((tags (elfeed-curate-entry-tags entry)) (pushed)) (cl-dolist (tag tags) - (when (not (memq tag elfeed-curate-group-exclude-tag-list)) + (when (not (memq tag (elfeed-curate-exclude-list))) (progn (elfeed-curate--add-entry-to-group groups entry tag) (setq pushed t) @@ -459,7 +475,7 @@ Simplified version of: