2022-06-29 00:17:52 +02:00
|
|
|
""" ================================= |
|
|
|
|
| This file is part of |
|
|
|
|
| staticoso |
|
|
|
|
| Just a simple Static Site Generator |
|
|
|
|
| |
|
|
|
|
| Licensed under the AGPLv3 license |
|
|
|
|
| Copyright (C) 2022, OctoSpacc |
|
|
|
|
| ================================= """
|
|
|
|
|
2022-06-29 20:09:13 +02:00
|
|
|
# TODO: Write the Python HTML2Gemtext converter
|
|
|
|
|
2022-06-29 00:17:52 +02:00
|
|
|
from Libs.bs4 import BeautifulSoup
|
2022-07-29 18:12:13 +02:00
|
|
|
from Modules.HTML import *
|
2022-06-29 00:17:52 +02:00
|
|
|
from Modules.Utils import *
|
|
|
|
|
2022-07-13 00:14:37 +02:00
|
|
|
def FixGemlogDateLine(Line):
|
|
|
|
if len(Line) >= 2 and Line[0] == '[' and Line[1].isdigit():
|
|
|
|
Line = Line[1:]
|
|
|
|
else:
|
|
|
|
Words = Line.split(' ')
|
|
|
|
if len(Words) >= 2 and len(Words[1]) >= 2 and Words[1][0] == '[' and Words[1][1].isdigit():
|
|
|
|
Line = Words[0] + '\n' + Words[1][1:] + ' ' + ' '.join(Words[2:])
|
|
|
|
return Line
|
|
|
|
|
2022-08-30 16:31:33 +02:00
|
|
|
def GemtextCompileList(Flags, Pages, LimitFiles):
|
2022-06-30 18:50:18 +02:00
|
|
|
Cmd = ''
|
2022-07-01 17:29:37 +02:00
|
|
|
for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in Pages:
|
2022-08-29 20:28:12 +02:00
|
|
|
if IsLightRun(File, LimitFiles):
|
|
|
|
continue
|
2022-08-30 16:31:33 +02:00
|
|
|
Src = f"{Flags['OutDir']}.gmi/{StripExt(File)}.html.tmp"
|
|
|
|
Dst = f"{Flags['OutDir']}.gmi/{StripExt(File)}.gmi"
|
2022-07-04 20:26:50 +02:00
|
|
|
SlimHTML = StripAttrs(SlimHTML)
|
2022-07-01 17:29:37 +02:00
|
|
|
for i in ('ol', 'ul', 'li'):
|
|
|
|
for j in ('<'+i+'>', '</'+i+'>'):
|
|
|
|
SlimHTML = SlimHTML.replace(j, '')
|
|
|
|
WriteFile(Src, SlimHTML.replace('</a>', '</a><br>').replace('.html', '.gmi')) # TODO: Adjust links properly..
|
2022-08-23 17:25:05 +02:00
|
|
|
Cmd += f'cat "{Src}" | html2gmi > "{Dst}"; '
|
2022-08-29 20:28:12 +02:00
|
|
|
if Cmd:
|
|
|
|
os.system(Cmd)
|
2022-07-04 22:27:38 +02:00
|
|
|
for File, Content, Titles, Meta, ContentHTML, SlimHTML, Description, Image in Pages:
|
2022-08-29 20:28:12 +02:00
|
|
|
if IsLightRun(File, LimitFiles):
|
|
|
|
continue
|
2022-08-30 16:31:33 +02:00
|
|
|
Dst = f"{Flags['OutDir']}.gmi/{StripExt(File)}.gmi"
|
2022-07-13 00:14:37 +02:00
|
|
|
Gemtext = ''
|
|
|
|
for Line in ReadFile(Dst).splitlines():
|
|
|
|
Line = FixGemlogDateLine(Line)
|
|
|
|
Gemtext += Line + '\n'
|
2022-08-30 16:31:33 +02:00
|
|
|
WriteFile(Dst, Flags['GemtextHeader'] + Gemtext)
|
2022-06-29 20:09:13 +02:00
|
|
|
|
|
|
|
def FindEarliest(Str, Items):
|
|
|
|
Pos, Item = 0, ''
|
|
|
|
for Item in Items:
|
|
|
|
Str.find(Item)
|
|
|
|
return Pos, Item
|
|
|
|
|
|
|
|
def ParseTag(Content):
|
|
|
|
print(Content)
|
|
|
|
Parse = BeautifulSoup(str(Content), 'html.parser')
|
|
|
|
Tag = Parse.find()
|