import { escapeHTML } from './utils';
const SPAN_CLOSE = '';
const emitsWrappingTags = (node) => {
  return !!node.kind;
};
export default class HTMLRenderer {
  constructor(tree, options) {
    this.buffer = "";
    this.classPrefix = options.classPrefix;
    tree.walk(this);
  }
  // renderer API
  addText(text) {
    this.buffer += escapeHTML(text);
  }
  openNode(node) {
    if (!emitsWrappingTags(node)) return;
    let className = node.kind;
    if (!node.sublanguage) {
      className = `${this.classPrefix}${className}`;
    }
    this.span(className);
  }
  closeNode(node) {
    if (!emitsWrappingTags(node)) return;
    this.buffer += SPAN_CLOSE;
  }
  // helpers
  span(className) {
    this.buffer += ``;
  }
  value() {
    return this.buffer;
  }
}