You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							2.4 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
var list = require('postcss').list; | 
						|
 | 
						|
module.exports = { | 
						|
  /** | 
						|
     * Throw special error, to tell beniary, | 
						|
     * that this error is from Autoprefixer. | 
						|
     */ | 
						|
  error: function error(text) { | 
						|
    var err = new Error(text); | 
						|
    err.autoprefixer = true; | 
						|
    throw err; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Return array, that doesn’t contain duplicates. | 
						|
     */ | 
						|
  uniq: function uniq(array) { | 
						|
    var filtered = []; | 
						|
 | 
						|
    for (var _iterator = array, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { | 
						|
      var _ref; | 
						|
 | 
						|
      if (_isArray) { | 
						|
        if (_i >= _iterator.length) break; | 
						|
        _ref = _iterator[_i++]; | 
						|
      } else { | 
						|
        _i = _iterator.next(); | 
						|
        if (_i.done) break; | 
						|
        _ref = _i.value; | 
						|
      } | 
						|
 | 
						|
      var i = _ref; | 
						|
 | 
						|
      if (filtered.indexOf(i) === -1) { | 
						|
        filtered.push(i); | 
						|
      } | 
						|
    } | 
						|
 | 
						|
    return filtered; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Return "-webkit-" on "-webkit- old" | 
						|
     */ | 
						|
  removeNote: function removeNote(string) { | 
						|
    if (string.indexOf(' ') === -1) { | 
						|
      return string; | 
						|
    } | 
						|
 | 
						|
    return string.split(' ')[0]; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Escape RegExp symbols | 
						|
     */ | 
						|
  escapeRegexp: function escapeRegexp(string) { | 
						|
    return string.replace(/[.?*+^$[\]\\(){}|-]/g, '\\$&'); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Return regexp to check, that CSS string contain word | 
						|
     */ | 
						|
  regexp: function regexp(word, escape) { | 
						|
    if (escape === void 0) { | 
						|
      escape = true; | 
						|
    } | 
						|
 | 
						|
    if (escape) { | 
						|
      word = this.escapeRegexp(word); | 
						|
    } | 
						|
 | 
						|
    return new RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", 'gi'); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Change comma list | 
						|
     */ | 
						|
  editList: function editList(value, callback) { | 
						|
    var origin = list.comma(value); | 
						|
    var changed = callback(origin, []); | 
						|
 | 
						|
    if (origin === changed) { | 
						|
      return value; | 
						|
    } | 
						|
 | 
						|
    var join = value.match(/,\s*/); | 
						|
    join = join ? join[0] : ', '; | 
						|
    return changed.join(join); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
     * Split the selector into parts. | 
						|
     * It returns 3 level deep array because selectors can be comma | 
						|
     * separated (1), space separated (2), and combined (3) | 
						|
     * @param {String} selector selector string | 
						|
     * @return {Array<Array<Array>>} 3 level deep array of split selector | 
						|
     * @see utils.test.js for examples | 
						|
     */ | 
						|
  splitSelector: function splitSelector(selector) { | 
						|
    return list.comma(selector).map(function (i) { | 
						|
      return list.space(i).map(function (k) { | 
						|
        return k.split(/(?=\.|#)/g); | 
						|
      }); | 
						|
    }); | 
						|
  } | 
						|
}; |