cupper-hugo-theme/content/patterns/coding/code-blocks.md

1.7 KiB

+++ title = "Code blocks" weight = 1 +++

Markdown already supports code samples both inline (using single backticks like `some code here`) and in blocks. Infusion will syntax highlight HTML, CSS, and JavaScript if you provide the correct language in the formulation of the block.

So, this…

{{}}

<button aria-pressed="false">toggle me</button>

{{}}

… will result in this:

<button aria-pressed="false">toggle me</button>

Note that the syntax highlighting uses a greyscale theme. Infusion is careful not to use color as part of its own design, because these colors may clash with those of the design being illustrated and discussed.

Line-numbered code blocks

In addition to the basic markdown support, Infusion provides a mechanism to display code blocks with line numbers. This is via the codeBlock shortcode. Here is the code for a block of JavaScript with line numbers:

{{}} {{<codeBlock lang="js" numbered="true">}} var toggle = demo.querySelector('[aria-pressed]');

toggle.addEventListener('click', (e) => {
let pressed = e.target.getAttribute('aria-pressed') === 'true'; e.target.setAttribute('aria-pressed', !pressed); }); {{</codeBlock>}} {{}}

The output will look like the following. Now you can refer to particular bits of the code by line number, like the arrow function on line 3.

{{}} var toggle = demo.querySelector('[aria-pressed]');

toggle.addEventListener('click', (e) => {
let pressed = e.target.getAttribute('aria-pressed') === 'true'; e.target.setAttribute('aria-pressed', !pressed); }); {{}}