code: function toH(h, node, ctx) {
    var parentSchema = ctx.schema
    var schema = parentSchema
    var name = node.tagName
    var properties
    var attributes
    var children
    var property
    var elements
    var length
    var index
    var value
    var result
  
    if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {
      schema = svg
      ctx.schema = schema
    }
  
    if (ctx.vdom === true && schema.space === 'html') {
      name = name.toUpperCase()
    }
  
    properties = node.properties
    attributes = {}
  
    for (property in properties) {
      addAttribute(attributes, property, properties[property], ctx)
    }
  
    if (
      typeof attributes.style === 'string' &&
      (ctx.vdom === true || ctx.vue === true || ctx.react === true)
    ) {
      // VDOM, Vue, and React accept `style` as object.
      attributes.style = parseStyle(attributes.style, name)
    }
  
    if (ctx.prefix) {
      ctx.key++
      attributes.key = ctx.prefix + ctx.key
    }
  
    if (ctx.vdom && schema.space !== 'html') {
      attributes.namespace = ns[schema.space]
    }
  
    elements = []
    children = node.children
    length = children ? children.length : 0
    index = -1
  
    while (++index < length) {
      value = children[index]
  
      if (is('element', value)) {
        elements.push(toH(h, value, ctx))
      } else if (is('text', value)) {
        elements.push(value.value)
      }
    }
  
    // Ensure no React warnings are triggered for
    // void elements having children passed in.
    result =
      elements.length === 0 ? h(name, attributes) : h(name, attributes, elements)
  
    // Restore parent schema.
    ctx.schema = parentSchema
  
    return result
  }
docs: Transform a HAST node through a hyperscript interface to *anything*!