<commit_before>/*!
 * Back2Front
 * 对特殊静态资源的请求做处理
 * (原理是生成另一个临时文件，然后修改req.url重定向到该文件)
 */

'use strict';

var fs = require('fs'), path = require('path');


module.exports = function(staticPath) {
	// 要进行特殊处理的资源
	var assertHandlers = {
		// 模板转换为模块化的JS字符串
		'.xtpl.js': {
			getLocalPath: function(staticPath, urlPath) {
				// 请求为*.xtpl.js，对应本地临时文件为*.xtpl
				return path.join(
					staticPath, urlPath.replace(/(\.xtpl)\.js/i, '$1')
				);
			},
			handle: function(fileContent, urlPath) {
				// 本地临时文件为*.xtpl.js，跟请求一致
				fs.writeFileSync(
					path.join(staticPath, urlPath),
					'define(function(require, exports, module) {\n' +
						'module.exports = ' + JSON.stringify(fileContent) + ';' +
					'\n});'
				);
				return urlPath;
			}
		},

		// 模块化JS增加define包装
		'.mod.js': {
			handle: function(fileContent, urlPath) {
				// 请求为*.mod.js，对应本地临时文件为*.mod.defined.js
				urlPath = urlPath.replace(/(\.mod)(\.js)$/, '$1.defined$2');
				fs.writeFileSync(
					path.join(staticPath, urlPath),
					'define(function(require, exports, module) { "use strict";\n' +
						fileContent +
					'\n});'
				);
				return urlPath;
			}
		}
	};

	return function(req, res, next) {
		var urlPath = req.originalUrl.replace(/\?.*$/, ''), extname;
		// 这里取扩展名不能用path.extname，因为有些路径有两段扩展名(*.xtpl.js)，要全部匹配出来<commit_msg>模板模块带上id<commit_after>/*!
 * Back2Front
 * 对特殊静态资源的请求做处理
 * (原理是生成另一个临时文件，然后修改req.url重定向到该文件)
 */

'use strict';

var fs = require('fs'), path = require('path');


module.exports = function(staticPath) {
	// 要进行特殊处理的资源
	var assertHandlers = {
		// 模板转换为模块化的JS字符串
		'.xtpl.js': {
			getLocalPath: function(staticPath, urlPath) {
				// 请求为*.xtpl.js，对应本地临时文件为*.xtpl
				return path.join(
					staticPath, urlPath.replace(/(\.xtpl)\.js/i, '$1')
				);
			},
			handle: function(fileContent, urlPath) {
				var modId = urlPath.split('/').slice(2).join('/') ;

				// 本地临时文件为*.xtpl.js，跟请求一致
				fs.writeFileSync(
					path.join(staticPath, urlPath),
					'define(' +
						JSON.stringify(modId) +
						', null, function(require, exports, module) {\n' +
							'module.exports = ' + JSON.stringify(fileContent) + ';' +
					'\n});'
				);
				return urlPath;
			}
		},

		// 模块化JS增加define包装
		'.mod.js': {
			handle: function(fileContent, urlPath) {
				// 请求为*.mod.js，对应本地临时文件为*.mod.defined.js
				urlPath = urlPath.replace(/(\.mod)(\.js)$/, '$1.defined$2');
				fs.writeFileSync(
					path.join(staticPath, urlPath),
					'define(function(require, exports, module) { "use strict";\n' +
						fileContent +
					'\n});'
				);
				return urlPath;
			}
		}
	};

	return function(req, res, next) {
		var urlPath = req.originalUrl.replace(/\?.*$/, ''), extname;
		// 这里取扩展名不能用path.extname，因为有些路径有两段扩展名(*.xtpl.js)，要全部匹配出来
{'fraction_non_alphanumeric': 0.19016152716593246, 'fraction_numerical': 0.003303964757709251, 'mean_word_length': 2.949275362318841, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2810017', 'n_tokens_mistral': 1394, 'n_tokens_neox': 1257, 'n_words': 151}