defence-cli

command-line tool for extracting fenced code from CommonMark documents

Usage no npm install needed!

<script type="module">
  import defenceCli from 'https://cdn.skypack.dev/defence-cli';
</script>

README

npm install --global defence-cli

Filter a README file, retaining fenced code blocks with JavaScript code, piping to Node.js for execution:

defence --info javascript,js README.md | node

Along with assert and replace-require-self, this can make for very readable npm test scripts that run code examples in your README files:

{
  "scripts": {
    "test": "defence README.md | replace-require-self | node"
  }
}

boolean-json-cnf is an example.

Without a file argument, read from standard input:

cat README.md | defence --info javascript,js | node

Retain just fenced code blocks without info strings:

cat INSTALLING.md | defence --no-info | less

Source lines outside of matching fenced code blocks are retained as blank lines, so line numbering doesn't change:

echo "\n\n\n\n\n~~~js\nthrow new Error()\n~~~" | defence | node
[stdin]:7
throw new Error()
      ^
Error
    at [stdin]:7:7
    [ ... ]