pass css and latex svg flag back from rendering op

This could potentially help us avoid having to refetch the notetype
during study in the future, though updates to Note initialization and
the LaTeX handling would be required first.
This commit is contained in:
Damien Elmes 2021-05-25 18:41:43 +10:00
parent 02c7f7989e
commit 050ef11a96
4 changed files with 22 additions and 3 deletions

View File

@ -61,13 +61,15 @@ TemplateReplacementList = List[Union[str, TemplateReplacement]]
class PartiallyRenderedCard:
qnodes: TemplateReplacementList
anodes: TemplateReplacementList
css: str
latex_svg: bool
@classmethod
def from_proto(cls, out: _pb.RenderCardOut) -> PartiallyRenderedCard:
qnodes = cls.nodes_from_proto(out.question_nodes)
anodes = cls.nodes_from_proto(out.answer_nodes)
return PartiallyRenderedCard(qnodes, anodes)
return PartiallyRenderedCard(qnodes, anodes, out.css, out.latex_svg)
@staticmethod
def nodes_from_proto(
@ -151,6 +153,7 @@ class TemplateRenderContext:
self._template = template
self._fill_empty = fill_empty
self._fields: Optional[Dict] = None
self._latex_svg = False
if not notetype:
self._note_type = note.model()
else:
@ -197,6 +200,9 @@ class TemplateRenderContext:
def note_type(self) -> NotetypeDict:
return self._note_type
def latex_svg(self) -> bool:
return self._latex_svg
# legacy
def qfmt(self) -> str:
return templates_for_card(self.card(), self._browser)[0]
@ -227,9 +233,11 @@ class TemplateRenderContext:
answer_text=aout.text,
question_av_tags=av_tags_to_native(qout.av_tags),
answer_av_tags=av_tags_to_native(aout.av_tags),
css=self.note_type()["css"],
css=partial.css,
)
self._latex_svg = partial.latex_svg
if not self._browser:
hooks.card_did_render(output, self)

View File

@ -704,6 +704,8 @@ message RenderUncommittedCardLegacyIn {
message RenderCardOut {
repeated RenderedTemplateNode question_nodes = 1;
repeated RenderedTemplateNode answer_nodes = 2;
string css = 3;
bool latex_svg = 4;
}
message RenderedTemplateNode {

View File

@ -175,6 +175,8 @@ impl From<RenderCardOutput> for pb::RenderCardOut {
pb::RenderCardOut {
question_nodes: rendered_nodes_to_proto(o.qnodes),
answer_nodes: rendered_nodes_to_proto(o.anodes),
css: o.css,
latex_svg: o.latex_svg,
}
}
}

View File

@ -16,6 +16,8 @@ use crate::{
pub struct RenderCardOutput {
pub qnodes: Vec<RenderedNode>,
pub anodes: Vec<RenderedNode>,
pub css: String,
pub latex_svg: bool,
}
impl Collection {
@ -119,7 +121,12 @@ impl Collection {
nt.is_cloze(),
&self.tr,
)?;
Ok(RenderCardOutput { qnodes, anodes })
Ok(RenderCardOutput {
qnodes,
anodes,
css: nt.config.css.clone(),
latex_svg: nt.config.latex_svg,
})
}
// Add special fields if they don't clobber note fields