| '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 |
| } |