26 lines
855 B
Python
26 lines
855 B
Python
|
"""Local files browser."""
|
||
|
|
||
|
from bebop.browser.browser import Browser
|
||
|
from bebop.page import Page
|
||
|
|
||
|
|
||
|
def open_file(browser: Browser, filepath: str, encoding="utf-8", history=True):
|
||
|
"""Open a file and render it.
|
||
|
|
||
|
This should be used only on Gemtext files or at least text files.
|
||
|
Anything else will produce garbage and may crash the program. In the
|
||
|
future this should be able to use a different parser according to a MIME
|
||
|
type or something.
|
||
|
"""
|
||
|
try:
|
||
|
with open(filepath, "rt", encoding=encoding) as f:
|
||
|
text = f.read()
|
||
|
except (OSError, ValueError) as exc:
|
||
|
browser.set_status_error(f"Failed to open file: {exc}")
|
||
|
return
|
||
|
browser.load_page(Page.from_gemtext(text))
|
||
|
file_url = "file://" + filepath
|
||
|
if history:
|
||
|
browser.history.push(file_url)
|
||
|
browser.current_url = file_url
|