Giter Site home page Giter Site logo

spmda's Introduction

SPMDA: Single Page Markdown App

Quickstart

$ mkdir spmda-quickstart
$ cd spmda-quickstart

$ npm init from-gh qabex/spmda/basic .
$ gvim index.html docs/*
$ npx qsrv ./docs

Take a look at the qabx/spmda/basic template.

SPMDA Web Components

npx qsrv integration

The "Quick Dev Server" allows live-reloading of changes and auto-updating JSON directory listings. For example, npx qsrv ./docs watches the ./docs directory for changes and keeps "all-docs.json" updated.

The <lsdir-view> web component fetches the specified src json document and then renders all referenced files using other web components such as <markdownit-view>.

The textContent is parsed with JSON5 to be more human-friendly.

...
<script type='module' src='https://cdn.jsdelivr.net/gh/qabex/[email protected]/esm/lsdir-view.mjs'></script>
...
<lsdir-view src='all-docs.json'>
  md: "markdownit-view",
  markdown: "markdownit-view",
  ".vegalite-json": "vegalite-view",
</lsdir-view>
...

The <mermaid-view> web component renders its textContent attribute using the mermaid package.

...
<script type='module' src='https://cdn.jsdelivr.net/gh/qabex/[email protected]/esm/mermaid-view.mjs'></script>
...
<mermaid-view>
  graph TD;
      A-->B;
      A-->C;
      B-->D;
      C-->D;
</mermaid-view>

The <vegalite-view> web component renders its textContent attribute using the Vega-Lite package.

The textContent is parsed with JSON5 to be more human-friendly.

...
<script type='module' src='https://cdn.jsdelivr.net/gh/qabex/[email protected]/esm/vegalite-view.mjs'></script>
...
<vegalite-view>
  description: 'A simple bar chart with embedded data.',
  data: {
    values: [
      {a: 'A', b: 28},
      {a: 'B', b: 55},
      {a: 'C', b: 43},
      {a: 'D', b: 91},
      {a: 'E', b: 81},
      {a: 'F', b: 53},
      {a: 'G', b: 19},
      {a: 'H', b: 87},
      {a: 'I', b: 52}
    ]
  },
  mark: 'bar',
  encoding: {
    x: {field: 'a', type: 'ordinal'},
    y: {field: 'b', type: 'quantitative'}
  }
</vegalite-view>

The <markdownit-view> web component renders its textContent attribute using the markdown-it package and uses highlight-js for code syntax highlighting.

...
<script type='module' src='https://cdn.jsdelivr.net/gh/qabex/[email protected]/esm/markdownit-view.mjs'></script>
...
<markdownit-view>
  # An h1 title
  ### An h3 title
  ...
</markdownit-view>

To facilitate richer markdown-based documentation, block fences starting with ! are delegated into web components. For example:

### First

```!mermaid
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
```

### Second

```!vegalite
description: 'A simple bar chart with embedded data.',
data: {
  values: [
    {a: 'A', b: 28},
    {a: 'B', b: 55},
    {a: 'C', b: 43},
    {a: 'D', b: 91},
    {a: 'E', b: 81},
    {a: 'F', b: 53},
    {a: 'G', b: 19},
    {a: 'H', b: 87},
    {a: 'I', b: 52}
  ]
},
mark: 'bar',
encoding: {
  x: {field: 'a', type: 'ordinal'},
  y: {field: 'b', type: 'quantitative'}
}
```

### Third

becomes:

<h3>First</h3>
<mermaid-view>
  graph TD;
      A-->B;
      A-->C;
      B-->D;
      C-->D;
</mermaid-view>
<h3>Second</h3>
<vegalite-view>
  description: 'A simple bar chart with embedded data.',
  data: {
    values: [
      {a: 'A', b: 28},
      {a: 'B', b: 55},
      {a: 'C', b: 43},
      {a: 'D', b: 91},
      {a: 'E', b: 81},
      {a: 'F', b: 53},
      {a: 'G', b: 19},
      {a: 'H', b: 87},
      {a: 'I', b: 52}
    ]
  },
  mark: 'bar',
  encoding: {
    x: {field: 'a', type: 'ordinal'},
    y: {field: 'b', type: 'quantitative'}
  }
</vegalite-view>
<h3>Third</h3>

spmda's People

Contributors

shanewholloway avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.