'use strict' var xtend = require('xtend') var escapes = require('markdown-escapes') var defaults = require('./defaults') module.exports = setOptions function setOptions(options) { var self = this var current = self.options var key var value if (options == null) { options = {} } else if (typeof options === 'object') { options = xtend(options) } else { throw new Error('Invalid value `' + options + '` for setting `options`') } for (key in defaults) { value = options[key] if (value == null) { value = current[key] } if ( (key !== 'blocks' && typeof value !== 'boolean') || (key === 'blocks' && typeof value !== 'object') ) { throw new Error( 'Invalid value `' + value + '` for setting `options.' + key + '`' ) } options[key] = value } self.options = options self.escape = escapes(options) return self }