All files index.js

100% Statements 34/34
96.15% Branches 25/26
100% Functions 8/8
100% Lines 33/33
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65    1x 1x 1x 1x 1x   1x 12x     22x 1x 21x 10x 10x 1x 9x 1x   8x     21x       7x 4x 3x 2x   1x         12x 3x     3x   9x 2x     2x   7x 1x       1x     16x       12x    
'use strict'
 
var findAllBetween = require('unist-util-find-all-between')
var findAllBefore = require('unist-util-find-all-before')
var findAllAfter = require('unist-util-find-all-after')
var visit = require('unist-util-visit')
var find = require('unist-util-find')
 
module.exports = function (options) {
  var settings = options || {}
 
  function transform (node) {
    if (settings.depth && isNaN(settings.depth)) {
      throw new Error('Expected a `number` to change depth by.')
    } else if (settings.depth && node.type === 'heading') {
      var depth = node.depth + settings.depth
      if (depth > 6) {
        node.depth = 6
      } else if (depth < 0) {
        node.depth = 0
      } else {
        node.depth = depth
      }
    }
    return node
  }
 
  function getNode (tree, value) {
    if (typeof value === 'string') {
      return find(tree, { type: 'heading', children: [{ value: value }]})
    } else if (typeof value === 'number') {
      return tree.children[value]
    } else {
      return find(tree, value)
    }
  }
 
  function transformer (tree) {
    if (settings.after || settings.after === 0) {
      findAllAfter(
        tree,
        getNode(tree, settings.after),
        function (n) { return transform(n) }
      )
    } else if (settings.before) {
      findAllBefore(
        tree,
        getNode(tree, settings.before),
        function (n) { return transform(n) }
      )
    } else if (settings.between) {
      findAllBetween(
        tree,
        tree.children.indexOf(getNode(tree, settings.between[0])) + 1,
        getNode(tree, settings.between[1]),
        function (n) { return transform(n)}
      )
    } else {
      visit(tree, function (n) { return transform(n) })
    }
  }
 
  return transformer
}