Compare commits
2 commits
0dcad55bb8
...
e939322f92
Author | SHA1 | Date | |
---|---|---|---|
e939322f92 | |||
20c1ba29a2 |
2 changed files with 24 additions and 34 deletions
|
@ -14,8 +14,9 @@ from .images import ImageProcessor
|
|||
from .output_generator import OutputGenerator
|
||||
from .html_generator import HTMLGenerator
|
||||
from .transform_processor import TransformProcessor
|
||||
from .pandoc_processor import PandocProcessor
|
||||
|
||||
from .mj_show import show
|
||||
from panflute import convert_text
|
||||
|
||||
def main():
|
||||
# Initialize command line arguments
|
||||
|
@ -24,8 +25,10 @@ def main():
|
|||
parser.add_argument("-p", "--img-public-dir", help="Directory to put processed images into. The program will overwrite images, whose dependencies are newer.", default="public")
|
||||
parser.add_argument("-c", "--img-cache-dir", help="Directory to cache processed images and intermediate products. The program will overwrite files, whose dependencies are newer.", default="cache")
|
||||
parser.add_argument("-i", "--img-web-path", help="Path where the processed images are available on the website.", default="/")
|
||||
parser.add_argument("-w", "--output-html", help="The HTML file (for Web) to write into.", default="output.html")
|
||||
parser.add_argument("-t", "--output-tex", help="The TEX file to write into.", default="output.tex")
|
||||
parser.add_argument("-w", "--output-html", help="The HTML file (for Web) to write into.")
|
||||
parser.add_argument("-t", "--output-tex", help="The TEX file to write into.")
|
||||
parser.add_argument("-m", "--output-md", help="The Markdown file to write into. (Uses pandoc to generate markdown)")
|
||||
parser.add_argument("-j", "--output-json", help="The JSON file to dump the pandoc-compatible AST into.")
|
||||
parser.add_argument("input_filename", help="The markdown file to process.")
|
||||
parser.add_argument("--debug", action='store_true')
|
||||
args = parser.parse_args()
|
||||
|
@ -33,44 +36,30 @@ def main():
|
|||
# just connect to an existing one. For formátíking many files in a row.
|
||||
|
||||
# Use panflute to parse the input MD file
|
||||
#doc1 = import_md(open(args.input_filename, "r").read())
|
||||
doc2 = import_md(open(args.input_filename, "r").read())
|
||||
doc = import_md(open(args.input_filename, "r").read())
|
||||
|
||||
if args.debug:
|
||||
print(show(doc1))
|
||||
OutputGenerator(sys.stdout).generate(doc)
|
||||
|
||||
# The language metadatum is important, so it's read before transformation and
|
||||
# then attached to a group inside the Doc
|
||||
#language = doc1.get_metadata("lang", None, True)
|
||||
#context = Context(doc1, args.input_filename)
|
||||
|
||||
# Transform the document. This includes all the fancy formatting this software does.
|
||||
#doc1 = doc1.walk(transform, context)
|
||||
|
||||
# Now wrap the document contents in a group, which is able to pop its language
|
||||
# setting out to TeX
|
||||
#doc1.content = [BlockGroup(*doc1.content, context=context, metadata={"lang":language})]
|
||||
|
||||
doc2 = TransformProcessor(args.input_filename).transform(doc2)
|
||||
doc = TransformProcessor(args.input_filename).transform(doc)
|
||||
|
||||
# Initialize the image processor (this just keeps some basic state)
|
||||
imageProcessor = ImageProcessor(args.img_public_dir, args.img_web_path, args.img_cache_dir, *args.img_lookup_dirs)
|
||||
|
||||
# Initialize KaTeX client (this runs the node app and connects to a unix socket)
|
||||
with KatexClient() as katexClient:
|
||||
# Generate HTML and TeX out of the transformed document
|
||||
#open(args.output_html, "w").write(html(doc, katexClient, imageProcessor))
|
||||
#open(args.output_tex, "w").write(tex(doc, imageProcessor))
|
||||
HTMLGenerator(sys.stdout, katexClient, imageProcessor).generate(doc2)
|
||||
#OutputGenerator(open("/tmp/doc1", "w")).generate(doc1)
|
||||
#OutputGenerator(open("/tmp/doc2", "w")).generate(doc2)
|
||||
if args.output_html is not None:
|
||||
# Initialize KaTeX client (this runs the node app and connects to a unix socket)
|
||||
with KatexClient() as katexClient:
|
||||
HTMLGenerator(open(args.output_html, "w"), katexClient, imageProcessor).generate(doc)
|
||||
|
||||
from panflute import convert_text
|
||||
from .pandoc_processor import PandocProcessor
|
||||
open("/tmp/bruhecek.md", "w").write(convert_text(PandocProcessor().transform(doc2), input_format="panflute", output_format="markdown"))
|
||||
if args.output_md is not None:
|
||||
open(args.output_md, "w").write(convert_text(PandocProcessor().transform(doc), input_format="panflute", output_format="markdown"))
|
||||
|
||||
if args.output_json is not None:
|
||||
open(args.output_json, "w").write(convert_text(PandocProcessor().transform(doc), input_format="panflute", output_format="json"))
|
||||
|
||||
if args.debug:
|
||||
print(show(doc))
|
||||
print("-----------------------------------")
|
||||
OutputGenerator(sys.stdout).generate(doc)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -2,14 +2,12 @@ from .nop_processor import NOPProcessor
|
|||
from panflute import Div, Span, Null, Str, Plain, Quoted
|
||||
from .context import Group, InlineGroup, BlockGroup
|
||||
from .elements import FQuoted
|
||||
from .whitespace import NBSP
|
||||
from .nop_processor import ELCl
|
||||
|
||||
from typing import Callable
|
||||
|
||||
import sys
|
||||
def eprint(*args, **kwargs):
|
||||
print(*args, **kwargs, file=sys.stderr)
|
||||
|
||||
class PandocProcessor(NOPProcessor):
|
||||
|
||||
def get_posttransformers(self) -> list[Callable[[ELCl],ELCl]]:
|
||||
|
@ -38,3 +36,6 @@ class PandocProcessor(NOPProcessor):
|
|||
|
||||
def transform_FQuoted(self, e: FQuoted) -> Quoted:
|
||||
return Quoted(*e.content)
|
||||
|
||||
def transform_NBSP(self, e: NBSP) -> Str:
|
||||
return Str(" ") # Unicode nbsp
|
||||
|
|
Loading…
Reference in a new issue