Clay
repository·main·Indexed 41 days ago
https://github.com/scicloj/clayA REPL-friendly Clojure toolset for data visualization and literate programming, designed to integrate with the Quarto publishing system.
What's inside Clay
- Clay is a REPL-friendly Clojure tool designed for data visualization and literate programming. It provides a set of tools to integrate Clojure literate programming with the Quarto publishing system.
Explore the Clay ecosystem and related projects
mainClay is part of a broader ecosystem focused on data science and visualization in Clojure:
- Claykind: A project rethinking the Clay architecture and implementation from scratch.
- clay.el: An Emacs package providing interactive functions for Clay.
- Kindly ecosystem:
- Kindly: A common ground for defining visualization standards.
- kindly-advice: Helps tools like Clay become Kindly-compatible.
- kindly-render: A library for rendering 'kinds' to different target formats (Clay is moving towards relying on this).
- read-kinds: Used to generate Kindly advice from notebooks expressed as Clojure namespaces.
Access Highlight.js assets via CDN
mainYou can access the pre-built assets directly via JSDelivr.
To get a single
.jsfile that includes common languages built-in, use the following URL:https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.jshttps://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.jsGet started with Clay
mainTo begin using Clay, follow the official Get Started guide. For advanced usage, refer to the Documentation which includes sections on:
- API: Detailed information on available functions and methods.
- Configuration: Options and variations for customizing Clay.
- Setup: Instructions for integrating Clay with your editor to automate the
make!process.
Use the example1 namespace as a notebook
mainYou can use theexample1namespace (located innotebooks/example1.clj) as a notebook directly within your editor. For instructions on the recommended environment configuration and the specific commands required to run it, refer to the Setup section of the official Clay tutorial.notebooks/example1.cljInstall Highlight.js CDN assets via NPM
mainUse this package if you need to install pre-built, client-side distributable assets for
highlight.jsvia NPM.Note: If you intend to use
highlight.jsprimarily on the server-side, you should use the standardhighlight.jspackage instead of this one.Use Subresource Integrity (SRI) with Highlight.js CDN
mainWhen loading Highlight.js via a CDN, you can use Subresource Integrity (SRI) to ensure the security and legitimacy of the files by verifying that they haven't been modified. To implement this, add the
integrityattribute to your<script>tags using the corresponding SHA-384 digests provided in the project documentation.Example of implementing SRI for the main library and a language grammar:
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js" integrity="sha384-xBsHBR6BS/LSlO3cOyY2D/4KkmaHjlNn3NnXUMFFc14HLZD7vwVgS3+6U/WkHAra"></script> <!-- including any other grammars you might need to load --> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/go.min.js" integrity="sha384-WmGkHEmwSI19EhTfO1nrSk3RziUQKRWg3vO0Ur3VYZjWvJRdRnX4/scQg+S2w1fI"></script><script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js" integrity="sha384-xBsHBR6BS/LSlO3cOyY2D/4KkmaHjlNn3NnXUMFFc14HLZD7vwVgS3+6U/WkHAra"></script> <!-- including any other grammars you might need to load --> <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/go.min.js" integrity="sha384-WmGkHEmwSI19EhTfO1nrSk3RziUQKRWg3vO0Ur3VYZjWvJRdRnX4/scQg+S2w1fI"></script>Reference: Highlight.js File Digests for SRI
mainThe following list contains the SHA-384 digests required for Subresource Integrity (SRI) for various Highlight.js files, including the core library and language grammars (both standard and ES modules).
sha384-uBlc/xEFeFxZmBU7K/YWwi3ryXQrLQCAY2K1Dl3OD2DaAQBZZTt6Ew3aeDP20ix0 /es/languages/bash.js sha384-4qer4rJCVxZjkwD4YaJfOnT2NOOt0qdjKYJM2076C+djiJ4lgrP1LVsB/MCpJSET /es/languages/bash.min.js sha384-cEeSepkmM48Qe83yyTwFo/xnYlyD4ZO1tXaFbukowK2pPsea3XuCQSOwKnVmDrvC /es/languages/clojure.js sha384-trRP8CnzW/SSG6kXpTUGPBhUS/tOwRQ992lsIs6/zZ9FueaoJeINicKwxLLVIZKV /es/languages/clojure.min.js sha384-vFaFU6BzOmN6+nnjN9PVK1v19gtBl4CV6XKEFd8Z7TocU260nxSAfaxnXfMUzT95 /es/languages/clojure-repl.js sha384-k1X+fuSMpcR5xKe3aKGlyhvbYhLrDZlV/idD0dyH9Ez0QfO+xkhxwQTdTHcsu/ne /es/languages/clojure-repl.min.js sha384-DA5ii4oN8R2fsamNkHOanSjuN4v7j5RIuheQqnxMQ4cFnfekeuhwu4IdNXiCf+UU /es/languages/css.js sha384-OBugjfIr093hFCxTRdVfKH8Oe3yiBrS58bhyYYTUQJVobk6SUEjD7pnV8BPwsr8a /es/languages/css.min.js sha384-WFJdA9Hz+G9NQx5vPba/tcGyIibm57UkKVY32wNB/94iT2FmPma5W7gY8p2l6qps /es/languages/java.js sha384-coaxfgI2lKuDqSxfMlfyPq5WM0THaLGyATZHzaFMrWdIbPcLdduuItTe6AmT/m33 /es/languages/java.min.js sha384-WCznKe2n87QvV/L1MlXN+S8R6NPUQGU34+AqogMuWGZJswSD6rt3Mgih+xuKlDgm /es/languages/javascript.js sha384-eGsBtetyKPDKaLiTnxTzhSzTFM6A/yjHBQIj4rAMVaLPKW5tJb8U6XLr/AikCPd+ /es/languages/javascript.min.js sha384-T5TWWx2SVBqE/AJVqpKp6D8+8rpEcX+Usy65BcRR6SM8QEh62nMtxDsowBlhx1Ay /es/languages/julia.js sha384-NqyA97ZywXJCu5WG4NiDyJRAYm5L2aGPPTeGnRSfkEtK8Lch/likdativWWAbLUs /es/languages/julia.min.js sha384-j88HjPMV74WRxV1AxVCYrU0qm75a94ZrGEDzTEGiq+qKh/DF44dInmW4+8lUbHdl /es/languages/julia-repl.js sha384-LTa0cywuUcomDh5o0gVu3KGAtps34A+P7poAvNGIuu1GCw79Q6rFXzyHtbFKK6hl /es/languages/julia-repl.min.js sha384-bWwkdmOCj83zZ8/m+oPD9goRMhrPCb25ZA6aTyg7vcsq9IpuyED38kQSw1Na4UTZ /es/languages/markdown.js sha384-SqGSUq0DMQ0OUQnQnTuVDCJyhANd/MFNj+0PF67S+VXgHpR8A4tPsf/3GoSFRmrx /es/languages/markdown.min.js sha384-+5oyk7Ed3OlvEWGj8xracq/6e52BScKUN4kxcreNwB7kfRTVsAMs/aAJM58dzIFN /es/languages/python.js sha384-ND/UH2UkaeWiej5v/oJspfKDz9BGUaVpoDcz4cof0jaiv/mCigjvy7RQ7e+3S6bg /es/languages/python.min.js sha384-BSeMSSkpHXATzXVnQDrjF2DPTOBSrKP8QqV0DcEVYa5k6JK9CSYxFKyEhj+Kqnde /es/languages/python-repl.js sha384-sW9zIYfNc+qN/lya5oAmIdFlVbXjPLcdYkPSdRMpxO/xI2jbDW/Q4Etvx02DFOmf /es/languages/python-repl.min.js sha384-GLWbnkTbelVKeKv8VxFhtauUDfV8uqxjBPEEZ3WYks9zmbd1rFCWmdzGucZn0+ZQ /es/languages/r.js sha384-T5hv8+GOm2ni1B0cuZtt+8T0cIMH1CTycc9OQQH0GLcIQhmeBosyhcmcIv4r/1ag /es/languages/r.min.js sha384-lRhSX2XDrY27NzrAS1t4YaeRtwjsY41kFBbIEYltkmnsfSE7lbBJMQVds2u/MqTT /es/languages/scss.js sha384-RDUehV4j9Do6iGkYq9Gjn3aUxh6x+NFER1sHpLUXsNoCFjah8Ysrlad8ukLbIr4J /es/languages/scss.min.js sha384-qbbaBGYYg7PdopdWOGj8KdkBosUDY5PAe3aTMJKTqWcriPBJJzCVu5BlwNEwqr9U /languages/bash.js sha384-ByZsYVIHcE8sB12cYY+NUpM80NAWHoBs5SL8VVocIvqVLdXf1hmXNSBn/H9leT4c /languages/bash.min.js sha384-k+XDUAVhlUtu9Gv3AkKvB9gL0WtZTonn6fFtlSdKn1+7U6yNLgRLHg84pXr4hmp/ /languages/clojure.js sha384-01/jwK07TwTjPcx55RJ1V03zqCdkEK8QBmgLSbcgcyl1uZ1AwjuSmufE481pF0nY /languages/clojure.min.js sha384-ay9bRwR4f9M8UI/NyiGJ1HTv523B5GEn2wlWYh2raRF/1TG2wPpnLGiDXSamWhNT /languages/clojure-repl.js sha384-JHMQSU8sCMCdL753bS07Oioz0pIyBJnH5TRJy2QIQqDPil37Ezn0fO8LBx+F6/Mn /languages/clojure-repl.min.js sha384-r9czyL17/ovexTOK33dRiTbHrtaMDzpUXW4iRpetdu1OhhckHXiFzpgZyni2t1PM /languages/css.js sha384-HpHXnyEqHVbcY+nua3h7/ajfIrakWJxA3fmIZ9X9kbY45N6V+DPfMtfnLBeYEdCx /languages/css.min.js sha384-pYIeBYeCE96U9EkPcT4uJjNWyrB1BKB41JIadYJbvmGa5KacaoXtSQOUpBfeyWQX /languages/java.js sha384-uUg+ux8epe42611RSvEkMX2gvEkMdw+l6xG5Z/aQriABp38RLyF9MjDZtlTlMuQY /languages/java.min.js sha384-vJxw3XlwaqOQr8IlRPVIBO6DMML5W978fR21/GRI5PAF7yYi2WstLYNG1lXk6j9u /languages/javascript.js sha384-44q2s9jxk8W5N9gAB0yn7UYLi9E2oVw8eHyaTZLkDS3WuZM/AttkAiVj6JoZuGS4 /languages/javascript.min.js sha384-ejh0O6l/Lf9xflCigwVR6FqqJAWhVWB+M7kjlcNSQvtso+e2QBqicY9b56ih9a2X /languages/julia.js sha384-ZqjopgKriSJBeG1uYhjsw3GyqKRlsBIGaR55EzUgK9wOsFdbB67p+I0Lu9qqDf2j /languages/julia.min.js sha384-22/zFztcXrE/pLQhJdLUc/pe7c6+emaNtCEgS3DHIA5djtUl0E7O+TYg+kuDG5Ss /languages/julia-repl.js sha384-fyOrUSw80R//DSvkLRfpGAxhjx6MpL1QoWcTCG9hXXT74sh7gXeUrstn7IwT0G3K /languages/julia-repl.min.js sha384-U+zIQPoVdPCO0o4poik2hYNbHtNm+L5OojDTulgIeEZTNz+LooLAm72d66mNjwKD /languages/markdown.js sha384-mCUujHHbWJEjcupTTfWOk9YR3YCYNHaA578+TTXUd4LPi7fGNuMQbysbl1pmcIGd /languages/markdown.min.js sha384-zdZio5RcGiKQJCpe/1IXujPle3bIY8sbmvCabSU5G5GzWAzZtoRZfg9QAQXCL08q /languages/python.js sha384-IP4vv4Aoh9Lyg8QyzVkAmn2JGoDCpgVHzVSrD3Z+rVyn7+s4wx4pRjv+go3TEwfj /languages/python.min.js sha384-7jEUoPRiHUgJOTai1kMkoxn2EnF86LMvN/MagHBb2SlmmV6Xd4jlrgQfLTzgM3sP /languages/python-repl.js sha384-bKSBGjy2/8jltjSAlvCjAvEvjy8osMZfj37sBThcXS7n6SppraMRghmLmAxiapyN /languages/python-repl.min.js sha384-Xa3MEXJyV9PD/wnbdHTdqvipEl9QqodA35i6Nmw/6wqrvQ585Q8EDfz7f2UCuYpU /languages/r.js sha384-+z7INDMj7HMs67TuLfoyKa6TUHdTweahANtJ1Spg6uCa8/f1jFUf238jj53TDxmP /languages/r.min.js sha384-fwYddFsITuK2bPhi9RuIzwi4PTULEXgtEJsQzTdx97vOS/GHfrk+aNSLxEHgzQa5 /languages/scss.js sha384-6u+QpCDqQidb5pcO+yBqy0xLJ30x30VlrFvXm8J84LMwGIw9q3U4u+Z9vFXlhB5x /languages/scss.min.js sha384-GrDgDRjWvndNHvoZR8ndBokfNGrjeilPkqY7O+HP0gtMwTYWd77LL4MT9BOpqm7H /highlight.js sha384-7bbdPm3VNyCgWOlKs5HhCulltiEnZMA0oqvLJt0K0a/OiOhXZEZBo+gtNYs6Wk6U /highlight.min.js