Added FileLink element for publishing and linking local files.
This commit is contained in:
parent
42d04b77de
commit
0e5735cba2
5 changed files with 36 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -367,7 +368,9 @@ class OutputGenerator:
|
|||
self.write("\"")
|
||||
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…
Reference in a new issue