src/sass/parse.js
function checkUriRawCharacters(i) {
  const start = i;
  let l;

  if (l = checkIdent(i)) i += l;
  else if (l = checkNumber(i)) i += l;
  else {
    switch (tokens[i].type) {
      case TokenType.ExclamationMark:
      case TokenType.NumberSign:
      case TokenType.DollarSign:
      case TokenType.PercentSign:
      case TokenType.Ampersand:
      case TokenType.Asterisk:
      case TokenType.PlusSign:
      case TokenType.Comma:
      case TokenType.HyphenMinus:
      case TokenType.FullStop:
      case TokenType.Solidus:
      case TokenType.Colon:
      case TokenType.Semicolon:
      case TokenType.LessThanSign:
      case TokenType.EqualsSign:
      case TokenType.GreaterThanSign:
      case TokenType.QuotationMark:
      case TokenType.CommercialAt:
      case TokenType.LeftSquareBracket:
      case TokenType.RightSquareBracket:
      case TokenType.CircumflexAccent:
      case TokenType.LowLine:
      case TokenType.LeftCurlyBracket:
      case TokenType.VerticalLine:
      case TokenType.RightCurlyBracket:
      case TokenType.Tilde:
        i += 1;
        break;

      default:
        return 0;
    }
  }

  return i - start;
}
function checkUriRawCharacters(i) {
  const start = i;
  let l;

  if (l = checkIdent(i)) i += l;
  else if (l = checkNumber(i)) i += l;
  else {
    switch (tokens[i].type) {
      case TokenType.ExclamationMark:
      case TokenType.NumberSign:
      case TokenType.DollarSign:
      case TokenType.PercentSign:
      case TokenType.Ampersand:
      case TokenType.Asterisk:
      case TokenType.PlusSign:
      case TokenType.Comma:
      case TokenType.HyphenMinus:
      case TokenType.FullStop:
      case TokenType.Solidus:
      case TokenType.Colon:
      case TokenType.Semicolon:
      case TokenType.LessThanSign:
      case TokenType.EqualsSign:
      case TokenType.GreaterThanSign:
      case TokenType.QuotationMark:
      case TokenType.CommercialAt:
      case TokenType.LeftSquareBracket:
      case TokenType.RightSquareBracket:
      case TokenType.CircumflexAccent:
      case TokenType.LowLine:
      case TokenType.LeftCurlyBracket:
      case TokenType.VerticalLine:
      case TokenType.RightCurlyBracket:
      case TokenType.Tilde:
        i += 1;
        break;

      default:
        return 0;
    }
  }

  return i - start;
}
function checkUriRawCharacters ( i ) { const start = i ; let l ; if ( l = checkIdent ( i ) ) i += l ; else if ( l = checkNumber ( i ) ) i += l ; else { switch ( tokens [ i ] . type ) { case TokenType . ExclamationMark : case TokenType . NumberSign : case TokenType . DollarSign : case TokenType . PercentSign : case TokenType . Ampersand : case TokenType . Asterisk : case TokenType . PlusSign : case TokenType . Comma : case TokenType . HyphenMinus : case TokenType . FullStop : case TokenType . Solidus : case TokenType . Colon : case TokenType . Semicolon : case TokenType . LessThanSign : case TokenType . EqualsSign : case TokenType . GreaterThanSign : case TokenType . QuotationMark : case TokenType . CommercialAt : case TokenType . LeftSquareBracket : case TokenType . RightSquareBracket : case TokenType . CircumflexAccent : case TokenType . LowLine : case TokenType . LeftCurlyBracket : case TokenType . VerticalLine : case TokenType . RightCurlyBracket : case TokenType . Tilde : i += 1 ; break ; default : return 0 ; } } return i - start ; }
Check if token type is valid URI character
@param {number} i Token's index number
@return {number} Length of raw node
Check if token type is valid URI character