Initial commit
This commit is contained in:
parent
3b57f9457a
commit
0eaacc1a3e
127
Server/pandoc.py
Normal file
127
Server/pandoc.py
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
import subprocess
|
||||||
|
import json
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
class Pandoc:
|
||||||
|
def __init__(self, path=None):
|
||||||
|
if path:
|
||||||
|
self.pandoc = path + "/pandoc"
|
||||||
|
else:
|
||||||
|
self.pandoc = "pandoc"
|
||||||
|
|
||||||
|
def Command(self, From, To, Input):
|
||||||
|
return subprocess.run(
|
||||||
|
[self.pandoc, "-f", From, "-t", To],
|
||||||
|
input=Input,
|
||||||
|
text=True,
|
||||||
|
capture_output=True)
|
||||||
|
|
||||||
|
def Convert(self, text):
|
||||||
|
command = self.Command("gfm", "html", text)
|
||||||
|
return command.stdout
|
||||||
|
|
||||||
|
def ConvertToJson(self, text):
|
||||||
|
command = self.Command("gfm", "json", text)
|
||||||
|
return json.loads(command.stdout)
|
||||||
|
|
||||||
|
def ConvertFromJson(self, text):
|
||||||
|
command = self.Command("json", "html", json.dumps(text));
|
||||||
|
return command.stdout
|
||||||
|
|
||||||
|
class Attr:
|
||||||
|
def __init__(self, id, classes=None, keyvalue=None):
|
||||||
|
self.id = id
|
||||||
|
|
||||||
|
if classes is None:
|
||||||
|
self.classes = []
|
||||||
|
else:
|
||||||
|
self.classes = classes
|
||||||
|
|
||||||
|
if keyvalue is None:
|
||||||
|
self.keyvalue = []
|
||||||
|
else:
|
||||||
|
self.keyvalue = keyvalue
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return [
|
||||||
|
self.id,
|
||||||
|
self.classes,
|
||||||
|
self.keyvalue
|
||||||
|
]
|
||||||
|
|
||||||
|
class Div:
|
||||||
|
def __init__(self, attr, content):
|
||||||
|
self.attr = attr
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : 'Div',
|
||||||
|
'c' : [
|
||||||
|
self.attr.toJson(),
|
||||||
|
self.content
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
class Span:
|
||||||
|
def __init__(self, attr, content):
|
||||||
|
self.attr = attr
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : 'Span',
|
||||||
|
'c' : [
|
||||||
|
self.attr.toJson(),
|
||||||
|
self.content
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
class Header:
|
||||||
|
def __init__(self, attr, num, content):
|
||||||
|
self.attr = attr
|
||||||
|
self.num = num
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : 'Header',
|
||||||
|
'c' : [
|
||||||
|
self.num,
|
||||||
|
self.attr.toJson(),
|
||||||
|
self.content
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
class Plain:
|
||||||
|
def __init__(self, content):
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : 'Plain',
|
||||||
|
'c' : [
|
||||||
|
self.content
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
class Inline:
|
||||||
|
def __init__(self, t, content):
|
||||||
|
self.t = t
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : self.t,
|
||||||
|
'c' : self.content
|
||||||
|
}
|
||||||
|
|
||||||
|
class PString:
|
||||||
|
def __init__(self, content):
|
||||||
|
self.content = content
|
||||||
|
|
||||||
|
def toJson(self):
|
||||||
|
return {
|
||||||
|
't' : 'Str',
|
||||||
|
'c' : self.content
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user