forked from indymedia/epicyon
Remove formatting such as bold and italics from posts
This is to be conformant with what Mastodon is doing. Probably markdown should be an optional extramain
parent
f5e9db1dd6
commit
5ba0e38090
15
content.py
15
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('<b>', '').replace('</b>', '')
|
||||
content = content.replace('<i>', '').replace('</i>', '')
|
||||
content = content.replace('<ul>', '').replace('</ul>', '')
|
||||
content = content.replace('<ol>', '').replace('</ol>', '')
|
||||
for level in range(1, 5):
|
||||
content = content.replace('<h' + str(level) + '>', '')
|
||||
content = content.replace('</h' + str(level) + '>', '')
|
||||
return content
|
||||
|
||||
|
||||
def removeLongWords(content: str, maxWordLength: int,
|
||||
longWordsList: []) -> str:
|
||||
"""Breaks up long words so that on mobile screens this doesn't
|
||||
|
|
5
posts.py
5
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,
|
||||
|
|
12
tests.py
12
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 = '<p>Text without formatting</p>'
|
||||
resultStr = removeTextFormatting(testStr)
|
||||
assert(resultStr == testStr)
|
||||
testStr = '<p>Text <i>with</i> <h3>formatting</h3></p>'
|
||||
resultStr = removeTextFormatting(testStr)
|
||||
assert(resultStr == '<p>Text with formatting</p>')
|
||||
|
||||
|
||||
def runAllTests():
|
||||
print('Running tests...')
|
||||
testRemoveTextFormatting()
|
||||
testAccusatory()
|
||||
testWebLinks()
|
||||
testRecentPostsCache()
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue