Files
LifeFaq/app/services/__pycache__/markdown_render.cpython-311.pyc

89 lines
8.9 KiB
Plaintext
Raw Normal View History

2025-01-14 17:25:45 +01:00
<EFBFBD>
2025-02-10 14:28:05 +01:00
<00><><EFBFBD>gn<00><00>t<00>ddlmZddlZddlZddlmZddlmZmZddl m
Z
ddl m Z m Z Gd<08>d <09><00>ZdS)
<EFBFBD>)<01>PathN)<01>FastAPI)<02> Environment<6E>
DictLoader)<01>Markup<75>)<02> ImageService<63> FileHandlerc<00><><00>eZdZddedefd<04>Zdefd<06>Zdedefd<08>Zd ed
edefd <0B>Z d
edefd <0C>Z
d ed edefd<0E>Z d
edefd<0F>Z de dedefd<12>Zd<13>Zddededededededefd<1B>Zdefd<1D>ZdS) <20>MarkdownRendererN<72> file_path<74>appc<00><><00>||_t|j<00><00>|_|<00><00><00>|_||_dS)za
Initialize the MarkdownRenderer with a Jinja2 environment and custom functions.
N)rr <00> image_service<63>_create_jinja_environment<6E> jinja_envr )<03>selfr rs <20>I/Users/lrihni/IdeaProjects/Privat/LifeFaq/app/services/markdown_render.py<70>__init__zMarkdownRenderer.__init__ s;<00><00><17><04><08>)<29>$<24>(<28>3<>3<><04><1A><1D>7<>7<>9<>9<><04><0E>"<22><04><0E><0E><0E><00>returnc
<00><><00>ttddi<01><00><00><03><00>}|j<00>|j|j|j|j|j|j |j
d<04><07><00>|S)z<>
Create and configure the Jinja2 environment with custom functions.
2025-01-14 17:25:45 +01:00
2025-02-10 14:28:05 +01:00
Returns:
Environment: A configured Jinja2 environment.
<20> base_templatez{{ content | safe }})<01>loader)<07>img_left_overlay<61>box<6F>note<74>warning<6E>link_to<74>slider<65>image) rr<00>globals<6C>updaterrrrrr <00> get_image)r<00>envs rrz*MarkdownRenderer._create_jinja_environmentsq<00><00><1A><1A>_<EFBFBD>>T<>,U<>!V<>!V<>W<>W<>W<><03> <0B> <0B><1A><1A> $<24> 5<><17>8<EFBFBD><18>I<EFBFBD><1B>|<7C><1B>|<7C><1A>k<EFBFBD><19>^<5E>
<EFBFBD>
<EFBFBD> <0B> <0B> <0B><13>
r<00>srcc<00><00>d|<01>d<02>S)zRender an image with overlay.z>
<div class="img-left-overlay">
<img src="zv" alt="Overlay Image" loading="lazy">
<div class="overlay-text">Overlay Text</div>
</div>
<20>)rr&s rrz!MarkdownRenderer.img_left_overlay*s<00><00> <0C><1A> <0C> <0C> <0C> r<00>title<6C>contentc<00><00>d|<01>d|<02>d<03>S)zRender a box component.z/
<div class="box">
<strong>z</strong>
<p><3E></p>
</div>
r()rr)r*s rrzMarkdownRenderer.box3s-<00><00> <0C><1A> <0C> <0C><18> <0C> <0C> <0C> rc<00><00>d|<01>d<02>S)zRender a note component.z+
<div class="note">
<p>r,r(<00>rr*s rrzMarkdownRenderer.note<s<00><00> <0C><17> <0C> <0C> <0C> r<00>urlc<00><00>d|<02>d|<01>d<03>S)zRender a link component.z
<a href="z," target="_blank" rel="noopener noreferrer">z </a>
r()rr)r/s rrzMarkdownRenderer.link_toDs+<00><00> <0C><15> <0C> <0C>CH<43> <0C> <0C> <0C> rc<00><00>d|<01>d<02>S)zRender a warning component.u5
<div class="warning">
⚠️ <p>r,r(r.s rrzMarkdownRenderer.warningJs<00><00> <0C><1E> <0C> <0C> <0C> r<00>options<6E>imagesc<00><><00>ddl}|<03><00><00>j<00><00><00>dd<03>}g}|<05>d<04><00>t |<02><00>D]<5D>\}}t |j<00><00>|_|<04>d|<06><00>}|dzt|<02><00>kr
|<04>d|dz<00><00>n|<04>d<07>} t<00><00><00> |j <00><00>}
|j<00> |
d|d <09>
<EFBFBD><00>} |j<00> |
d |d <09>
<EFBFBD><00>} |<05>d |<08>d | <0B>d|<08>d|<06>d| <0C>d|<08>d|<08>d| <09>d<14><11><00><00><>|<05>d<15><00>d<16>|<05><00>S)zRender a slider component.rN<>z<div class="button-stack"><3E>_r<00>_0<5F>
thumbnailszA better description later on)<04>category<72>
image_type<EFBFBD>filename<6D>alt<6C>largez.
<button onclick="openModal('modalz,')" class="stacked-button">
z?
</button>
<div class="modal" id="modalzM">
<div class="modal-content">
<h2>Modal z</h2>
z<>
<div class="modal-buttons">
<button onclick="closeModal('modalz]')">Close</button>
<button class="next-btn" onclick="nextModal('modalz ', 'modalzc')">Next</button>
</div>
</div>
</div>
z</div><3E>
)<0F>uuid<69>uuid4<64>hex<65>upper<65>append<6E> enumerater rr<00>lenr
<00> get_categoryr <00> image_tag<61>join) rr2r3r?<00>modal_id<69> html_content<6E>i<>val<61>modal_id_current<6E> modal_id_nextr9<00> thumbnal_img<6D> modal_imgs rr zMarkdownRenderer.sliderRs<><00><00><13> <0B> <0B> <0B><17>:<3A>:<3A><<3C><<3C>#<23>)<29>)<29>+<2B>+<2B>A<EFBFBD>a<EFBFBD>C<EFBFBD>0<><08><1A> <0C><14><1B><1B>8<>9<>9<>9<><1F><06>'<27>'<27> <11> <11>F<EFBFBD>A<EFBFBD>s<EFBFBD>!-<2D>t<EFBFBD>x<EFBFBD>!9<>!9<>D<EFBFBD> <1E>"*<2A>0<>0<>Q<EFBFBD>0<>0<> <1C>56<35><11>U<EFBFBD>S<EFBFBD><16>[<5B>[<5B>5H<35>5H<35>x<EFBFBD>1<>1<>!<21>a<EFBFBD>%<25>1<>1<>1<>QY<51>o<EFBFBD>o<EFBFBD>o<EFBFBD>M<EFBFBD>"<22>}<7D>}<7D>1<>1<>$<24>.<2E>A<>A<>H<EFBFBD><1F>-<2D>7<>7<>8<EFBFBD>Zf<5A>ru<72>{Z<02>7<>[<02>[<02>L<EFBFBD><1C>*<2A>4<>4<><08>W^<5E>jm<6A>sR<02>4<>S<02>S<02>I<EFBFBD> <18> <1F> <1F>!<10>.><3E>!<10>!<10><1D>!<10>!<10>*:<3A> !<10>!<10> !<21> !<10>!<10><1F>!<10>!<10><L<01>!<10>!<10>L\<01>!<10>!<10>gt<01>!<10>!<10>!<10> <11> <11> <11> <11> <15><1B><1B>H<EFBFBD>%<25>%<25>%<25><13>y<EFBFBD>y<EFBFBD><1C>&<26>&<26>&rc<00>z<00>t|jt<00><00>r t|j<00><00>}|jjSdS)NT)<06>
isinstancer <00>strr<00>parent<6E>name)r<00> this_paths r<00> _get_categoryzMarkdownRenderer._get_categoryvs6<00><00> <15>d<EFBFBD>n<EFBFBD>c<EFBFBD> *<2A> *<2A> )<29><1C>T<EFBFBD>^<5E>,<2C>,<2C>I<EFBFBD><1C>#<23>(<28> (<28><13>tr<00>r:r;r<<00>width<74>height<68> css_classc <00><><00>gd<01>}||vr!dt_td|<01>d|<07><00><04><00><00>|j<00>|<00><00><00>||||||<06><05><00>}t |<08><00>S)zg
Generate a dynamic HTML <img> tag for an image using ImageService's image_tag method.
)r8r=<00>small<6C>originalrzInvalid image type: z. Must be one of )r9r:r;r<rYrZr[)<07>sys<79>tracebacklimit<69>
ValueErrorrrGrWr) rr:r;r<rYrZr[<00> valid_types<65>tags rr$zMarkdownRenderer.get_image~s<><00><00>C<01>B<>B<> <0B> <15>[<5B> (<28> (<28>!"<22>C<EFBFBD> <1E><1C>_<>Z<EFBFBD>_<>_<>R]<5D>_<>_<>a<>a<> a<><12> <20>*<2A>*<2A><19>'<27>'<27>)<29>)<29>!<21><1D><13><17><19><1F>+<2B>
<EFBFBD>
<EFBFBD><03><16>c<EFBFBD>{<7B>{<7B>r<00>markdown_contentc<00>r<00>tjgd<01><01><02><00>}|<02>|<01><00>}|jr#d<03>|j<00><00><00>D<00><00>ni}|j<00>d<04><00>}|<05>|<03><05><00>}|j<00>|<06><00><00><00><00>}||fS)z<>
Convert Markdown to HTML and apply Jinja2 rendering for custom tags.
2025-01-14 17:25:45 +01:00
2025-02-10 14:28:05 +01:00
Args:
markdown_content (str): Raw Markdown content.
Returns:
tuple: Rendered HTML content and metadata as a dictionary.
)<03>extra<72>nl2br<62>meta)<01>
extensionsc<00>@<00>i|]\}}|d<00>|<02><00><00><02>S)<01> )rH)<03>.0<EFBFBD>key<65>values r<00>
<dictcomp>z?MarkdownRenderer.render_markdown_with_jinja.<locals>.<dictcomp><3E>s(<00><00>K<>K<>K<>Z<EFBFBD>S<EFBFBD>%<25>C<EFBFBD><13><18><18>%<25><1F><1F>K<>K<>Krr)r*) <09>markdown<77>Markdown<77>convert<72>Meta<74>itemsr<00> get_template<74>render<65> from_string)rrd<00>md<6D>intermediate_html<6D>metadata<74>template<74>
final_html<EFBFBD> final_outputs r<00>render_markdown_with_jinjaz+MarkdownRenderer.render_markdown_with_jinja<6A>s<><00><00><16> <1E>*D<>*D<>*D<> E<> E<> E<><02><1E>J<EFBFBD>J<EFBFBD>'7<>8<>8<><19>OQ<4F>w<EFBFBD>^<5E>K<>K<>2<EFBFBD>7<EFBFBD>=<3D>=<3D>?<3F>?<3F>K<>K<>K<>K<>\^<5E><08><18>><3E>.<2E>.<2E><EFBFBD>?<3F>?<3F><08><1D>_<EFBFBD>_<EFBFBD>-><3E>_<EFBFBD>?<3F>?<3F>
<EFBFBD><1C>~<7E>1<>1<>*<2A>=<3D>=<3D>D<>D<>F<>F<> <0C><1B>X<EFBFBD>%<25>%r)NN)rXNNN)<15>__name__<5F>
__module__<EFBFBD> __qualname__rSrrrrrrrrr<00>dict<63>listr rW<00>intrr$r~r(rrr r
s<><00><00><00><00><00><00>#<23>#<23>#<23>#<23>7<EFBFBD>#<23>#<23>#<23>#<23><13>;<3B><13><13><13><13>( <0C>C<EFBFBD> <0C>C<EFBFBD> <0C> <0C> <0C> <0C> <0C><13> <0C>s<EFBFBD> <0C>s<EFBFBD> <0C> <0C> <0C> <0C> <0C>C<EFBFBD> <0C>C<EFBFBD> <0C> <0C> <0C> <0C> <0C>S<EFBFBD> <0C>s<EFBFBD> <0C>s<EFBFBD> <0C> <0C> <0C> <0C>  <0C>s<EFBFBD> <0C>s<EFBFBD> <0C> <0C> <0C> <0C>"'<27>d<EFBFBD>"'<27>D<EFBFBD>"'<27>S<EFBFBD>"'<27>"'<27>"'<27>"'<27>H<14><14><14><1B><1B>C<EFBFBD><1B>3<EFBFBD><1B>S<EFBFBD><1B>c<EFBFBD><1B>be<62><1B>wz<77><1B>EK<02><1B><1B><1B><1B>0&<26>3<EFBFBD>&<26>&<26>&<26>&<26>&<26>&rr )<0F>pathlibrr_rp<00>fastapir<00>jinja2rr<00>
markupsaferrr r
r r(rr<00><module>r<>s<><00><01><18><18><18><18><18><18>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD><0F><0F><0F><0F><1B><1B><1B><1B><1B><1B>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A><1D><1D><1D><1D><1D><1D>4<>4<>4<>4<>4<>4<>4<>4<>b&<26>b&<26>b&<26>b&<26>b&<26>b&<26>b&<26>b&<26>b&<26>b&r