Projekt

Obecné

Profil

Stáhnout (2.78 KB) Statistiky
| Větev: | Revize:
1
/*
2
	MIT License http://www.opensource.org/licenses/mit-license.php
3
	Author Tobias Koppers @sokra
4
*/
5
"use strict";
6
const path = require("path");
7

    
8
const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
9
const ConstDependency = require("./dependencies/ConstDependency");
10
const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
11

    
12
const ParserHelpers = exports;
13

    
14
ParserHelpers.addParsedVariableToModule = (parser, name, expression) => {
15
	if (!parser.state.current.addVariable) return false;
16
	var deps = [];
17
	parser.parse(expression, {
18
		current: {
19
			addDependency: dep => {
20
				dep.userRequest = name;
21
				deps.push(dep);
22
			}
23
		},
24
		module: parser.state.module
25
	});
26
	parser.state.current.addVariable(name, expression, deps);
27
	return true;
28
};
29

    
30
ParserHelpers.requireFileAsExpression = (context, pathToModule) => {
31
	var moduleJsPath = path.relative(context, pathToModule);
32
	if (!/^[A-Z]:/i.test(moduleJsPath)) {
33
		moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
34
	}
35
	return "require(" + JSON.stringify(moduleJsPath) + ")";
36
};
37

    
38
ParserHelpers.toConstantDependency = (parser, value) => {
39
	return function constDependency(expr) {
40
		var dep = new ConstDependency(value, expr.range, false);
41
		dep.loc = expr.loc;
42
		parser.state.current.addDependency(dep);
43
		return true;
44
	};
45
};
46

    
47
ParserHelpers.toConstantDependencyWithWebpackRequire = (parser, value) => {
48
	return function constDependencyWithWebpackRequire(expr) {
49
		var dep = new ConstDependency(value, expr.range, true);
50
		dep.loc = expr.loc;
51
		parser.state.current.addDependency(dep);
52
		return true;
53
	};
54
};
55

    
56
ParserHelpers.evaluateToString = value => {
57
	return function stringExpression(expr) {
58
		return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
59
	};
60
};
61

    
62
ParserHelpers.evaluateToBoolean = value => {
63
	return function booleanExpression(expr) {
64
		return new BasicEvaluatedExpression()
65
			.setBoolean(value)
66
			.setRange(expr.range);
67
	};
68
};
69

    
70
ParserHelpers.evaluateToIdentifier = (identifier, truthy) => {
71
	return function identifierExpression(expr) {
72
		let evex = new BasicEvaluatedExpression()
73
			.setIdentifier(identifier)
74
			.setRange(expr.range);
75
		if (truthy === true) {
76
			evex = evex.setTruthy();
77
		} else if (truthy === false) {
78
			evex = evex.setFalsy();
79
		}
80
		return evex;
81
	};
82
};
83

    
84
ParserHelpers.expressionIsUnsupported = (parser, message) => {
85
	return function unsupportedExpression(expr) {
86
		var dep = new ConstDependency("(void 0)", expr.range, false);
87
		dep.loc = expr.loc;
88
		parser.state.current.addDependency(dep);
89
		if (!parser.state.module) return;
90
		parser.state.module.warnings.push(
91
			new UnsupportedFeatureWarning(parser.state.module, message, expr.loc)
92
		);
93
		return true;
94
	};
95
};
96

    
97
ParserHelpers.skipTraversal = function skipTraversal() {
98
	return true;
99
};
100

    
101
ParserHelpers.approve = function approve() {
102
	return true;
103
};
(107-107/144)