Browse Source

Vyřešeno pár errorů od pyrightu, odstraněny hvězdičkové importy (#16), zbyly jen v html.py a tex.py, které se stejně budou celé předělávat.

pull/28/head
Jan Černohorský 1 year ago
parent
commit
4375e3fc8f
  1. 3
      pyproject.toml
  2. 5
      src/formatitko/command.py
  3. 11
      src/formatitko/context.py
  4. 6
      src/formatitko/formatitko.py
  5. 5
      src/formatitko/html.py
  6. 4
      src/formatitko/images.py
  7. 3
      src/formatitko/katex.py
  8. 2
      src/formatitko/mj_show.py
  9. 5
      src/formatitko/tex.py
  10. 10
      src/formatitko/transform.py

3
pyproject.toml

@ -28,8 +28,9 @@ formatitko = "formatitko.formatitko:main"
[tool.setuptools_scm] [tool.setuptools_scm]
[tool.setuptools.packages.find] [tool.setuptools.packages.find]
where = ["src"] where = ["src"]
exclude = ["src/formatitko/katex-server/node_modules"] exclude = ["src/formatitko/katex-server/node_modules"]
[tool.pyright]
strictParameterNoneValue = false

5
src/formatitko/command.py

@ -1,10 +1,9 @@
from panflute import Div,Span,Para from panflute import Div, Span, Para, Element
from typing import List from typing import List
# Import local files # Import local files
from .util import * from .util import nullify, import_md
from .context import Context from .context import Context
from .mj_show import show
class Command: class Command:
pass pass

11
src/formatitko/context.py

@ -1,6 +1,5 @@
from panflute import Doc, Div from panflute import Doc, Div
from typing import Dict
import os import os
@ -71,15 +70,15 @@ class Context:
if key == "language": if key == "language":
print("WARN: Setting language this way doesn't propagate to TeX. Either use the Front Matter or specify it additionally using the \\languagexx macro.") print("WARN: Setting language this way doesn't propagate to TeX. Either use the Front Matter or specify it additionally using the \\languagexx macro.")
meta = self.doc.metadata meta = self.doc.metadata
key = key.split(".") keys = key.split(".")
for k in key[:-1]: for k in keys[:-1]:
meta = meta[k] meta = meta[k]
meta[key[-1]] = value meta[keys[-1]] = value
def unset_metadata(self, key: str): def unset_metadata(self, key: str):
meta = self.doc.metadata meta = self.doc.metadata
key = key.split(".") keys = key.split(".")
for k in key[:-1]: for k in keys[:-1]:
meta = meta[k] meta = meta[k]
del meta.content[key[-1]] # A hack because MetaMap doesn't have a __delitem__ del meta.content[key[-1]] # A hack because MetaMap doesn't have a __delitem__

6
src/formatitko/formatitko.py

@ -1,14 +1,10 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse import argparse
import re
import sys
from typing import List
import os
# Import local files # Import local files
from .transform import transform from .transform import transform
from .util import * from .util import import_md
from .context import Context, Group from .context import Context, Group
from .katex import KatexClient from .katex import KatexClient
from .html import html from .html import html

5
src/formatitko/html.py

@ -4,6 +4,7 @@ from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter from pygments.formatters import HtmlFormatter
from pygments.util import ClassNotFound from pygments.util import ClassNotFound
import os import os
from typing import Union
from .whitespace import NBSP from .whitespace import NBSP
from .transform import FQuoted from .transform import FQuoted
@ -12,7 +13,7 @@ from .util import inlinify
from .context import Group from .context import Group
from .images import ImageProcessor from .images import ImageProcessor
def html(e: Element, k: KatexClient, i: ImageProcessor, indent_level: int=0, indent_str: str="\t") -> str: def html(e: Union[Element, ListContainer], k: KatexClient, i: ImageProcessor, indent_level: int=0, indent_str: str="\t") -> str:
# `only` attribute which makes transformed elements appear only in tex # `only` attribute which makes transformed elements appear only in tex
# output or html output # output or html output
@ -40,7 +41,7 @@ def html(e: Element, k: KatexClient, i: ImageProcessor, indent_level: int=0, ind
Emph: "em", Emph: "em",
Caption: "figcaption", Caption: "figcaption",
Para: "p", Para: "p",
Header: "h"+str(e.level) if hasattr(e, "level") else "", Header: "h"+str(e.level) if isinstance(e, Header) else "",
LineBlock: "p", LineBlock: "p",
ListItem: "li", ListItem: "li",
SmallCaps: "span", SmallCaps: "span",

4
src/formatitko/images.py

@ -1,4 +1,4 @@
from typing import List from typing import List, Union
import os import os
import shutil import shutil
import subprocess import subprocess
@ -74,7 +74,7 @@ class ImageProcessor:
return Image.open(full_path).size return Image.open(full_path).size
def find_image(self, input_filename: str, additional_dirs: List[str]=[]) -> str: def find_image(self, input_filename: str, additional_dirs: List[str]=[]) -> Union[str, None]:
for dir in [*self.lookup_dirs, *additional_dirs]: for dir in [*self.lookup_dirs, *additional_dirs]:
if os.path.isfile(dir + "/" + input_filename): if os.path.isfile(dir + "/" + input_filename):
return dir + "/" + input_filename return dir + "/" + input_filename

3
src/formatitko/katex.py

@ -4,7 +4,6 @@ import tempfile
import json import json
import os import os
from typing import Dict from typing import Dict
import time
class KatexError(Exception): class KatexError(Exception):
@ -66,5 +65,5 @@ class KatexClient:
def __enter__(self): def __enter__(self):
return self return self
def __exit__(self, type, value, tb): def __exit__(self):
self._server_process.terminate() self._server_process.terminate()

2
src/formatitko/mj_show.py

@ -3,7 +3,7 @@
### ###
import sys, re import sys, re
from panflute import * from panflute import Str, Element, ListContainer, DictContainer
avoid_keys = { avoid_keys = {
'dict', 'dict',

5
src/formatitko/tex.py

@ -1,5 +1,6 @@
from panflute import * from panflute import *
import os import os
from typing import Union
from .whitespace import NBSP from .whitespace import NBSP
from .transform import FQuoted from .transform import FQuoted
@ -8,7 +9,7 @@ from .context import Group
from .images import ImageProcessor from .images import ImageProcessor
# Heavily inspired by: git://git.ucw.cz/labsconf2022.git # Heavily inspired by: git://git.ucw.cz/labsconf2022.git
def tex(e: Element, i: ImageProcessor, indent_level: int=0, indent_str: str="\t") -> str: def tex(e: Union[Element, ListContainer], i: ImageProcessor, indent_level: int=0, indent_str: str="\t") -> str:
# `only` attribute which makes transformed elements appear only in tex # `only` attribute which makes transformed elements appear only in tex
# output or html output # output or html output
@ -30,7 +31,7 @@ def tex(e: Element, i: ImageProcessor, indent_level: int=0, indent_str: str="\t"
tag = e.tag.lower() tag = e.tag.lower()
tags = { tags = {
Header: "h"+chr(64 + e.level) if hasattr(e, "level") else "", Header: "h"+chr(64 + e.level) if isinstance(e, Header) else "",
} }
if type(e) in tags: if type(e) in tags:
tag = tags[type(e)] tag = tags[type(e)]

10
src/formatitko/transform.py

@ -1,11 +1,11 @@
from panflute import * from panflute import Element, Div, Span, Quoted, Image, CodeBlock, Str, MetaInlines, MetaStr, MetaBool
import re import re
# Import local files # Import local files
from .whitespace import * from .whitespace import Whitespace, NBSP, bavlna
from .command import * from .command import Command, BlockCommand, InlineCommand, handle_command_define, executeCommand
from .util import * from .util import nullify, import_md
from .context import * from .context import Context, Group
# This is a small extension to the Quoted panflute elements which allows to # This is a small extension to the Quoted panflute elements which allows to

Loading…
Cancel
Save