message: added rename_tags() function and test
This commit is contained in:
parent
935f1ee18a
commit
02079ae22a
@ -5,7 +5,7 @@ import pathlib
|
||||
import yaml
|
||||
from typing import Type, TypeVar, ClassVar, Optional, Any, Union, Final, Literal, Iterable
|
||||
from dataclasses import dataclass, asdict, field
|
||||
from .tags import Tag, TagLine, TagError, match_tags
|
||||
from .tags import Tag, TagLine, TagError, match_tags, rename_tags
|
||||
|
||||
QuestionInst = TypeVar('QuestionInst', bound='Question')
|
||||
AnswerInst = TypeVar('AnswerInst', bound='Answer')
|
||||
@ -499,6 +499,14 @@ class Message():
|
||||
return False
|
||||
return True
|
||||
|
||||
def rename_tags(self, tags_rename: set[tuple[Tag, Tag]]) -> None:
|
||||
"""
|
||||
Renames the given tags. The first tuple element is the old name,
|
||||
the second one is the new name.
|
||||
"""
|
||||
if self.tags:
|
||||
self.tags = rename_tags(self.tags, tags_rename)
|
||||
|
||||
def msg_id(self) -> str:
|
||||
"""
|
||||
Returns an ID that is unique throughout all messages in the same (DB) directory.
|
||||
|
||||
@ -792,3 +792,15 @@ class MessageInTestCase(CmmTestCase):
|
||||
def test_message_in(self) -> None:
|
||||
self.assertTrue(message_in(self.message1, [self.message1]))
|
||||
self.assertFalse(message_in(self.message1, [self.message2]))
|
||||
|
||||
|
||||
class MessageRenameTagsTestCase(CmmTestCase):
|
||||
def setUp(self) -> None:
|
||||
self.message = Message(Question('This is a question.'),
|
||||
tags={Tag('atag1'), Tag('btag2')},
|
||||
file_path=pathlib.Path('/tmp/foo/bla'))
|
||||
|
||||
def test_rename_tags(self) -> None:
|
||||
self.message.rename_tags({(Tag('atag1'), Tag('atag2')), (Tag('btag2'), Tag('btag3'))})
|
||||
self.assertIsNotNone(self.message.tags)
|
||||
self.assertSetEqual(self.message.tags, {Tag('atag2'), Tag('btag3')}) # type: ignore [arg-type]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user