From a3e5459c24863684ed298b76338e1fecf3feb7c1 Mon Sep 17 00:00:00 2001 From: Marten Schilstra Date: Fri, 17 Jul 2015 17:57:28 +0200 Subject: [PATCH] [CLEANUP beta] Only register View AST Transforms when legacy enabled --- .../tests/compat/controller_keyword_test.js | 10 ++++++++++ .../tests/compat/view_helper_test.js | 6 ++++++ .../tests/compat/view_keyword_test.js | 5 +++++ .../ember-htmlbars/tests/helpers/each_test.js | 7 +++++++ packages/ember-htmlbars/tests/utils.js | 15 +++++++++++++++ packages/ember-template-compiler/lib/main.js | 14 +++++++++----- .../transform-each-into-collection-test.js | 12 +++++++++++- packages/ember/tests/controller_test.js | 10 ++++++++++ 8 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 packages/ember-htmlbars/tests/utils.js diff --git a/packages/ember-htmlbars/tests/compat/controller_keyword_test.js b/packages/ember-htmlbars/tests/compat/controller_keyword_test.js index 228629aedad..ebac7a945e3 100644 --- a/packages/ember-htmlbars/tests/compat/controller_keyword_test.js +++ b/packages/ember-htmlbars/tests/compat/controller_keyword_test.js @@ -2,14 +2,24 @@ import EmberComponent from 'ember-views/views/component'; import { runAppend, runDestroy } from 'ember-runtime/tests/utils'; import compile from 'ember-template-compiler/system/compile'; +import { registerAstPlugin, removeAstPlugin } from 'ember-htmlbars/tests/utils'; +import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; +import DeprecateViewAndControllerPaths from 'ember-template-compiler/plugins/deprecate-view-and-controller-paths'; + let component; QUnit.module('ember-htmlbars: compat - controller keyword (use as a path)', { setup() { + registerAstPlugin(TransformEachIntoCollection); + registerAstPlugin(DeprecateViewAndControllerPaths); + component = null; }, teardown() { runDestroy(component); + + removeAstPlugin(TransformEachIntoCollection); + removeAstPlugin(DeprecateViewAndControllerPaths); } }); diff --git a/packages/ember-htmlbars/tests/compat/view_helper_test.js b/packages/ember-htmlbars/tests/compat/view_helper_test.js index 0b60d2c2e53..18b969f6c75 100644 --- a/packages/ember-htmlbars/tests/compat/view_helper_test.js +++ b/packages/ember-htmlbars/tests/compat/view_helper_test.js @@ -5,16 +5,22 @@ import { runAppend, runDestroy } from 'ember-runtime/tests/utils'; import compile from 'ember-template-compiler/system/compile'; import Registry from 'container/registry'; +import { registerAstPlugin, removeAstPlugin } from 'ember-htmlbars/tests/utils'; +import DeprecateViewHelper from 'ember-template-compiler/plugins/deprecate-view-helper'; + let component, registry, container; QUnit.module('ember-htmlbars: compat - view helper', { setup() { + registerAstPlugin(DeprecateViewHelper); + registry = new Registry(); container = registry.container(); }, teardown() { runDestroy(component); runDestroy(container); + removeAstPlugin(DeprecateViewHelper); registry = container = component = null; } }); diff --git a/packages/ember-htmlbars/tests/compat/view_keyword_test.js b/packages/ember-htmlbars/tests/compat/view_keyword_test.js index 447ba08708d..8e745706043 100644 --- a/packages/ember-htmlbars/tests/compat/view_keyword_test.js +++ b/packages/ember-htmlbars/tests/compat/view_keyword_test.js @@ -2,14 +2,19 @@ import EmberComponent from 'ember-views/views/component'; import { runAppend, runDestroy } from 'ember-runtime/tests/utils'; import compile from 'ember-template-compiler/system/compile'; +import { registerAstPlugin, removeAstPlugin } from 'ember-htmlbars/tests/utils'; +import DeprecateViewAndControllerPaths from 'ember-template-compiler/plugins/deprecate-view-and-controller-paths'; + let component; QUnit.module('ember-htmlbars: compat - view keyword (use as a path)', { setup() { + registerAstPlugin(DeprecateViewAndControllerPaths); component = null; }, teardown() { runDestroy(component); + removeAstPlugin(DeprecateViewAndControllerPaths); } }); diff --git a/packages/ember-htmlbars/tests/helpers/each_test.js b/packages/ember-htmlbars/tests/helpers/each_test.js index 40f5711860c..e4a0c57e568 100644 --- a/packages/ember-htmlbars/tests/helpers/each_test.js +++ b/packages/ember-htmlbars/tests/helpers/each_test.js @@ -14,6 +14,9 @@ import { runAppend, runDestroy } from 'ember-runtime/tests/utils'; import compile from 'ember-template-compiler/system/compile'; import { deprecation as eachDeprecation } from 'ember-htmlbars/helpers/each'; +import { registerAstPlugin, removeAstPlugin } from 'ember-htmlbars/tests/utils'; +import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; + var people, view, registry, container; var template, templateMyView, MyView, MyEmptyView, templateMyEmptyView; @@ -85,6 +88,8 @@ QUnit.module('the #each helper [DEPRECATED]', { setup() { Ember.lookup = lookup = { Ember: Ember }; + registerAstPlugin(TransformEachIntoCollection); + template = compile('{{#each view.people}}{{name}}{{/each}}'); people = A([{ name: 'Steve Holt' }, { name: 'Annabelle' }]); @@ -123,6 +128,8 @@ QUnit.module('the #each helper [DEPRECATED]', { registry = container = view = null; Ember.lookup = originalLookup; + + removeAstPlugin(TransformEachIntoCollection); } }); diff --git a/packages/ember-htmlbars/tests/utils.js b/packages/ember-htmlbars/tests/utils.js new file mode 100644 index 00000000000..2d55ffed81e --- /dev/null +++ b/packages/ember-htmlbars/tests/utils.js @@ -0,0 +1,15 @@ +import plugins, { registerPlugin } from 'ember-template-compiler/plugins'; + +function registerAstPlugin(plugin) { + registerPlugin('ast', plugin); +} + +function removeAstPlugin(plugin) { + const index = plugins['ast'].indexOf(plugin); + plugins['ast'].splice(index, 1); +} + +export { + registerAstPlugin, + removeAstPlugin +}; diff --git a/packages/ember-template-compiler/lib/main.js b/packages/ember-template-compiler/lib/main.js index 6aa4430504b..b9ea7d55ff9 100644 --- a/packages/ember-template-compiler/lib/main.js +++ b/packages/ember-template-compiler/lib/main.js @@ -4,7 +4,6 @@ import compile from 'ember-template-compiler/system/compile'; import template from 'ember-template-compiler/system/template'; import { registerPlugin } from 'ember-template-compiler/plugins'; -import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; import TransformOldBindingSyntax from 'ember-template-compiler/plugins/transform-old-binding-syntax'; import TransformOldClassBindingSyntax from 'ember-template-compiler/plugins/transform-old-class-binding-syntax'; import TransformItemClass from 'ember-template-compiler/plugins/transform-item-class'; @@ -12,14 +11,14 @@ import TransformComponentAttrsIntoMut from 'ember-template-compiler/plugins/tran import TransformComponentCurlyToReadonly from 'ember-template-compiler/plugins/transform-component-curly-to-readonly'; import TransformAngleBracketComponents from 'ember-template-compiler/plugins/transform-angle-bracket-components'; import TransformInputOnToOnEvent from 'ember-template-compiler/plugins/transform-input-on-to-onEvent'; -import DeprecateViewAndControllerPaths from 'ember-template-compiler/plugins/deprecate-view-and-controller-paths'; import TransformTopLevelComponents from 'ember-template-compiler/plugins/transform-top-level-components'; +import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; +import DeprecateViewAndControllerPaths from 'ember-template-compiler/plugins/deprecate-view-and-controller-paths'; import DeprecateViewHelper from 'ember-template-compiler/plugins/deprecate-view-helper'; // used for adding Ember.Handlebars.compile for backwards compat import 'ember-template-compiler/compat'; -registerPlugin('ast', TransformEachIntoCollection); registerPlugin('ast', TransformOldBindingSyntax); registerPlugin('ast', TransformOldClassBindingSyntax); registerPlugin('ast', TransformItemClass); @@ -28,8 +27,13 @@ registerPlugin('ast', TransformComponentCurlyToReadonly); registerPlugin('ast', TransformAngleBracketComponents); registerPlugin('ast', TransformInputOnToOnEvent); registerPlugin('ast', TransformTopLevelComponents); -registerPlugin('ast', DeprecateViewAndControllerPaths); -registerPlugin('ast', DeprecateViewHelper); + +if (_Ember.ENV._ENABLE_LEGACY_VIEW_SUPPORT) { + registerPlugin('ast', TransformEachIntoCollection); + registerPlugin('ast', DeprecateViewAndControllerPaths); + registerPlugin('ast', DeprecateViewHelper); +} + export { _Ember, diff --git a/packages/ember-template-compiler/tests/plugins/transform-each-into-collection-test.js b/packages/ember-template-compiler/tests/plugins/transform-each-into-collection-test.js index 69934f41908..e14ba782700 100644 --- a/packages/ember-template-compiler/tests/plugins/transform-each-into-collection-test.js +++ b/packages/ember-template-compiler/tests/plugins/transform-each-into-collection-test.js @@ -1,6 +1,16 @@ import { compile } from 'ember-template-compiler'; -QUnit.module('ember-template-compiler: transform-each-into-collection'); +import { registerAstPlugin, removeAstPlugin } from 'ember-htmlbars/tests/utils'; +import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; + +QUnit.module('ember-template-compiler: transform-each-into-collection', { + setup() { + registerAstPlugin(TransformEachIntoCollection); + }, + teardown() { + removeAstPlugin(TransformEachIntoCollection); + } +}); let deprecatedAttrs = ['itemController', 'itemView', 'itemViewClass', 'tagName', 'emptyView', 'emptyViewClass']; diff --git a/packages/ember/tests/controller_test.js b/packages/ember/tests/controller_test.js index e0580b17085..a7951bd53c0 100644 --- a/packages/ember/tests/controller_test.js +++ b/packages/ember/tests/controller_test.js @@ -3,6 +3,9 @@ import Ember from 'ember-metal/core'; import EmberHandlebars from 'ember-htmlbars/compat'; import EmberView from 'ember-views/views/view'; +import plugins, { registerPlugin } from 'ember-template-compiler/plugins'; +import TransformEachIntoCollection from 'ember-template-compiler/plugins/transform-each-into-collection'; + /* In Ember 1.x, controllers subtly affect things like template scope and action targets in exciting and often inscrutable ways. This test @@ -14,8 +17,13 @@ import EmberView from 'ember-views/views/view'; var compile = EmberHandlebars.compile; var App, $fixture, templates; +let originalAstPlugins; + QUnit.module('Template scoping examples', { setup() { + originalAstPlugins = plugins['ast'].slice(0); + registerPlugin('ast', TransformEachIntoCollection); + Ember.run(function() { templates = Ember.TEMPLATES; App = Ember.Application.create({ @@ -42,6 +50,8 @@ QUnit.module('Template scoping examples', { App = null; Ember.TEMPLATES = {}; + + plugins['ast'] = originalAstPlugins; } });