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.
		
		
		
		
		
			
		
			
				
					
					
						
							64 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							64 lines
						
					
					
						
							1.4 KiB
						
					
					
				var tokenizer = require('scss-tokenizer'); | 
						|
 | 
						|
function parseImports(content, isIndentedSyntax) { | 
						|
  var tokens = tokenizer.tokenize(content); | 
						|
  var results = []; | 
						|
  var tmp = ''; | 
						|
  var inImport = false; | 
						|
  var inParen = false; | 
						|
  var prevToken = tokens[0]; | 
						|
 | 
						|
  var i, token; | 
						|
  for (i = 1; i < tokens.length; i++) { | 
						|
    token = tokens[i]; | 
						|
 | 
						|
    if (inImport && !inParen && token[0] === 'string') { | 
						|
      results.push(token[1]); | 
						|
    } | 
						|
    else if (token[1] === 'import' && prevToken[1] === '@') { | 
						|
      if (inImport && !isIndentedSyntax) { | 
						|
        throw new Error('Encountered invalid @import syntax.'); | 
						|
      } | 
						|
 | 
						|
      inImport = true; | 
						|
    } | 
						|
    else if (inImport && !inParen && (token[0] === 'ident' || token[0] === '/')) { | 
						|
      tmp += token[1]; | 
						|
    } | 
						|
    else if (inImport && !inParen && (token[0] === 'space' || token[0] === 'newline')) { | 
						|
      if (tmp !== '') { | 
						|
        results.push(tmp); | 
						|
        tmp = ''; | 
						|
 | 
						|
        if (isIndentedSyntax) { | 
						|
          inImport = false; | 
						|
        } | 
						|
      } | 
						|
    } | 
						|
    else if (inImport && token[0] === ';') { | 
						|
      inImport = false; | 
						|
 | 
						|
      if (tmp !== '') { | 
						|
        results.push(tmp); | 
						|
        tmp = ''; | 
						|
      } | 
						|
    } | 
						|
    else if (inImport && token[0] === '(') { | 
						|
      inParen = true; | 
						|
      tmp = ''; | 
						|
    } | 
						|
    else if (inParen && token[0] === ')') { | 
						|
      inParen = false; | 
						|
    } | 
						|
 | 
						|
    prevToken = token; | 
						|
  } | 
						|
 | 
						|
  if (tmp !== '') { | 
						|
    results.push(tmp); | 
						|
  } | 
						|
 | 
						|
  return results; | 
						|
} | 
						|
 | 
						|
module.exports = parseImports;
 | 
						|
 |