Browse Source

Added FileLink element for publishing and linking local files.

master
Jan Černohorský 9 months ago
parent
commit
0e5735cba2
  1. 5
      src/formatitko/elements.py
  2. 18
      src/formatitko/html_generator.py
  3. 3
      src/formatitko/images.py
  4. 7
      src/formatitko/nop_processor.py
  5. 5
      src/formatitko/output_generator.py

5
src/formatitko/elements.py

@ -1,4 +1,4 @@
from panflute import Quoted
from panflute import Quoted, Link
from .command import Command, InlineCommand, BlockCommand, CodeCommand
@ -14,3 +14,6 @@ class FQuoted(Quoted):
del kwargs["style"]
super().__init__(*args, **kwargs)
class FileLink(Link):
pass

18
src/formatitko/html_generator.py

@ -19,6 +19,7 @@ from .output_generator import OutputGenerator
from .katex import KatexClient
from .images import ImageProcessor, ImageProcessorNamespaceSearcher
from .util import inlinify
from .elements import FileLink
class HTMLGenerator(OutputGenerator):
@ -219,6 +220,23 @@ class HTMLGenerator(OutputGenerator):
self.generate(link)
def generate_FileLink(self, e: FileLink):
url = e.url
# The directory of the current file relative to the current working directory
source_dir = self.context.dir
# The directory of the current file relative to the md file we were called on
rel_dir = self.context.rel_dir
searcher = self.imageProcessor.get_searcher_by_path(url, rel_dir, source_dir)
url = self.imageProcessor.get_path_without_namespace(url)
url = self.imageProcessor.process_image(url, "", searcher, self.context)
searcher.publish_image(url)
url = searcher.get_web_path() + "/" + url
self.generate_Link(Link(*e.content, url=url))
def generate_InlineGroup(self, e: InlineGroup):
self.generate_Group(e)

3
src/formatitko/images.py

@ -173,6 +173,9 @@ class ImageProcessor:
if format == "jpg":
format = "jpeg"
if format == "":
format = ext
# Locate all dependencies
deps_full = [full_path]
for dep in deps:

7
src/formatitko/nop_processor.py

@ -6,7 +6,7 @@ from panflute import MetaValue
from typing import Union, Callable
from .whitespace import NBSP
from .elements import FQuoted
from .elements import FQuoted, FileLink
from .context import Group, InlineGroup, BlockGroup, Context
from .whitespace import Whitespace
from .command import BlockCommand, InlineCommand, CodeCommand, Command
@ -88,6 +88,7 @@ class NOPProcessor:
Underline: self.transform_Underline,
NBSP: self.transform_NBSP,
FQuoted: self.transform_FQuoted,
FileLink: self.transform_FileLink,
InlineCommand: self.transform_InlineCommand,
BlockCommand: self.transform_BlockCommand,
@ -299,6 +300,10 @@ class NOPProcessor:
e.content = self.transform(e.content)
return e
def transform_FileLink(self, e: FileLink) -> FileLink:
e.content = self.transform(e.content)
return e
def transform_Figure(self, e: Figure) -> Figure:
e.content = self.transform(e.content)
e.caption = self.transform(e.caption)

5
src/formatitko/output_generator.py

@ -7,7 +7,7 @@ from panflute import stringify
from typing import Union, Callable
from .whitespace import NBSP
from .elements import FQuoted
from .elements import FQuoted, FileLink
from .context import Group, InlineGroup, BlockGroup, Context
@ -127,6 +127,7 @@ class OutputGenerator:
Underline: self.generate_Underline,
NBSP: self.generate_NBSP,
FQuoted: self.generate_FQuoted,
FileLink: self.generate_FileLink,
InlineGroup: self.generate_InlineGroup
}
@ -368,6 +369,8 @@ class OutputGenerator:
self.generate(e.content)
self.write("\"")
def generate_FileLink(self, e: FileLink):
self.generate_simple_tag(e)
# Inline Elements
def generate_Cite(self, e: Cite):

Loading…
Cancel
Save