12345678910111213141516171819202122232425262728293031 |
- const path = require('path');
- const fs = require('fs');
- //пример в коде:
- // @@include('./test/testFile.inc');
- function includeRecursive(self, parentFile, source, depth) {
- depth = (depth ? depth : 0);
- if (depth > 50)
- throw new Error('includer: stack too big');
- const lines = source.split('\n');
- let result = [];
- for (const line of lines) {
- const trimmed = line.trim();
- const m = trimmed.match(/^@@[\s]*?include[\s]*?\(['"](.*)['"]\)/);
- if (m) {
- const includedFile = path.resolve(path.dirname(parentFile), m[1]);
- self.addDependency(includedFile);
- const fileContent = fs.readFileSync(includedFile, 'utf8');
- result = result.concat(includeRecursive(self, includedFile, fileContent, depth + 1));
- } else {
- result.push(line);
- }
- }
- return result;
- }
- exports.default = function includer(source) {
- return includeRecursive(this, this.resourcePath, source).join('\n');
- }
|