revert.js 863 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. 'use strict'
  2. module.exports = revert
  3. var u = require('unist-builder')
  4. var all = require('./all')
  5. // Return the content of a reference without definition as markdown.
  6. function revert(h, node) {
  7. var subtype = node.referenceType
  8. var suffix = ']'
  9. var contents
  10. var head
  11. var tail
  12. if (subtype === 'collapsed') {
  13. suffix += '[]'
  14. } else if (subtype === 'full') {
  15. suffix += '[' + node.identifier + ']'
  16. }
  17. if (node.type === 'imageReference') {
  18. return u('text', '![' + node.alt + suffix)
  19. }
  20. contents = all(h, node)
  21. head = contents[0]
  22. if (head && head.type === 'text') {
  23. head.value = '[' + head.value
  24. } else {
  25. contents.unshift(u('text', '['))
  26. }
  27. tail = contents[contents.length - 1]
  28. if (tail && tail.type === 'text') {
  29. tail.value += suffix
  30. } else {
  31. contents.push(u('text', suffix))
  32. }
  33. return contents
  34. }