link.js 773 B

123456789101112131415161718192021222324252627282930313233343536
  1. /**
  2. * @import {Element, Properties} from 'hast'
  3. * @import {Link} from 'mdast'
  4. * @import {State} from '../state.js'
  5. */
  6. import {normalizeUri} from 'micromark-util-sanitize-uri'
  7. /**
  8. * Turn an mdast `link` node into hast.
  9. *
  10. * @param {State} state
  11. * Info passed around.
  12. * @param {Link} node
  13. * mdast node.
  14. * @returns {Element}
  15. * hast node.
  16. */
  17. export function link(state, node) {
  18. /** @type {Properties} */
  19. const properties = {href: normalizeUri(node.url)}
  20. if (node.title !== null && node.title !== undefined) {
  21. properties.title = node.title
  22. }
  23. /** @type {Element} */
  24. const result = {
  25. type: 'element',
  26. tagName: 'a',
  27. properties,
  28. children: state.all(node)
  29. }
  30. state.patch(node, result)
  31. return state.applyData(node, result)
  32. }