Skip to content
This repository has been archived by the owner on Nov 13, 2022. It is now read-only.

Escape Liquid Tags Present in Code / Code Output #66

Closed
drscotthawley opened this issue Feb 18, 2020 · 10 comments · Fixed by #70
Closed

Escape Liquid Tags Present in Code / Code Output #66

drscotthawley opened this issue Feb 18, 2020 · 10 comments · Fixed by #70
Assignees
Labels
bug Something isn't working enhancement New feature or request

Comments

@drscotthawley
Copy link
Contributor

drscotthawley commented Feb 18, 2020

I realize fastpages currently is only designed to work with Altair. Altair doesn't support 3D graphs, but plot.ly does. One of my notebooks uses plot.ly for interactive 3D graphs.

With a one-line change to nbdev (https://github.com/drscotthawley/nbdev/blob/master/nbdev/export2html.py), the embedded plot.ly 3D interactive graphs work fine, and the resulting html from nbdev/export2html shows these plots great. (Example HTML output of notebook from nbdev/export2html: https://hedges.belmont.edu/~shawley/2019-12-21-PCA-From-Scratch.html)

The problem is that further down in the fastpages build, the 'Rendering Liquid' step tries to treat some of the double-curly-brace javascript generated for plot.ly as if it were Liquid tags:

  Rendering Liquid: _posts/2019-12-21-PCA-From-Scratch.md
  Liquid Exception: Liquid syntax error (line 113): Variable '{{ x.observe(notebookContainer, {childList: true}' was not properly terminated with regexp: /\}\}/ in /github/workspace/_posts/2019-12-21-PCA-From-Scratch.md

The javascript code it's complaining about looks like this:

   if (notebookContainer) {{
       x.observe(notebookContainer, {childList: true});
   }}

I have no experience with Liquid, at all. My old Jekyll/Pages blog doesn't use it, so there was no conflict. But FastPages does use it. Is there any way to 'tell Liquid' to leave the plot.ly javascript alone and not try to interpret it as a tag? (I've googled around trying to solve this, but so far, no dice.)

Or perhaps there's a way to disable Liquid for certain files but not for the whole fastpages blog?

Run log: https://github.com/drscotthawley/devblog2/runs/451929186?

@drscotthawley
Copy link
Contributor Author

drscotthawley commented Feb 18, 2020

..So I see that the "monkey patch" in _action_files/nb2post.py simply changes the output file extension from .html to .md, and then Liquid runs on this md file but doesn't know it's operating on Javascript.

Would it work to reverse the order in the build? : Run Liquid on the file with the .html extension, and then change the extension to .md afterward?
(I have no experience with Liquid.)
Or else would it work to just allow a user to disable Liquid for certain files, maybe via a front-matter YAML tag at the top of the notebook?

EDIT: looks like from this StackOverflow post one could disable Liquid via the {% raw %} construction. Maybe a simple utility like

import glob 

# escape javascript sequences from Liquid via "raw" tag
def js_escape_liquid(fname='_notebooks/*.ipynb', dest='_posts/'):
    for nb_name in glob.glob(fname):
        md_name = dest+os.path.basename(nb_name).replace('.ipynb','.md')
        if os.path.exists(md_name):
            fin = open(md_name, "rt")
            data = fin.read()
            if '<script ' in data:
                data = data.replace('<script ', '\n{% raw %}\n<script ')
                data = data.replace('/script>', '/script>\n{% endraw %}\n ')
                fin.close()

                fin = open(md_name, "wt")
                fin.write(data)
            fin.close()

js_escape_liquid()

...Sticking that code at the end of _action_files/nb2post.py allows the build to complete, and the plot.ly plots work, but it does break a couple other things: external images no longer load, and each Markdown heading now ends with a "paragraph symbol".

@hamelsmu
Copy link
Member

Yeah I knew this was going to happen at some point, going to have to escape code blocks. Will put this on the backlog

@hamelsmu hamelsmu added bug Something isn't working enhancement New feature or request labels Feb 18, 2020
@hamelsmu
Copy link
Member

hamelsmu commented Feb 18, 2020

@drscotthawley this looks like it has been fixed in the latest version of nbdev, the one line change you applied looks like it was on an old version of nbdev. Do you want to test it out and see how it goes now?

I think you have two separate issues that you need to break out separately.

@hamelsmu
Copy link
Member

Actually I know how to fix this. working on it now

@drscotthawley
Copy link
Contributor Author

drscotthawley commented Feb 18, 2020

Ok the issue with external images is totally fixed in the latest nbdev. And the issue with nbdev & plot.ly is fixed. But the Liquid problems, which are the subject of this issue, those are still in play.

