aboutsummaryrefslogtreecommitdiff
path: root/src/components/Pseudocode.js
blob: e857245155a30c646672457d9faf19fe8ecbb6bb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/** @jsx jsx */
import { jsx } from "theme-ui";
import { render as renderCode } from "pseudocode";

let cache = {};

function Pseudocode({ code, options }) {
  if (typeof window === `undefined`) {
    return <div />;
  }
  let key = JSON.stringify({ code: code, options: options });
  let rendered = null;
  if (key in cache) {
    rendered = cache[key];
  } else {
    rendered = renderCode(code, null, options);
    cache[key] = rendered;
  }
  return (
    <div
      ref={ref => {
        if (ref) ref.appendChild(rendered);
        return ref;
      }}
    ></div>
  );
}

export default Pseudocode;