diff --git a/content.py b/content.py index 87fd69a6..c08b1301 100644 --- a/content.py +++ b/content.py @@ -385,6 +385,21 @@ def replaceContentDuplicates(content: str) -> str: return content +def removeTextFormatting(content: str) -> str: + """Removes markup for bold, italics, etc + """ + if '<' not in content: + return content + content = content.replace('', '').replace('', '') + content = content.replace('', '').replace('', '') + content = content.replace('', '') + content = content.replace('
    ', '').replace('
', '') + for level in range(1, 5): + content = content.replace('', '') + content = content.replace('', '') + return content + + def removeLongWords(content: str, maxWordLength: int, longWordsList: []) -> str: """Breaks up long words so that on mobile screens this doesn't diff --git a/posts.py b/posts.py index 32f0b7b2..36dea320 100644 --- a/posts.py +++ b/posts.py @@ -46,6 +46,7 @@ from media import replaceYouTube from content import removeLongWords from content import addHtmlTags from content import replaceEmojiFromTags +from content import removeTextFormatting from auth import createBasicAuthHeader from config import getConfigParam from blocking import isBlocked @@ -3086,6 +3087,10 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str, announcedJson['content'] = \ removeLongWords(announcedJson['content'], 40, []) + # remove text formatting, such as bold/italics + announcedJson['content'] = \ + removeTextFormatting(announcedJson['content']) + # wrap in create to be consistent with other posts announcedJson = \ outboxMessageCreateWrap(httpPrefix, diff --git a/tests.py b/tests.py index fe90d9e4..86d16aac 100644 --- a/tests.py +++ b/tests.py @@ -67,6 +67,7 @@ from content import replaceEmojiFromTags from content import addHtmlTags from content import removeLongWords from content import replaceContentDuplicates +from content import removeTextFormatting from theme import setCSSparam from semantic import isAccusatory @@ -1798,8 +1799,19 @@ def testAccusatory(): assert(not isAccusatory(testStr, None, 3)) +def testRemoveTextFormatting(): + print('testRemoveTextFormatting') + testStr = '

Text without formatting

' + resultStr = removeTextFormatting(testStr) + assert(resultStr == testStr) + testStr = '

Text with

formatting

' + resultStr = removeTextFormatting(testStr) + assert(resultStr == '

Text with formatting

') + + def runAllTests(): print('Running tests...') + testRemoveTextFormatting() testAccusatory() testWebLinks() testRecentPostsCache() diff --git a/webinterface.py b/webinterface.py index 9e90ffa8..ad1c609b 100644 --- a/webinterface.py +++ b/webinterface.py @@ -56,6 +56,7 @@ from bookmarks import bookmarkedByPerson from announce import announcedByPerson from blocking import isBlocked from blocking import isBlockedHashtag +from content import removeTextFormatting from content import switchWords from content import getMentionsFromHtml from content import addHtmlTags @@ -4099,6 +4100,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int, if not isPatch: objectContent = \ removeLongWords(postJsonObject['object']['content'], 40, []) + objectContent = removeTextFormatting(objectContent) objectContent = \ switchWords(baseDir, nickname, domain, objectContent) else: