Clay

repository·main·Indexed 41 days ago

https://github.com/scicloj/clay

A REPL-friendly Clojure toolset for data visualization and literate programming, designed to integrate with the Quarto publishing system.

Tokens
3.6K
Snippets
4
Records
8
Agent score
52%

What's inside Clay

  1. Explore the Clay ecosystem and related projects

    main

    Clay 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.
  2. Access Highlight.js assets via CDN

    main

    You can access the pre-built assets directly via JSDelivr.

    To get a single .js file that includes common languages built-in, use the following URL: https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.js

    https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.js
  3. Get started with Clay

    main

    To 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.
  4. Use the example1 namespace as a notebook

    main
    You can use the example1 namespace (located in notebooks/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.clj
  5. Install Highlight.js CDN assets via NPM

    main

    Use this package if you need to install pre-built, client-side distributable assets for highlight.js via NPM.

    Note: If you intend to use highlight.js primarily on the server-side, you should use the standard highlight.js package instead of this one.

  6. Use Subresource Integrity (SRI) with Highlight.js CDN

    main

    When 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 integrity attribute 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>
  7. Reference: Highlight.js File Digests for SRI

    main

    The 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