From 7d7c588c60ebf6615baf8f1ab85aec0a6948e5df Mon Sep 17 00:00:00 2001 From: Vinayak Mehta Date: Sat, 29 Aug 2020 20:47:53 +0530 Subject: [PATCH] Use warnings and add italic support --- present/effects.py | 1 + present/markdown.py | 19 ++++++++++++++++--- present/slideshow.py | 10 +++++++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/present/effects.py b/present/effects.py index 313fcc1..7e2d89f 100644 --- a/present/effects.py +++ b/present/effects.py @@ -27,6 +27,7 @@ "white": Screen.COLOUR_WHITE, } ATTRS = { + "italic": 5, "bold": Screen.A_BOLD, "underline": Screen.A_UNDERLINE, } diff --git a/present/markdown.py b/present/markdown.py index 81d0d3c..1bc9b4e 100644 --- a/present/markdown.py +++ b/present/markdown.py @@ -4,6 +4,7 @@ import re import sys import shutil +import warnings from dataclasses import dataclass import yaml @@ -13,6 +14,10 @@ from .effects import EFFECTS, COLORMAP +# For future reference +UNSUPPORTED_ELEMENTS = ["block_quote", "codespan", "link", "emphasis", "strong"] + + @dataclass class Heading(object): type: str = "heading" @@ -310,19 +315,27 @@ def parse(self, text): buffer = [] continue - if obj["type"] == "paragraph": + if obj["type"] == "block_quote": + warnings.warn( + f"(Slide {sliden + 1}) BlockQuote is not supported" + ) + elif obj["type"] == "paragraph": for child in obj["children"]: try: if child["type"] == "image" and child["alt"] == "codio": with open(child["src"], "r") as f: codio = yaml.load(f, Loader=yaml.Loader) buffer.append(Codio(obj=codio)) + elif child["type"] == "codespan": + pass + elif child["type"] == "link": + pass else: element_name = child["type"].title().replace("_", "") Element = eval(element_name) buffer.append(Element(obj=child)) except NameError: - raise ValueError( + warnings.warn( f"(Slide {sliden + 1}) {element_name} is not supported" ) else: @@ -330,7 +343,7 @@ def parse(self, text): element_name = obj["type"].title().replace("_", "") Element = eval(element_name) except NameError: - raise ValueError( + warnings.warn( f"(Slide {sliden + 1}) {element_name} is not supported" ) buffer.append(Element(obj=obj)) diff --git a/present/slideshow.py b/present/slideshow.py index 20c739b..e705c20 100644 --- a/present/slideshow.py +++ b/present/slideshow.py @@ -4,8 +4,8 @@ from asciimatics.scene import Scene from asciimatics.effects import Print -from asciimatics.screen import Screen from asciimatics.event import KeyboardEvent +from asciimatics.screen import Screen, _CursesScreen from asciimatics.exceptions import ResizeScreenError, StopApplication from .effects import ( @@ -88,6 +88,14 @@ def __init__(self, slides): def __enter__(self): self.screen = Screen.open() + + if isinstance(self.screen, _CursesScreen): + import curses + + self.screen.A_ITALIC = 5 + self.screen._a_italic = curses.tigetstr("sitm").decode("utf-8") + self.screen._ATTRIBUTES[self.screen.A_ITALIC] = self.screen._a_italic + return self def __exit__(self, type, value, traceback):