Merge pull request #169 from luoliyan/regex-tag-removal

Allow wildcard tag deletion
This commit is contained in:
Damien Elmes 2017-02-22 20:51:23 +10:00 committed by GitHub
commit 9f37cddfda

View file

@ -103,7 +103,7 @@ class TagManager:
res = self.col.db.all( res = self.col.db.all(
"select id, tags from notes where id in %s and (%s)" % ( "select id, tags from notes where id in %s and (%s)" % (
ids2str(ids), lim), ids2str(ids), lim),
**dict([("_%d" % x, '%% %s %%' % y) **dict([("_%d" % x, '%% %s %%' % y.replace('*', '%'))
for x, y in enumerate(newTags)])) for x, y in enumerate(newTags)]))
# update tags # update tags
nids = [] nids = []
@ -140,13 +140,16 @@ class TagManager:
return self.join(self.canonify(currentTags)) return self.join(self.canonify(currentTags))
def remFromStr(self, deltags, tags): def remFromStr(self, deltags, tags):
"Delete tags if they don't exists." "Delete tags if they exist."
def wildcard(pat, str):
pat = re.escape(pat).replace('\\*', '.*')
return re.search(pat, str, re.IGNORECASE)
currentTags = self.split(tags) currentTags = self.split(tags)
for tag in self.split(deltags): for tag in self.split(deltags):
# find tags, ignoring case # find tags, ignoring case
remove = [] remove = []
for tx in currentTags: for tx in currentTags:
if tag.lower() == tx.lower(): if (tag.lower() == tx.lower()) or wildcard(tag, tx):
remove.append(tx) remove.append(tx)
# remove them # remove them
for r in remove: for r in remove: