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