index.js 671 B

1234567891011121314151617181920212223242526272829
  1. 'use strict'
  2. module.exports = toc
  3. var search = require('./search')
  4. var contents = require('./contents')
  5. // Get a TOC representation of `node`.
  6. function toc(node, options) {
  7. var settings = options || {}
  8. var heading = settings.heading ? toExpression(settings.heading) : null
  9. var result = search(node, heading, settings)
  10. var map = result.map
  11. result.map = map.length === 0 ? null : contents(map, settings.tight)
  12. // No given heading.
  13. if (!heading) {
  14. result.index = null
  15. result.endIndex = null
  16. }
  17. return result
  18. }
  19. // Transform a string into an applicable expression.
  20. function toExpression(value) {
  21. return new RegExp('^(' + value + ')$', 'i')
  22. }