code: function transformHexAlpha(string, source, decl) {
  
  	return recurse(string);
  
  	function recurse(input) {
  		var hexa_pos = input.indexOf('hexa');
  		var subs = input.substring(hexa_pos);
  		
  		var h = HEX_RE.exec(subs);
  		var o = OPACITY_RE.exec(subs);
  		
  		var i_h = INV_HEX_RE.exec(subs);
  		var i_o = INV_OPACITY_RE.exec(subs);
  		
  		if(i_h !== null){
  			throw decl.error('Invalid hex color: ' + i_h[0], { plugin: 'postcss-color-hexa' });
  		}
  		
  		if(i_o !== null){
  			throw decl.error('Invalid opacity: ' + i_o[0], { plugin: 'postcss-color-hexa' });
  		}
  
  		if (!h) {
  			return input;
  		}
  
  		var rgb = hexToRgb(h[0]);
  		var rgb_chars = [rgb.r, rgb.g, rgb.b];
  		var hexa = '';
  
  		if (o) {
  			rgb_chars.push(o[0]);
  			hexa = 'rgba(' + rgb_chars.join(', ') + ')';
  		} else {
  			hexa = 'rgb(' + rgb_chars.join(', ') + ')';
  		}
  
  		var result = input.replace(HEX_ALPHA_RE, hexa);
  
  		if (result.indexOf('hexa') === -1) {
  			return result;
  		} else {
  			return recurse(result);
  		}
  	}
  }
docs: ---------------------------------------------------------------------------- Helper functions ----------------------------------------------------------------------------