From 78eb2ed40f175fd9b8946727e81949a95c0b4523 Mon Sep 17 00:00:00 2001 From: octospacc Date: Fri, 12 Aug 2022 19:53:49 +0200 Subject: [PATCH] Change templating string from HTML to staticoso; Change handling of default template --- Source/Build.py | 6 ++++- Source/Modules/Site.py | 56 +++++++++++++++++++++--------------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/Source/Build.py b/Source/Build.py index 03208f8..1ab1392 100755 --- a/Source/Build.py +++ b/Source/Build.py @@ -72,10 +72,12 @@ def GetConfMenu(Entries, MarkdownExts): def Main(Args, FeedEntries): HavePages, HavePosts = False, False SiteConf = LoadConfFile('Site.ini') + #TemplatesConf = LoadConfFile('Templates.ini') SiteName = Args.SiteName if Args.SiteName else ReadConf(SiteConf, 'Site', 'Name') if ReadConf(SiteConf, 'Site', 'Name') else '' BlogName = Args.BlogName if Args.BlogName else ReadConf(SiteConf, 'Site', 'BlogName') if ReadConf(SiteConf, 'Site', 'BlogName') else '' SiteTagline = Args.SiteTagline if Args.SiteTagline else ReadConf(SiteConf, 'Site', 'Tagline') if ReadConf(SiteConf, 'Site', 'Tagline') else '' + SiteTemplate = Args.SiteTemplate if Args.SiteTemplate else ReadConf(SiteConf, 'Site', 'Template') if ReadConf(SiteConf, 'Site', 'Template') else 'Default.html' SiteDomain = Args.SiteDomain.rstrip('/') if Args.SiteDomain else ReadConf(SiteConf, 'Site', 'Domain') if ReadConf(SiteConf, 'Site', 'Domain') else '' SiteLang = Args.SiteLang if Args.SiteLang else ReadConf(SiteConf, 'Site', 'Lang') if ReadConf(SiteConf, 'Site', 'Lang') else 'en' Locale = LoadLocale(SiteLang) @@ -124,6 +126,7 @@ def Main(Args, FeedEntries): SiteName=SiteName, BlogName=BlogName, SiteTagline=SiteTagline, + SiteTemplate=SiteTemplate, SiteDomain=SiteDomain, SiteRoot=Args.SiteRoot if Args.SiteRoot else '/', FolderRoots=literal_eval(Args.FolderRoots) if Args.FolderRoots else {}, @@ -179,7 +182,7 @@ def Main(Args, FeedEntries): StrOpen=Locale['OpenInNewTab'], URL=p['Post']) break - Content = Content.replace('[HTML:Comments]', Post) + Content = Content.replace('[staticoso:Comments]', Post) WriteFile(File, Content) if GemtextOut: @@ -202,6 +205,7 @@ if __name__ == '__main__': Parser.add_argument('--SiteRoot', type=str) Parser.add_argument('--SiteName', type=str) Parser.add_argument('--BlogName', type=str) + Parser.add_argument('--SiteTemplate', type=str) Parser.add_argument('--SiteDomain', type=str) Parser.add_argument('--NoScripts', type=str) Parser.add_argument('--GemtextOut', type=str) diff --git a/Source/Modules/Site.py b/Source/Modules/Site.py index 395af9a..a90be6d 100644 --- a/Source/Modules/Site.py +++ b/Source/Modules/Site.py @@ -111,10 +111,10 @@ def GetHTMLPagesList(Pages, BlogName, SiteRoot, PathPrefix, Unite=[], Type='Page List += Levels + Title + '\n' return markdown(MarkdownHTMLEscape(List, MarkdownExts), extensions=MarkdownExts) -def Preprocessor(Path, Type, SiteRoot, GlobalMacros): +def Preprocessor(Path, Type, SiteTemplate, SiteRoot, GlobalMacros): File = ReadFile(Path) Content, Titles, DashyTitles, HTMLTitlesFound, Macros, Meta = '', [], [], False, '', { - 'Template': 'Standard.html', + 'Template': SiteTemplate, 'Style': '', 'Type': Type, 'Index': 'Unspecified', @@ -273,8 +273,8 @@ def PatchHTML(File, HTML, PartsText, ContextParts, ContextPartsText, HTMLPagesLi for Line in HTML.splitlines(): Line = Line.lstrip().rstrip() - if Line.startswith('[HTML:ContextPart:') and Line.endswith(']'): - Path = Line[len('[HTML:ContextPart:'):-1] + if Line.startswith('[staticoso:ContextPart:') and Line.endswith(']'): + Path = Line[len('[staticoso:ContextPart:'):-1] Section = Path.split('/')[-1] if Section in ContextParts: Part = ContextParts[Section] @@ -286,40 +286,40 @@ def PatchHTML(File, HTML, PartsText, ContextParts, ContextPartsText, HTMLPagesLi Text = ContextPartsText[f"{Path}/{Part}"] else: Text = '' - HTML = ReplWithEsc(HTML, f"[HTML:ContextPart:{Path}]", Text) + HTML = ReplWithEsc(HTML, f"[staticoso:ContextPart:{Path}]", Text) for e in PartsText: - HTML = ReplWithEsc(HTML, f"[HTML:Part:{e}]", PartsText[e]) - HTML = ReplWithEsc(HTML, '[HTML:Site:Menu]', HTMLPagesList) - HTML = ReplWithEsc(HTML, '[HTML:Page:Lang]', SiteLang) - HTML = ReplWithEsc(HTML, '[HTML:Page:Chapters]', HTMLTitles) - HTML = ReplWithEsc(HTML, '[HTML:Page:Title]', Title) - HTML = ReplWithEsc(HTML, '[HTML:Page:Description]', Description) - HTML = ReplWithEsc(HTML, '[HTML:Page:Image]', Image) - HTML = ReplWithEsc(HTML, '[HTML:Page:Path]', PagePath) - HTML = ReplWithEsc(HTML, '[HTML:Page:Style]', Meta['Style']) - HTML = ReplWithEsc(HTML, '[HTML:Page:Content]', Content) - HTML = ReplWithEsc(HTML, '[HTML:Page:ContentHeader]', MakeContentHeader(Meta, Locale, MakeCategoryLine(File, Meta))) - HTML = ReplWithEsc(HTML, '[HTML:Site:Name]', SiteName) - HTML = ReplWithEsc(HTML, '[HTML:Site:AbsoluteRoot]', SiteRoot) - HTML = ReplWithEsc(HTML, '[HTML:Site:RelativeRoot]', GetPathLevels(PagePath)) + HTML = ReplWithEsc(HTML, f"[staticoso:Part:{e}]", PartsText[e]) + HTML = ReplWithEsc(HTML, '[staticoso:Site:Menu]', HTMLPagesList) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Lang]', SiteLang) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Chapters]', HTMLTitles) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Title]', Title) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Description]', Description) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Image]', Image) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Path]', PagePath) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Style]', Meta['Style']) + HTML = ReplWithEsc(HTML, '[staticoso:Page:Content]', Content) + HTML = ReplWithEsc(HTML, '[staticoso:Page:ContentInfo]', MakeContentHeader(Meta, Locale, MakeCategoryLine(File, Meta))) + HTML = ReplWithEsc(HTML, '[staticoso:Site:Name]', SiteName) + HTML = ReplWithEsc(HTML, '[staticoso:Site:AbsoluteRoot]', SiteRoot) + HTML = ReplWithEsc(HTML, '[staticoso:Site:RelativeRoot]', GetPathLevels(PagePath)) for e in Meta['Macros']: HTML = ReplWithEsc(HTML, f"[:{e}:]", Meta['Macros'][e]) for e in FolderRoots: - HTML = ReplWithEsc(HTML, f"[HTML:Folder:{e}:AbsoluteRoot]", FolderRoots[e]) + HTML = ReplWithEsc(HTML, f"[staticoso:Folder:{e}:AbsoluteRoot]", FolderRoots[e]) for e in Categories: - HTML = ReplWithEsc(HTML, f"[HTML:Category:{e}]", Categories[e]) + HTML = ReplWithEsc(HTML, f"[staticoso:Category:{e}]", Categories[e]) # TODO: Clean this doubling? ContentHTML = Content - ContentHTML = ReplWithEsc(ContentHTML, '[HTML:Site:AbsoluteRoot]', SiteRoot) - ContentHTML = ReplWithEsc(ContentHTML, '[HTML:Site:RelativeRoot]', GetPathLevels(PagePath)) + ContentHTML = ReplWithEsc(ContentHTML, '[staticoso:Site:AbsoluteRoot]', SiteRoot) + ContentHTML = ReplWithEsc(ContentHTML, '[staticoso:Site:RelativeRoot]', GetPathLevels(PagePath)) for e in Meta['Macros']: ContentHTML = ReplWithEsc(ContentHTML, f"[:{e}:]", Meta['Macros'][e]) for e in FolderRoots: - ContentHTML = ReplWithEsc(ContentHTML, f"[HTML:Folder:{e}:AbsoluteRoot]", FolderRoots[e]) + ContentHTML = ReplWithEsc(ContentHTML, f"[staticoso:Folder:{e}:AbsoluteRoot]", FolderRoots[e]) for e in Categories: - ContentHTML = ReplWithEsc(ContentHTML, f"[HTML:Category:{e}]", Categories[e]) + ContentHTML = ReplWithEsc(ContentHTML, f"[staticoso:Category:{e}]", Categories[e]) SlimHTML = HTMLPagesList + ContentHTML return HTML, ContentHTML, SlimHTML, Description, Image @@ -336,7 +336,7 @@ def DoMinifyHTML(HTML): convert_charrefs=True, keep_pre=True) -def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, ConfMenu, GlobalMacros, SiteName, BlogName, SiteTagline, SiteDomain, SiteRoot, FolderRoots, SiteLang, Locale, Minify, NoScripts, Sorting, MarkdownExts, AutoCategories): +def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, ConfMenu, GlobalMacros, SiteName, BlogName, SiteTagline, SiteTemplate, SiteDomain, SiteRoot, FolderRoots, SiteLang, Locale, Minify, NoScripts, Sorting, MarkdownExts, AutoCategories): PagesPaths, PostsPaths, Pages, MadePages, Categories = [], [], [], [], {} for Ext in FileExtensions['Pages']: for File in Path('Pages').rglob(f"*.{Ext}"): @@ -360,7 +360,7 @@ def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, ConfMenu, elif Type == 'Post': Files = PostsPaths for File in Files: - Content, Titles, Meta = Preprocessor(f"{Type}s/{File}", Type, SiteRoot, GlobalMacros) + Content, Titles, Meta = Preprocessor(f"{Type}s/{File}", Type, SiteTemplate, SiteRoot, GlobalMacros) if Type != 'Page': File = f"{Type}s/{File}" Pages += [[File, Content, Titles, Meta]] @@ -400,7 +400,7 @@ def MakeSite(TemplatesText, PartsText, ContextParts, ContextPartsText, ConfMenu, # {Cat} -
[HTML:Category:{Cat}]
+
[staticoso:Category:{Cat}]
""") Content, Titles, Meta = Preprocessor(FilePath, SiteRoot) Pages += [[File, Content, Titles, Meta]]