Change templating string from HTML to staticoso; Change handling of default template

This commit is contained in:
octospacc 2022-08-12 19:53:49 +02:00
parent bc290c727f
commit 78eb2ed40f
2 changed files with 33 additions and 29 deletions

View File

@ -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)

View File

@ -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"<span>[HTML:Category:{e}]</span>", Categories[e])
HTML = ReplWithEsc(HTML, f"<span>[staticoso:Category:{e}]</span>", 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"<span>[HTML:Category:{e}]</span>", Categories[e])
ContentHTML = ReplWithEsc(ContentHTML, f"<span>[staticoso:Category:{e}]</span>", 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}
<div><span>[HTML:Category:{Cat}]</span></div>
<div><span>[staticoso:Category:{Cat}]</span></div>
""")
Content, Titles, Meta = Preprocessor(FilePath, SiteRoot)
Pages += [[File, Content, Titles, Meta]]