From 9ee2cdff44e7d496774b340de816344126c457b3 Mon Sep 17 00:00:00 2001
From: Misko Hevery
Date: Tue, 22 Nov 2011 21:28:39 -0800
Subject: refactor(directives): connect new compiler
- turn everything into a directive
---
src/service/compiler.js | 6 +--
src/service/filter.js | 1 -
src/service/filter/filter.js | 6 +--
src/service/filter/filters.js | 118 +++---------------------------------------
src/service/filter/orderBy.js | 2 +-
5 files changed, 15 insertions(+), 118 deletions(-)
(limited to 'src/service')
diff --git a/src/service/compiler.js b/src/service/compiler.js
index 6185c909..c663baac 100644
--- a/src/service/compiler.js
+++ b/src/service/compiler.js
@@ -33,7 +33,7 @@
// watch the 'compile' expression for changes
return scope.$eval(attrs.compile);
},
- function(scope, value) {
+ function(value) {
// when the 'compile' expression changes
// assign it into the current DOM
element.html(value);
@@ -631,7 +631,7 @@ function $CompileProvider($provide) {
bindings = parent.data('$binding') || [];
bindings.push(interpolateFn);
parent.data('$binding', bindings).addClass('ng-binding');
- scope.$watch(interpolateFn, function(scope, value) {
+ scope.$watch(interpolateFn, function(value) {
node[0].nodeValue = value;
});
})
@@ -656,7 +656,7 @@ function $CompileProvider($provide) {
compile: function(element, attr) {
if (interpolateFn) {
return function(scope, element, attr) {
- scope.$watch(interpolateFn, function(scope, value){
+ scope.$watch(interpolateFn, function(value) {
attr.$set(name, value);
});
};
diff --git a/src/service/filter.js b/src/service/filter.js
index 2947d84b..4ed3f620 100644
--- a/src/service/filter.js
+++ b/src/service/filter.js
@@ -94,7 +94,6 @@ function $FilterProvider($provide) {
register('currency', currencyFilter);
register('date', dateFilter);
register('filter', filterFilter);
- register('html', htmlFilter);
register('json', jsonFilter);
register('limitTo', limitToFilter);
register('linky', linkyFilter);
diff --git a/src/service/filter/filter.js b/src/service/filter/filter.js
index 61cfc80f..49960546 100644
--- a/src/service/filter/filter.js
+++ b/src/service/filter/filter.js
@@ -64,17 +64,17 @@
it('should search across all fields when filtering with a string', function() {
input('searchText').enter('m');
- expect(repeater('#searchTextResults tr', 'friend in friends').column('name')).
+ expect(repeater('#searchTextResults tr', 'friend in friends').column('friend.name')).
toEqual(['Mary', 'Mike', 'Adam']);
input('searchText').enter('76');
- expect(repeater('#searchTextResults tr', 'friend in friends').column('name')).
+ expect(repeater('#searchTextResults tr', 'friend in friends').column('friend.name')).
toEqual(['John', 'Julie']);
});
it('should search in specific fields when filtering with a predicate object', function() {
input('search.$').enter('i');
- expect(repeater('#searchObjResults tr', 'friend in friends').column('name')).
+ expect(repeater('#searchObjResults tr', 'friend in friends').column('friend.name')).
toEqual(['Mary', 'Mike', 'Julie']);
});
diff --git a/src/service/filter/filters.js b/src/service/filter/filters.js
index 69bfbacf..58a3a869 100644
--- a/src/service/filter/filters.js
+++ b/src/service/filter/filters.js
@@ -385,7 +385,7 @@ function dateFilter($locale) {
it('should jsonify filtered objects', function() {
- expect(binding('| json')).toBe('{\n "name":"value"}');
+ expect(binding("{'name':'value'}")).toBe('{\n "name":"value"}');
});
@@ -420,108 +420,6 @@ var lowercaseFilter = valueFn(lowercase);
var uppercaseFilter = valueFn(uppercase);
-/**
- * @ngdoc filter
- * @name angular.module.ng.$filter.html
- * @function
- *
- * @description
- * Prevents the input from getting escaped by angular. By default the input is sanitized and
- * inserted into the DOM as is.
- *
- * The input is sanitized by parsing the html into tokens. All safe tokens (from a whitelist) are
- * then serialized back to properly escaped html string. This means that no unsafe input can make
- * it into the returned string, however, since our parser is more strict than a typical browser
- * parser, it's possible that some obscure input, which would be recognized as valid HTML by a
- * browser, won't make it through the sanitizer.
- *
- * If you hate your users, you may call the filter with optional 'unsafe' argument, which bypasses
- * the html sanitizer, but makes your application vulnerable to XSS and other attacks. Using this
- * option is strongly discouraged and should be used only if you absolutely trust the input being
- * filtered and you can't get the content through the sanitizer.
- *
- * @param {string} html Html input.
- * @param {string=} option If 'unsafe' then do not sanitize the HTML input.
- * @returns {string} Sanitized or raw html.
- *
- * @example
-
-
-
-
- Snippet:
-
-
- | Filter |
- Source |
- Rendered |
-
-
- | html filter |
-
- <div ng:bind="snippet | html"> </div>
- |
-
-
- |
-
-
- | no filter |
- <div ng:bind="snippet"> </div> |
- |
-
-
- | unsafe html filter |
- <div ng:bind="snippet | html:'unsafe'"> </div> |
- |
-
-
-
-
-
- it('should sanitize the html snippet ', function() {
- expect(using('#html-filter').binding('snippet | html')).
- toBe('an html\nclick here\nsnippet
');
- });
-
- it('should escape snippet without any filter', function() {
- expect(using('#escaped-html').binding('snippet')).
- toBe("<p style=\"color:blue\">an html\n" +
- "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" +
- "snippet</p>");
- });
-
- it('should inline raw snippet if filtered as unsafe', function() {
- expect(using('#html-unsafe-filter').binding("snippet | html:'unsafe'")).
- toBe("an html\n" +
- "click here\n" +
- "snippet
");
- });
-
- it('should update', function() {
- input('snippet').enter('new text');
- expect(using('#html-filter').binding('snippet | html')).toBe('new text');
- expect(using('#escaped-html').binding('snippet')).toBe("new <b>text</b>");
- expect(using('#html-unsafe-filter').binding("snippet | html:'unsafe'")).toBe('new text');
- });
-
-
- */
-//TODO(misko): turn sensitization into injectable service
-function htmlFilter() {
- return function(html, option){
- return new HTML(html, option);
- };
-}
-
-
/**
* @ngdoc filter
* @name angular.module.ng.$filter.linky
@@ -558,10 +456,10 @@ function htmlFilter() {
| linky filter |
- <div ng:bind="snippet | linky"> </div>
+ <div ng:bind-html="snippet | linky"> </div>
|
-
+
|
@@ -574,10 +472,10 @@ function htmlFilter() {
it('should linkify the snippet with urls', function() {
expect(using('#linky-filter').binding('snippet | linky')).
- toBe('Pretty text with some links:\n' +
- 'http://angularjs.org/,\n' +
- 'us@somewhere.org,\n' +
- 'another@somewhere.org,\n' +
+ toBe('Pretty text with some links:
' +
+ 'http://angularjs.org/,
' +
+ 'us@somewhere.org,
' +
+ 'another@somewhere.org,
' +
'and one more: ftp://127.0.0.1/.');
});
@@ -624,6 +522,6 @@ function linkyFilter() {
raw = raw.substring(i + match[0].length);
}
writer.chars(raw);
- return new HTML(html.join(''));
+ return html.join('');
};
};
diff --git a/src/service/filter/orderBy.js b/src/service/filter/orderBy.js
index c67d2769..e7528a4b 100644
--- a/src/service/filter/orderBy.js
+++ b/src/service/filter/orderBy.js
@@ -63,7 +63,7 @@
it('should be reverse ordered by aged', function() {
- expect(binding('predicate')).toBe('Sorting predicate = -age; reverse = ');
+ expect(binding('predicate')).toBe('-age');
expect(repeater('table.friend', 'friend in friends').column('friend.age')).
toEqual(['35', '29', '21', '19', '10']);
expect(repeater('table.friend', 'friend in friends').column('friend.name')).
--
cgit v1.2.3