| 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; |