Skip to content

Commit c6bca15

Browse files
committed
Removed legacy preprocessor include
1 parent a8be7ec commit c6bca15

14 files changed

+1
-242
lines changed

lib/ejs.js

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -736,35 +736,6 @@ Template.prototype = {
736736
throw new Error('Could not find matching close tag for "' + line + '".');
737737
}
738738
}
739-
// HACK: backward-compat `include` preprocessor directives
740-
if (opts.legacyInclude && (include = line.match(/^\s*include\s+(\S+)/))) {
741-
opening = matches[index - 1];
742-
// Must be in EVAL or RAW mode
743-
if (opening && (opening == o + d || opening == o + d + '-' || opening == o + d + '_')) {
744-
includeOpts = utils.shallowCopy({}, self.opts);
745-
includeObj = includeSource(include[1], includeOpts);
746-
if (self.opts.compileDebug) {
747-
includeSrc =
748-
' ; (function(){' + '\n'
749-
+ ' var __line = 1' + '\n'
750-
+ ' , __lines = ' + JSON.stringify(includeObj.template) + '\n'
751-
+ ' , __filename = ' + JSON.stringify(includeObj.filename) + ';' + '\n'
752-
+ ' try {' + '\n'
753-
+ includeObj.source
754-
+ ' } catch (e) {' + '\n'
755-
+ ' rethrow(e, __lines, __filename, __line, escapeFn);' + '\n'
756-
+ ' }' + '\n'
757-
+ ' ; }).call(this)' + '\n';
758-
}else{
759-
includeSrc = ' ; (function(){' + '\n' + includeObj.source +
760-
' ; }).call(this)' + '\n';
761-
}
762-
self.source += includeSrc;
763-
self.dependencies.push(exports.resolveInclude(include[1],
764-
includeOpts.filename));
765-
return;
766-
}
767-
}
768739
self.scanLine(line);
769740
});
770741
}

test/ejs.js

Lines changed: 0 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -563,42 +563,6 @@ suite('ejs.renderFile(path, [data], [options], [fn])', function () {
563563

564564
});
565565

