code: function customDedent(options = { dropLowest: true }) {
    let mask = DEDENT | (
    options.dropLowest ? DEDENT_DROP_LOWEST : 0);
  
    if (variations.has(mask)) {
      return variations.get(mask);
    }
  
    return function (ss, ...subs) {
      let [strings, indents] = measureIndents(
      // handle the substitutions right off the bat, it will just make things
      // easier all around
      handleSubstitutions(ss, subs),
  
      // pass in the handlers to strip empty head and tail strings and then
      // drop the lowest value as this is often a requested feature
      {
        preWork: [stripEmptyFirstAndLast],
        postWork: [
        options.dropLowest ?
        dropLowestIndents :
        NOOP_POSTWORK] });
  
  
  
  
      // count the minimal amount of shared leading whitespace
      let excess = Math.min(...indents) || 0;
  
      // if the excessive whitespace is greater than 0, remove the specified
      // amount from each line
      if (excess > 0) {
        strings = strings.map(s => s.replace(/([ \t]*)$/, ''));
        strings = strings.map(s => s.replace(
        new RegExp(`^[ \t]{0,${excess}}`), ''));
  
      }
  
      // return a single joined string
      return strings.join('\n');
    };
  }
docs: The underpinning of `dedent()` is `customDedent()`. This function takes
  an options object and returns a tag function. So direct usage would be
  something like
  
  ```
  let val = customDedent(options)`the string to work on`
  ```
  
  Supported custom functionality currently supports "dropping" the lowest
  level of indentation as long as the lowest indentation count makes up
  less than half the overall indentation values. It does this by setting the
  lowest values to be equal to the second lowest values.
  
  @param {Object} options
  
  @deprecated the options for customDedent seem to always be preferrable in
  practice and as such, `dedent` and `gql` are simply aliases for the base
  behavior in `customDedent` now. Expect `customDedent` to be removed in
  future major revisions of `ne-tag-fns`