11var _ = require ( 'lodash' ) ;
22
3+ var presets = {
4+ bem : require ( '../../presets/bem.json' )
5+ } ;
6+
37/**
48 * Sets options
5- * @param {Object } [options]
9+ * @param {Object|String } [options] options or preset name
10+ * @param {String } [options.preset]
611 * @param {String[] } [options.ignoreAttributes]
712 * @param {String[] } [options.compareAttributesAsJSON]
813 * @param {Boolean } [options.ignoreWhitespaces=true]
914 * @param {Boolean } [options.ignoreComments=true]
10- * @param {Boolean } [options.ignoreClosingTags =false]
15+ * @param {Boolean } [options.ignoreEndTags =false]
1116 * @param {Boolean } [options.ignoreDuplicateAttributes=false]
1217 * returns {Object}
1318 */
1419 module . exports = function ( options ) {
1520 if ( typeof options === 'string' ) {
16- if ( options === 'bem' ) {
17- options = {
18- // ignore generated attributes
19- ignoreAttributes : [ 'id' , 'for' , 'aria-labelledby' , 'aria-describedby' ] ,
20- compareAttributesAsJSON : [
21- 'data-bem' ,
22- { name : 'onclick' , isFunction : true } ,
23- { name : 'ondblclick' , isFunction : true }
24- ]
25- } ;
26- } else {
27- console . error ( options . bold . red + ' is an invalid preset name. Use ' + 'bem' . bold . green + ' instead.' ) ;
28- process . exit ( 1 ) ;
21+ options = { preset : options } ;
22+ }
23+
24+ if ( options && options . preset ) {
25+ var preset = String ( options . preset ) ;
26+ if ( ! presets . hasOwnProperty ( preset ) ) {
27+ throw Error ( preset + ' is an invalid preset name.' ) ;
2928 }
29+
30+ delete options . preset ;
31+ options = _ . defaults ( options , presets [ preset ] ) ;
3032 }
3133
3234 return _ . defaults ( options || { } , {
@@ -40,3 +42,5 @@ var _ = require('lodash');
4042 ignoreDuplicateAttributes : false
4143 } ) ;
4244} ;
45+
46+ module . exports . presets = presets ;
0 commit comments