566-
test('support express multiple views folders, falls back to second if first is not available (include preprocessor)', function (done) {
567-
var data = {
568-
viewsText: 'test',
569-
settings: {
570-
views: [
571-
path.join(__dirname, 'fixtures/nonexistent-folder'),
572-
path.join(__dirname, 'fixtures')
573-
]
574-
}
575-
};
576-
ejs.renderFile(path.join(__dirname, 'fixtures/views-old.ejs'), data, function(error, data){
577-
assert.ifError(error);
578-
assert.equal('<div><p>global test</p>\n</div>\n', data);
579-
done();
580-
});
581-
582-
});
583-
584-
test('looks relative to the containing file first (include preprocessor)', function (done) {
585-
var data = {
586-
viewsText: 'test',
587-
settings: {
588-
views: [
589-
path.join(__dirname, 'fixtures/views'),
590-
path.join(__dirname, 'fixtures')
591-
]
592-
}
593-
};
594-
ejs.renderFile(path.join(__dirname, 'fixtures/views-old.ejs'), data, function(error, data){
595-
assert.ifError(error);
596-
assert.equal('<div><p>global test</p>\n</div>\n', data);
597-
done();
598-
});
599-
600-
});
601-
602566
test('can reference by paths with directory names', function (done) {
603567
var data = {
604568
viewsText: 'test',
@@ -1113,128 +1077,6 @@ suite('include()', function () {
11131077

11141078
});
11151079

1116-
suite('preprocessor include', function () {
1117-
test('work', function () {
1118-
var file = 'test/fixtures/include_preprocessor.ejs';
1119-
assert.equal(ejs.render(fixture('include_preprocessor.ejs'), {pets: users}, {filename: file, delimiter: '@'}),
1120-
fixture('include_preprocessor.html'));
1121-
});
1122-
1123-
test('no false positives', function () {
1124-
assert.equal(ejs.render('<% %> include foo <% %>'), ' include foo ');
1125-
});
1126-
1127-
test('fails without `filename`', function () {
1128-
try {
1129-
ejs.render(fixture('include_preprocessor.ejs'), {pets: users}, {delimiter: '@'});
1130-
}
1131-
catch (err) {
1132-
assert.ok(err.message.indexOf('Could not find') > -1);
1133-
return;
1134-
}
1135-
throw new Error('expected inclusion error');
1136-
});
1137-
1138-
test('strips BOM', function () {
1139-
assert.equal(
1140-
ejs.render('<% include fixtures/includes/bom.ejs %>',
1141-
{}, {filename: path.join(__dirname, 'f.ejs')}),
1142-
'<p>This is a file with BOM.</p>\n');
1143-
});
1144-
1145-
test('work when nested', function () {
1146-
var file = 'test/fixtures/menu_preprocessor.ejs';
1147-
assert.equal(ejs.render(fixture('menu_preprocessor.ejs'), {pets: users}, {filename: file}),
1148-
fixture('menu_preprocessor.html'));
1149-
});
1150-
1151-
test('tracks dependency correctly', function () {
1152-
var file = 'test/fixtures/menu_preprocessor.ejs';
1153-
var fn = ejs.compile(fixture('menu_preprocessor.ejs'), {filename: file});
1154-
assert(fn.dependencies.length);
1155-
});
1156-
1157-
test('include arbitrary files as-is', function () {
1158-
var file = 'test/fixtures/include_preprocessor.css.ejs';
1159-
assert.equal(ejs.render(fixture('include_preprocessor.css.ejs'), {pets: users}, {filename: file}),
1160-
fixture('include_preprocessor.css.html'));
1161-
});
1162-
1163-
test('pass compileDebug to include', function () {
1164-
var file = 'test/fixtures/include_preprocessor.ejs';
1165-
var fn;
1166-
fn = ejs.compile(fixture('include_preprocessor.ejs'), {
1167-
filename: file,
1168-
delimiter: '@',
1169-
compileDebug: false
1170-
});
1171-
try {
1172-
// Render without a required variable reference
1173-
fn({foo: 'asdf'});
1174-
}
1175-
catch(e) {
1176-
assert.equal(e.message, 'pets is not defined');
1177-
assert.ok(!e.path);
1178-
return;
1179-
}
1180-
throw new Error('no error reported when there should be');
1181-
});
1182-
1183-
test('is static', function () {
1184-
fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>Old</p>');
1185-
var file = 'test/fixtures/include_preprocessor_cache.ejs';
1186-
var options = {filename: file};
1187-
var out = ejs.compile(fixture('include_preprocessor_cache.ejs'), options);
1188-
assert.equal(out(), '<p>Old</p>\n');
1189-
1190-
fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>New</p>');
1191-
assert.equal(out(), '<p>Old</p>\n');
1192-
});
1193-
1194-
test('support caching', function () {
1195-
fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>Old</p>');
1196-
var file = 'test/fixtures/include_preprocessor_cache.ejs';
1197-
var options = {cache: true, filename: file};
1198-
var out = ejs.render(fixture('include_preprocessor_cache.ejs'), {}, options);
1199-
var expected = fixture('include_preprocessor_cache.html');
1200-
assert.equal(out, expected);
1201-
fs.writeFileSync(__dirname + '/tmp/include_preprocessor.ejs', '<p>New</p>');
1202-
out = ejs.render(fixture('include_preprocessor_cache.ejs'), {}, options);
1203-
assert.equal(out, expected);
1204-
});
1205-
1206-
test('whitespace slurp and rmWhitespace work', function() {
1207-
var file = 'test/fixtures/include_preprocessor_line_slurp.ejs';
1208-
var template = fixture('include_preprocessor_line_slurp.ejs');
1209-
var expected = fixture('include_preprocessor_line_slurp.html');
1210-
var options = {rmWhitespace: true, filename: file};
1211-
assert.equal(ejs.render(template, {}, options),
1212-
expected);
1213-
});
1214-
1215-
test('handles errors in included file', function() {
1216-
try {
1217-
ejs.render('<%- include fixtures/include-with-error %>', {}, {filename: path.join(__dirname, 'f.ejs')});
1218-
}
1219-
catch (err) {
1220-
assert.ok(err.message.indexOf('foobar is not defined') > -1);
1221-
return;
1222-
}
1223-
throw new Error('expected inclusion error');
1224-
});
1225-
1226-
test('legacy includes are a syntax error when disabled', function() {
1227-
try {
1228-
ejs.render('<%- include is-syntax-error %>', null, {legacyInclude: false});
1229-
}
1230-
catch (err) {
1231-
assert.ok(err.message.indexOf('missing ) after argument list') > -1);
1232-
return;
1233-
}
1234-
throw new Error('expected SyntaxError from legacy include being disabled');
1235-
});
1236-
});
1237-
12381080
suite('comments', function () {
12391081
test('fully render with comments removed', function () {
12401082
assert.equal(ejs.render(fixture('comments.ejs')),

test/fixtures/include_preprocessor.css.ejs

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/fixtures/include_preprocessor.css.html

Lines changed: 0 additions & 4 deletions
This file was deleted.

test/fixtures/include_preprocessor.ejs

Lines changed: 0 additions & 5 deletions
This file was deleted.

test/fixtures/include_preprocessor.html

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/fixtures/include_preprocessor_cache.ejs

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/fixtures/include_preprocessor_cache.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/fixtures/include_preprocessor_line_slurp.ejs

Lines changed: 0 additions & 1 deletion
This file was deleted.

test/fixtures/include_preprocessor_line_slurp.html

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)