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.
		
		
		
		
			
				
					65 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.4 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								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;
							 |