That little 'escape' code snippet above temporarily got plotl.ly working for me, but now the updates to nbdev seem to have broken that. Or they've introduced a similar issue with an embedded draw.io object. I'm not sure, here's what I see:

Liquid Exception: Invalid syntax for include tag: style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&amp;&amp;!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&amp;&amp;evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('<a href="https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this">https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this</a>);" 
...
...and on and on

See this run: https://github.com/drscotthawley/devblog2/runs/453635808?check_suite_focus=true

So, I think this issue might still be unresolved.

@drscotthawley
Copy link
Contributor Author

drscotthawley commented Feb 18, 2020

I found a tricky interaction between nbdev & the fastpages build.

nbdev is replacing "<img src=" HTML code with Liquid "{% img src" tags.

This might not be a problem ordinarily, but when running with Liquid in fastpages, it can't handle long "src" strings.

So here's a question for both @sgugger and @hamelsmu:
Would it be better to NOT have nbdev translate the HTML "img src" tags into Liquid, or would it be better to provide fastpage's Liquid run with...whatever it needs to handle long src strings?

The original HTML code in question:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAACXCAYAAAC2qd/4AAAF4nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMnd3dy5kcmF3LmlvJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDE5LTEyLTIwVDIxJTNBMjQlM0ExMS45MjRaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKE1hY2ludG9zaCUzQiUyMEludGVsJTIwTWFjJTIwT1MlMjBYJTIwMTBfMTVfMCklMjBBcHBsZVdlYktpdCUyRjUzNy4zNiUyMChLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUlMkY3OS4wLjM5NDUuODglMjBTYWZhcmklMkY1MzcuMzYlMjIlMjBldGFnJTNEJTIyWnlaOEUxZjNhMW9ocEFIRDJjWEslMjIlMjB2ZXJzaW9uJTNEJTIyMTIuNC4zJTIyJTIwdHlwZSUzRCUyMmdvb2dsZSUyMiUyMHBhZ2VzJTNEJTIyMSUyMiUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMm9vV2FBMW83X2ljR18zc1RKd2ZsJTIyJTIwbmFtZSUzRCUyMlBhZ2UtMSUyMiUzRTdWZGRiNXN3RlAwMVNOdERJckFEcEklMkY1S052REpsWHFReDhuRnh5d1lqQXpUa2o2NjNlTlRjSkgwcTVWTjJsVG8wakI1MTdmYTg3eHNSd0hyJTJGTERGMG5LN0x0SUtIZVFteHdjdkhZUThtYnpBSDQwY3JTSTN5S3BaSW5GenNBOWU2SVdkQzI2WXdtdGVvbEtDSzVZMlFkalVSUTBWajJNU0NucWZ0cEc4SDdYa3FSMEJOekhoSSUyRlJCNWFvektCejN6M2pYeWxMczdhejU5cElUdHBrVzZMS1NDSnFBelU1JTJCTmJCS3ltRU1rJTJGNVlVVzVacSUyRmx4UlNLcmtSUEM1TzBVTDh6SWJrcnFaOCUyQnBkOFc5ZE1tSWclMkZiYmVSTzVxYktudkNkZldFSEJSenFMUk8yMTR0V1I4dEU4SE9uVjdwVTlLQW1oTE8wY1BBQ01qamRhTGpodGxDVHFsRlFCN3l3UERTQmRpWThwZmEzNlpCNUZ4dTh0a3hWa3VKNm9RM0pHVCUyQmFVaEFpZVFrUm14Q0xuV1JVUXFTZzlURG9vRld6cld5S0h1U2lFTkF0cHMlMkIlMkZyd25VZGxmbzBBdzJSUk41SlBFMmxXSlhKSk5ZY0NGTldLYVBuNUR2bXliZGg4OVhYbnltdiUyRjVxVDJNblhPNmRjUDJEV2RCeUFydkEwTktuQ21CTiUyQmdoc3RHNVIxQ01UYWIyMVdDcm5BSGlhY0NYRmxxN00lMkJ0ZUZLRFFmRzhiNUFMS2JaQjNEQmdVSzhYSlBwV0pncllVTjVDeEpkSnRsblRGRjd3Mno2eHBPRXNBYWxxamV1MjR6VWtReG9XZE5zR3ZGdGFlRkY1N1dyVHZRdzFXRGVDZmJ3WUZGUlU2VlBFS0tuV0Q5NDlxakN0dGhmYlo5TUp1NnlLQlp4JTJGVHRSR0xQbXZSVSUyQm14SGVMQ09mSVU3Z3c5MyUyRnF2dURKZGcwTWNOWkM3QW54OW1mVyUyQnp6b0pwaU56T0olMkJpWk4lMkZDbUliN3BmUHlSbVQyRXBpMzhWOXdjWG5EelFEOWFKQXQ5YWRGQ2NGSlZMSDVPVFFmaFdSaEZ3U1dLOVhnZ3NabmMzbUx3U1FlYWpLNUFMNnJRNGJHOUNuVTViREZKT2V5RWZiJTJGOEpXSnRoenZCb1BGSjVNQ2QzdUNlcnA0M1VLZUNJeUNtZGw3MzlqTW81Y0haUGFqbEQwb3BJbE9xUnFVYXJVJTJCdiUyRm5iNWIlMkY2QSUyRk83YTg2UG9mNVVmbzZGa0FYNmIlMkJ2T1IlMkJCaSUyRmslMkZnd1BOJTJGaFRmcjVyeEMlMkIlMkZRVSUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0XlLOgaAAAOIklEQVR4Xu2de4zcVRXHv2d2K7Z0H8BuRUCJ4htMKjYxKpiKbHchFB8R/jDSnRaFaFRa4wMTdX+jEQU1QH03WmapMSYYNQFlt60KkWqiqRG1RE1ENEagW6HdLa+2O8ecmd9uZ2Z3Hndmfs/53n826dzfvXc+53z7u3PvOfcKWEiABJwIiFNtViYBEgBFQycgAUcCFI0jMFYnAYqGPkACjgQoGkdgrE4CFA19gAQcCVA0jsBYnQQoGvoACTgSoGgcgbE6CVA09AEScCRA0TgCY3USoGjoAyTgSICicQTG6iRA0dAHSMCRAEXjCIzVSYCioQ+QgCMB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" style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&&!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('https://www.draw.io/?client=1&lightbox=1&edit=_blank');}})(this);"/>

This is getting converted by nbdev to

{% include image.html style="cursor:pointer;max-width:100%;" onclick="(function(img){if(img.wnd!=null&amp;&amp;!img.wnd.closed){img.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&amp;&amp;evt.source==img.wnd){img.wnd.postMessage(decodeURIComponent(img.getAttribute('src')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);img.wnd=window.open('<a href="https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this">https://www.draw.io/?client=1&amp;lightbox=1&amp;edit=_blank&#39;);}})(this</a>);" file="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAACXCAYAAAC2qd/4AAAF4nRFWHRteGZpbGUAJTNDbXhmaWxlJTIwaG9zdCUzRCUyMnd3dy5kcmF3LmlvJTIyJTIwbW9kaWZpZWQlM0QlMjIyMDE5LTEyLTIwVDIxJTNBMjQlM0ExMS45MjRaJTIyJTIwYWdlbnQlM0QlMjJNb3ppbGxhJTJGNS4wJTIwKE1hY2ludG9zaCUzQiUyMEludGVsJTIwTWFjJTIwT1MlMjBYJTIwMTBfMTVfMCklMjBBcHBsZVdlYktpdCUyRjUzNy4zNiUyMChLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyklMjBDaHJvbWUlMkY3OS4wLjM5NDUuODglMjBTYWZhcmklMkY1MzcuMzYlMjIlMjBldGFnJTNEJTIyWnlaOEUxZjNhMW9ocEFIRDJjWEslMjIlMjB2ZXJzaW9uJTNEJTIyMTIuNC4zJTIyJTIwdHlwZSUzRCUyMmdvb2dsZSUyMiUyMHBhZ2VzJTNEJTIyMSUyMiUzRSUzQ2RpYWdyYW0lMjBpZCUzRCUyMm9vV2FBMW83X2ljR18zc1RKd2ZsJTIyJTIwbmFtZSUzRCUyMlBhZ2UtMSUyMiUzRTdWZGRiNXN3RlAwMVNOdERJckFEcEklMkY1S052REpsWHFReDhuRnh5d1lqQXpUa2o2NjNlTlRjSkgwcTVWTjJsVG8wakI1MTdmYTg3eHNSd0hyJTJGTERGMG5LN0x0SUtIZVFteHdjdkhZUThtYnpBSDQwY3JTSTN5S3BaSW5GenNBOWU2SVdkQzI2WXdtdGVvbEtDSzVZMlFkalVSUTBWajJNU0NucWZ0cEc4SDdYa3FSMEJOekhoSSUyRlJCNWFvektCejN6M2pYeWxMczdhejU5cElUdHBrVzZMS1NDSnFBelU1JTJCTmJCS3ltRU1rJTJGNVlVVzVacSUyRmx4UlNLcmtSUEM1TzBVTDh6SWJrcnFaOCUyQnBkOFc5ZE1tSWclMkZiYmVSTzVxYktudkNkZldFSEJSenFMUk8yMTR0V1I4dEU4SE9uVjdwVTlLQW1oTE8wY1BBQ01qamRhTGpodGxDVHFsRlFCN3l3UERTQmRpWThwZmEzNlpCNUZ4dTh0a3hWa3VKNm9RM0pHVCUyQmFVaEFpZVFrUm14Q0xuV1JVUXFTZzlURG9vRld6cld5S0h1U2lFTkF0cHMlMkIlMkZyd25VZGxmbzBBdzJSUk41SlBFMmxXSlhKSk5ZY0NGTldLYVBuNUR2bXliZGg4OVhYbnltdiUyRjVxVDJNblhPNmRjUDJEV2RCeUFydkEwTktuQ21CTiUyQmdoc3RHNVIxQ01UYWIyMVdDcm5BSGlhY0NYRmxxN00lMkJ0ZUZLRFFmRzhiNUFMS2JaQjNEQmdVSzhYSlBwV0pncllVTjVDeEpkSnRsblRGRjd3Mno2eHBPRXNBYWxxamV1MjR6VWtReG9XZE5zR3ZGdGFlRkY1N1dyVHZRdzFXRGVDZmJ3WUZGUlU2VlBFS0tuV0Q5NDlxakN0dGhmYlo5TUp1NnlLQlp4JTJGVHRSR0xQbXZSVSUyQm14SGVMQ09mSVU3Z3c5MyUyRnF2dURKZGcwTWNOWkM3QW54OW1mVyUyQnp6b0pwaU56T0olMkJpWk4lMkZDbUliN3BmUHlSbVQyRXBpMzhWOXdjWG5EelFEOWFKQXQ5YWRGQ2NGSlZMSDVPVFFmaFdSaEZ3U1dLOVhnZ3NabmMzbUx3U1FlYWpLNUFMNnJRNGJHOUNuVTViREZKT2V5RWZiJTJGOEpXSnRoenZCb1BGSjVNQ2QzdUNlcnA0M1VLZUNJeUNtZGw3MzlqTW81Y0haUGFqbEQwb3BJbE9xUnFVYXJVJTJCdiUyRm5iNWIlMkY2QSUyRk83YTg2UG9mNVVmbzZGa0FYNmIlMkJ2T1IlMkJCaSUyRmslMkZnd1BOJTJGaFRmcjVyeEMlMkIlMkZRVSUzRCUzQyUyRmRpYWdyYW0lM0UlM0MlMkZteGZpbGUlM0XlLOgaAAAOIklEQVR4Xu2de4zcVRXHv2d2K7Z0H8BuRUCJ4htMKjYxKpiKbHchFB8R/jDSnRaFaFRa4wMTdX+jEQU1QH03WmapMSYYNQFlt60KkWqiqRG1RE1ENEagW6HdLa+2O8ecmd9uZ2Z3Hndmfs/53n826dzfvXc+53z7u3PvOfcKWEiABJwIiFNtViYBEgBFQycgAUcCFI0jMFYnAYqGPkACjgQoGkdgrE4CFA19gAQcCVA0jsBYnQQoGvoACTgSoGgcgbE6CVA09AEScCRA0TgCY3USoGjoAyTgSICicQTG6iRA0dAHSMCRAEXjCIzVSYCioQ+QgCMB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" %}

@hamelsmu
Copy link
Member

@drscotthawley do you have a code snippet you can give me to test out your plotly graph? I can add it to the demo notebook.

@hamelsmu hamelsmu self-assigned this Feb 18, 2020
@hamelsmu hamelsmu changed the title Enhancement: resolve Liquid's attempts to treat plot.ly javascript as tags Escape Liquid Tags Present in Code / Code Output Feb 18, 2020
@hamelsmu
Copy link
Member

Closed this in favor of #71

@drscotthawley
Copy link
Contributor Author

drscotthawley commented Feb 18, 2020

Yes! Just created one. Check this out:
https://github.com/drscotthawley/devblog2/blob/master/_notebooks/2020-02-18-fastpages_tests.ipynb

EDIT: GitHub doesn't show the plot.ly graph, but when you load up the notebook in jupyter, or if you have HTML created by exporting HTML from jupyter (or from Google Colab), the graph appears.

@hamelsmu
Copy link
Member

@drscotthawley lets take the conversation to the new issue, thanks so much for all your troubleshooting! You nudged me to figure out how to escape liquid in code blocks!

Love your participation in this journey with us ❤️

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants