mirror of
https://github.com/umutcamliyurt/Amnezichat.git
synced 2025-05-07 12:35:22 +01:00
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
# SPDX-License-Identifier: MIT
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def anchorstring(str):
|
|
doxyref=str.replace("/", "")
|
|
# can't simply use lower() as github-markdown retains non-leading uppercase characters
|
|
# so lowercase only every char after a space:
|
|
drwords = doxyref.split(" ")
|
|
doxyref = ""
|
|
i = 0
|
|
while i < len(drwords):
|
|
if len(drwords[i]) != 0:
|
|
doxyref = doxyref+drwords[i][0].lower() + drwords[i][1:]
|
|
if i < len(drwords)-1:
|
|
doxyref=doxyref+"-"
|
|
i=i+1
|
|
return doxyref
|
|
|
|
def reformat_anchors(s):
|
|
if "](#" in s:
|
|
i = s.index("](#") + 3
|
|
j = s[i:].index(")") + i
|
|
return s[0:i] + anchorstring(s[i:j]) + s[j:]
|
|
else:
|
|
return s
|
|
|
|
if len(sys.argv) != 3 or not Path(sys.argv[1]).is_file():
|
|
print("Expecting original and new file location. Exiting.")
|
|
exit(1)
|
|
|
|
infile = open(sys.argv[1], 'r')
|
|
lines = infile.readlines()
|
|
|
|
with open(sys.argv[2], "w") as outfile:
|
|
# ll is last line: can only be written when anchor property is known
|
|
# and that propery can be set with subsequent line of "==="
|
|
ll = None
|
|
possibleanchor = None
|
|
for line in lines:
|
|
nl = line
|
|
if line.startswith("#"): # anchor for sure
|
|
# space must exist
|
|
si = line.index(" ")
|
|
doxyref=anchorstring(line[si+1:].strip())
|
|
nl = line[0:si] + " " + line[si+1:].strip() + " {#"+doxyref+"}\n"
|
|
elif nl.startswith("==="): # previous line is anchor
|
|
ll = possibleanchor
|
|
else: # create anchor markup just in case...
|
|
possibleanchor=line.strip()+" {#"+anchorstring(line.strip())+"}\n"
|
|
if ll is not None:
|
|
ll = reformat_anchors(ll)
|
|
# write last line
|
|
if ll is not None: outfile.write(ll)
|
|
ll = nl
|
|
# write final line
|
|
outfile.write(ll)
|