code: function merge(opt) {
      var k, v
  
      for (k in opt) {
        v = opt[k]
  
        switch (k) {
          case 'varset':
            _setVars.call(this, v)
            break
          case 'define':
          case 'set':
            _split(v).forEach(this.def, this)
            break
          case 'undef':
          case 'unset':
            _split(v).forEach(this.undef, this)
            break
          case 'filter':
            _split(v).forEach(_setFilter, this)
            break
          case 'customFilter':
            _createFilter(Array.isArray(v) ? v : [v])
            break
          case 'header1':
          case 'headers':
            this[k] = _formatHeader(v)
            break
          case 'emptyLines':
            this[k] = v | 0
            break
          case 'eolType':
            if (/^(?:win|mac|unix)$/.test(v))
              this[k] = v
            else
              this.invalid(k, v)
            break
          case 'comments':
            if (/^(?:all|none|filter)$/.test(v))
              this[k] = v
            else
              this.invalid(k + ' value', v)
            break
          case 'indent':
            if (/^\d+[ts]?/.test(v))
              this[k] = v
            else if (!v)
              this[k] = ''
            else
              this.invalid(k, v)
            break
          default:
            break
        }
        //else
        //  console.log('Ignoring option ' + k)
      }
    }
docs: /* eslint-disable guard-for-in, complexity