All this cause my brain can't undersant regex

This commit is contained in:
octospacc 2022-07-12 00:22:49 +02:00
parent 2d6b537315
commit 62e485977d
2 changed files with 29 additions and 13 deletions

View File

@ -191,6 +191,7 @@ def MakeCategoryLine(File, Meta):
return Categories return Categories
def PatchHTML(File, HTML, PartsText, ContextParts, ContextPartsText, HTMLPagesList, PagePath, Content, Titles, Meta, SiteRoot, SiteName, BlogName, FolderRoots, Categories, Locale): def PatchHTML(File, HTML, PartsText, ContextParts, ContextPartsText, HTMLPagesList, PagePath, Content, Titles, Meta, SiteRoot, SiteName, BlogName, FolderRoots, Categories, Locale):
# print(ReplaceWithEscape(HTML, '[HTML:Site:Name]', SiteName)) # Test
HTMLTitles = FormatTitles(Titles) HTMLTitles = FormatTitles(Titles)
BodyDescription, BodyImage = '', '' BodyDescription, BodyImage = '', ''
Parse = BeautifulSoup(Content, 'html.parser') Parse = BeautifulSoup(Content, 'html.parser')
@ -221,19 +222,18 @@ def PatchHTML(File, HTML, PartsText, ContextParts, ContextPartsText, HTMLPagesLi
HTML = HTML.replace('[HTML:ContextPart:{}]'.format(Path), Text) HTML = HTML.replace('[HTML:ContextPart:{}]'.format(Path), Text)
for i in PartsText: for i in PartsText:
HTML = HTML.replace('[HTML:Part:{}]'.format(i), PartsText[i]) HTML = HTML.replace('[HTML:Part:{}]'.format(i), PartsText[i])
HTML = (HTML HTML = ReplWithEsc(HTML, '[HTML:Site:Menu]', HTMLPagesList)
).replace('[HTML:Site:Menu]', HTMLPagesList HTML = ReplWithEsc(HTML, '[HTML:Page:Chapters]', HTMLTitles)
).replace('[HTML:Page:Chapters]', HTMLTitles HTML = ReplWithEsc(HTML, '[HTML:Page:Title]', Title)
).replace('[HTML:Page:Title]', Title HTML = ReplWithEsc(HTML, '[HTML:Page:Description]', Description)
).replace('[HTML:Page:Description]', Description HTML = ReplWithEsc(HTML, '[HTML:Page:Image]', Image)
).replace('[HTML:Page:Image]', Image HTML = ReplWithEsc(HTML, '[HTML:Page:Path]', PagePath)
).replace('[HTML:Page:Path]', PagePath HTML = ReplWithEsc(HTML, '[HTML:Page:Style]', Meta['Style'])
).replace('[HTML:Page:Style]', Meta['Style'] HTML = ReplWithEsc(HTML, '[HTML:Page:Content]', Content)
).replace('[HTML:Page:Content]', Content HTML = ReplWithEsc(HTML, '[HTML:Page:ContentHeader]', MakeContentHeader(Meta, Locale, MakeCategoryLine(File, Meta)))
).replace('[HTML:Page:ContentHeader]', MakeContentHeader(Meta, Locale, MakeCategoryLine(File, Meta)) HTML = ReplWithEsc(HTML, '[HTML:Site:Name]', SiteName)
).replace('[HTML:Site:Name]', SiteName HTML = ReplWithEsc(HTML, '[HTML:Site:AbsoluteRoot]', SiteRoot)
).replace('[HTML:Site:AbsoluteRoot]', SiteRoot HTML = ReplWithEsc(HTML, '[HTML:Site:RelativeRoot]', GetLevels(PagePath))
).replace('[HTML:Site:RelativeRoot]', GetLevels(PagePath))
for i in FolderRoots: for i in FolderRoots:
HTML = HTML.replace('[HTML:Folder:{}:AbsoluteRoot]'.format(i), FolderRoots[i]) HTML = HTML.replace('[HTML:Folder:{}:AbsoluteRoot]'.format(i), FolderRoots[i])
for i in Categories: for i in Categories:

View File

@ -70,6 +70,22 @@ def FindAllIndex(Str, Sub):
yield i yield i
i = Str.find(Sub, i+1) i = Str.find(Sub, i+1)
def ReplWithEsc(Str, Find, Repl, Esc='\\'):
New = ''
Sects = Str.split(Find)
for i,e in enumerate(Sects):
if i == 0:
New += e
elif i > 0:
if Sects[i-1].endswith(Esc*2):
New = New[:-1]
New += Repl + e
elif Sects[i-1].endswith(Esc):
New += Find + e
else:
New += Repl + e
return New
def GetFullDate(Date): def GetFullDate(Date):
if not Date: if not Date:
return None return None