From dc129faf4e69fd3c84adc49aa77c2113ceaa65fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20M=C3=BCller?= <34514239+appgurueu@users.noreply.github.com> Date: Sat, 30 Jun 2018 19:43:14 +0200 Subject: [PATCH] Delete parserv5.py --- parserv5.py | 228 ---------------------------------------------------- 1 file changed, 228 deletions(-) delete mode 100644 parserv5.py diff --git a/parserv5.py b/parserv5.py deleted file mode 100644 index a5858d8..0000000 --- a/parserv5.py +++ /dev/null @@ -1,228 +0,0 @@ -# -*- coding: utf-8 -*- -print("**Minetest lua_api.txt Markdown parser - mt-lua-api-pyparse - converts Markdown to HTML document with navigation**") -print("**Written by Lars Müller alias LMD in Python 3.5 - requires Python >= 3.2**") -print("**Furthermore, this script has to be in the same folder as generate_bg.py, template.html, jumbotron.css, and the images taken from Minetest Game.**") -print("**The images taken from Minetest Game are licensed under CC-BY-SA 3.0, credits go to the Minetest Artists.**") -from cgi import html -import urllib.request as url -import urllib.parse as parse -print("**Generating underground Minetest scene...**") -exec(open("generate_bg.py","r").read()) # IMPORTANT - GENERATES THE BEAUTIFUL BACKGROUND ! -print("**...finished generating scene.**") -import math - -# This python script grabs the newest lua_api.txt from Minetest GitHub repo and converts it to HTML, plus adding some bookmarks & css -# So mainly MD -> HTML. Written by me to improve my rusty Python skills. -# © Lars Müller @appguru.eu - -print("**Grabbing newest lua_api.txt, make sure you have an internet connection...**") - -link = "https://raw.githubusercontent.com/minetest/minetest/master/doc/lua_api.txt" # Grab newest lua_api.txt -f = url.urlopen(link) -markdown = parse.unquote(str(f.read().decode("ascii","ignore"))) # Read & convert - -print("**...grabbed newest lua_api.txt from official Minetest repository.**") - -liste=0 # Which sublist we are in right NOW -headers=[] # Stores all the headers + IDs -ID=0 # Stores header ID counter - -print("**Starting parsing...**") - -def parse_markdown(string,lco=0,parent=False): # PARSES A SINGLE LINE ! - global liste - global ID - global headers - suffix="" - prefix="" - if string.find("*") != -1 and (string[0:string.find("*")].count(" ") == string.find("*")) and not (parent or string[string.find("*")+1]=="*"): # LISTS - #print("Liste : "+str(liste)+", lco : "+str(lco)) - prevliste=liste - liste=1+int(string.find("*")/3) - if (liste > prevliste): - for i in range(0,liste-prevliste): - prefix+="" - return prefix+"
  • "+parse_markdown(string[string.find("*")+2:],lco=lco+2,parent=True)+"
  • "+suffix - if not parent and liste != 0: - for i in range(0,liste): - prefix+="" - liste=0 - if (len(string)) == 0: - return prefix+"
    " - if (string[-2:]==" "): - return prefix+parse_markdown(string[:-2])+"
    " - if (string[0]=="#"): - space=string.find(" ") - c=string[0:space-1].count("#") - if (space-1==c): - ID+=1 - c+=1 - temp="'+parse_markdown(string[space+1:])+"" - headers.append((temp,str(ID))) - temp=prefix+temp[:3]+' id="gheader'+str(ID)+'"'+temp[3:] - return temp - bold=False - boldamount=string.count("**") - ba=0 - italic=False - code=False - link=False - link2=False - codeamount=string.count("`") - ca=0 - startindex=0 - tags=[] - currentstring="" - index=-1 - while index in range(-1,len(string)-1): - index+=1 - appendtag=False - c=string[index] - if c == "`": - if ca < codeamount: - code=not code - ca=ca+1 - if not code: # We have just closed a code fragment - tags.append((string[startindex+1:index],"code")) - continue - else: # A new one starts : SAVE INDEX + SAVE CURRENT STRING ! - appendtag=True - elif not code: - if c == "*" and len(string) > index+1 and string[index+1] == "*": - if ba < boldamount: - index+=1 - bold=not bold - ba=ba+1 - if not bold: # We have just closed a code fragment - tags.append((string[startindex+1:index-1],"bold")) - continue - else: # A new one starts : SAVE INDEX + SAVE CURRENT STRING ! - appendtag=True - elif c == "<" and not link: - appendtag=True - link=True - elif c == ">" and link: - link=False - tags.append((string[startindex+1:index],"link")) - continue - elif c == "[": - breakit=False - text="" - for i in range(index+2,len(string)-3): - c2=string[i] - if (c2 == "]"): - text=string[index+1:i] - if string[i+1]=="(": - for j in range(i+3,len(string)): - c3=string[j] - if (c3 == ")"): - breakit=True - tags.append((text,"link",string[i+2:j])) - index=j+1 - break - if breakit: - continue - if appendtag: - tags.append((currentstring,"normal")) - currentstring="" - startindex=index - continue - if not bold and not code and not link and not link2: - currentstring+=c - if len(currentstring) != 0: - tags.append((currentstring,"normal")) - result="" - for tag in tags: - string=tag[0] - p="" - s="" - if tag[1]=="code": - p,s="","" - elif tag[1]=="bold": - p,s="","" - elif tag[1]=="link": - if len(tag) == 2: - if tag[0][0:4] == "http": # CHECK LINKS ! - p,s='',"" - else: - p,s='',"" - elif tag[1]=="italic": - p,s="","" - result+=p+html.escape(string)+s - return prefix+"

    "+result+"

    " - -def parse_md(string): # Parse line by line - lines=string.split("\n") - ret="" - for i in range(len(lines)-1,0,-1): # Convert alternate header writings(underlines) - if abs(len(lines[i-1])-len(lines[i])) < 3: - if lines[i].count("=")==len(lines[i]): - lines[i]="" - lines[i-1]="# "+lines[i-1] - elif lines[i].count("-")==len(lines[i]): - lines[i]="" - lines[i-1]="## "+lines[i-1] - i=0 - for line in lines: - ret+=parse_markdown(line) - i=i+1 - return ret - -def code(): # Parse multi-line code fragments - global markdown - last=-1 - i=0 - stuff=[] - while (i < len(markdown)): - if markdown[i:i+3]=="`"*3: - i=i+3 - if last < 0: - start=-(last+1) - last=i - stuff.append((markdown[start:last-3],False)) - else: - stuff.append((markdown[last:i-3],True)) - last=-i-1 - i=i+1 - - start=-(last+1) - stuff.append((markdown[start:],False)) - #print(stuff) - - markdown="" - for s in stuff: - if s[1]: - markdown+=""+s[0]+"" - else: - markdown+=parse_md(s[0]) - -code() - -print("**...finished parsing.**") - -nav="" - -print("**Creating content table...**") - -for header in headers: - nav+="""
  • """+header[0]+"""
  • """ # Create navbar - -print("**...finished creating content table. "+str(len(headers))+" Headers are included.**") - -# FINAL - THE FINAL HTML, BOOTSTRAP BASED DOCUMENT OUR HTML IS INSERTED IN -final = open('template.html', 'r').read() -print("**Inserting content into template file...**") -markdown=final.replace("",markdown) -print("**...finished inserting content.**") -print("**Inserting content table into template file...**") -markdown=markdown.replace("",nav) -print("**...finished inserting content table.**") -print("**Saving as lua_api.html...**") -file = open('lua_api.html', 'w') # SAVE AS lua_api.html -file.write(markdown) -print("**...saved.**") -print("**Parser finished successfully and lua_api.html was generated.**") -file.close()