table.js 1021 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict'
  2. module.exports = table
  3. var position = require('unist-util-position')
  4. var wrap = require('../wrap')
  5. var all = require('../all')
  6. function table(h, node) {
  7. var rows = node.children
  8. var index = rows.length
  9. var align = node.align
  10. var alignLength = align.length
  11. var result = []
  12. var pos
  13. var row
  14. var out
  15. var name
  16. var cell
  17. while (index--) {
  18. row = rows[index].children
  19. name = index === 0 ? 'th' : 'td'
  20. pos = alignLength
  21. out = []
  22. while (pos--) {
  23. cell = row[pos]
  24. out[pos] = h(cell, name, {align: align[pos]}, cell ? all(h, cell) : [])
  25. }
  26. result[index] = h(rows[index], 'tr', wrap(out, true))
  27. }
  28. return h(
  29. node,
  30. 'table',
  31. wrap(
  32. [
  33. h(result[0].position, 'thead', wrap([result[0]], true)),
  34. h(
  35. {
  36. start: position.start(result[1]),
  37. end: position.end(result[result.length - 1])
  38. },
  39. 'tbody',
  40. wrap(result.slice(1), true)
  41. )
  42. ],
  43. true
  44. )
  45. )
  46. }