aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMisko Hevery2011-01-19 15:42:11 -0800
committerMisko Hevery2011-01-24 14:23:51 -0800
commitc2f2587a79aeb77aad66f081cf924a79348a698e (patch)
tree8f5aa4cc6e7189befb834388b2102d1eda88a975 /src
parent5d0d34ae72a9ca47f1b2dabda60711ad16ee9313 (diff)
downloadangular.js-c2f2587a79aeb77aad66f081cf924a79348a698e.tar.bz2
fixed example rendering, add tests for it.
Diffstat (limited to 'src')
-rw-r--r--src/AngularPublic.js2
-rw-r--r--src/Browser.js48
-rw-r--r--src/Compiler.js14
-rw-r--r--src/Injector.js2
-rw-r--r--src/markups.js18
-rw-r--r--src/parser.js42
-rw-r--r--src/sanitizer.js2
-rw-r--r--src/scenario/output/Json.js2
-rw-r--r--src/services.js170
-rw-r--r--src/validators.js124
10 files changed, 212 insertions, 212 deletions
diff --git a/src/AngularPublic.js b/src/AngularPublic.js
index ec41d0d9..4654acb1 100644
--- a/src/AngularPublic.js
+++ b/src/AngularPublic.js
@@ -4,7 +4,7 @@ var browserSingleton;
* @ngdoc service
* @name angular.service.$browser
* @requires $log
- *
+ *
* @description
* Represents the browser.
*/
diff --git a/src/Browser.js b/src/Browser.js
index 671ec1cc..c67608cd 100644
--- a/src/Browser.js
+++ b/src/Browser.js
@@ -67,12 +67,12 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#xhr
* @methodOf angular.service.$browser
- *
+ *
* @param {string} method Requested method (get|post|put|delete|head|json)
* @param {string} url Requested url
- * @param {string=} post Post data to send
+ * @param {string=} post Post data to send
* @param {function(number, string)} callback Function that will be called on response
- *
+ *
* @description
* Send ajax request
*/
@@ -113,7 +113,7 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#notifyWhenNoOutstandingRequests
* @methodOf angular.service.$browser
- *
+ *
* @param {function()} callback Function that will be called when no outstanding request
*/
self.notifyWhenNoOutstandingRequests = function(callback) {
@@ -144,12 +144,12 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#addPollFn
* @methodOf angular.service.$browser
- *
+ *
* @param {function()} fn Poll function to add
- *
+ *
* @description
* Adds a function to the list of functions that poller periodically executes
- *
+ *
* @returns {function()} the added function
*/
self.addPollFn = function(fn) {
@@ -162,10 +162,10 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#startPoller
* @methodOf angular.service.$browser
- *
+ *
* @param {number} interval How often should browser call poll functions (ms)
* @param {function()} setTimeout Reference to a real or fake `setTimeout` function.
- *
+ *
* @description
* Configures the poller to run in the specified intervals, using the specified
* setTimeout fn and kicks it off.
@@ -180,15 +180,15 @@ function Browser(window, document, body, XHR, $log) {
//////////////////////////////////////////////////////////////
// URL API
//////////////////////////////////////////////////////////////
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$browser#setUrl
* @methodOf angular.service.$browser
- *
+ *
* @param {string} url New url
- *
+ *
* @description
* Sets browser's url
*/
@@ -204,10 +204,10 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#getUrl
* @methodOf angular.service.$browser
- *
+ *
* @description
* Get current browser's url
- *
+ *
* @returns {string} Browser's url
*/
self.getUrl = function() {
@@ -261,10 +261,10 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#cookies
* @methodOf angular.service.$browser
- *
+ *
* @param {string=} name Cookie name
* @param {string=} value Cokkie value
- *
+ *
* @description
* The cookies method provides a 'private' low level access to browser cookies.
* It is not meant to be used directly, use the $cookie service instead.
@@ -275,7 +275,7 @@ function Browser(window, document, body, XHR, $log) {
* <li>cookies(name, value) -> set name to value, if value is undefined delete the cookie</li>
* <li>cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that way)</li>
* </ul>
- *
+ *
* @returns {Object} Hash of all cookies (if called without any parameter)
*/
self.cookies = function (name, value) {
@@ -342,7 +342,7 @@ function Browser(window, document, body, XHR, $log) {
// Misc API
//////////////////////////////////////////////////////////////
var hoverListener = noop;
-
+
/**
* @workInProgress
* @ngdoc method
@@ -356,13 +356,13 @@ function Browser(window, document, body, XHR, $log) {
* occurs.
*/
self.hover = function(listener) { hoverListener = listener; };
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$browser#bind
* @methodOf angular.service.$browser
- *
+ *
* @description
* Register hover function to real browser
*/
@@ -383,7 +383,7 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#addCss
* @methodOf angular.service.$browser
- *
+ *
* @param {string} url Url to css file
* @description
* Adds a stylesheet tag to the head.
@@ -402,10 +402,10 @@ function Browser(window, document, body, XHR, $log) {
* @ngdoc method
* @name angular.service.$browser#addJs
* @methodOf angular.service.$browser
- *
+ *
* @param {string} url Url to js file
- * @param {string=} dom_id Optional id for the script tag
- *
+ * @param {string=} dom_id Optional id for the script tag
+ *
* @description
* Adds a script tag to the head.
*/
diff --git a/src/Compiler.js b/src/Compiler.js
index 58a7a47b..c2c56650 100644
--- a/src/Compiler.js
+++ b/src/Compiler.js
@@ -123,19 +123,19 @@ Compiler.prototype = {
};
},
-
+
/**
* @workInProgress
* @ngdoc directive
* @name angular.directive.ng:eval-order
*
* @description
- * Normally the view is updated from top to bottom. This usually is
- * not a problem, but under some circumstances the values for data
- * is not available until after the full view is computed. If such
- * values are needed before they are computed the order of
+ * Normally the view is updated from top to bottom. This usually is
+ * not a problem, but under some circumstances the values for data
+ * is not available until after the full view is computed. If such
+ * values are needed before they are computed the order of
* evaluation can be change using ng:eval-order
- *
+ *
* @element ANY
* @param {integer|string=} [priority=0] priority integer, or FIRST, LAST constant
*
@@ -164,7 +164,7 @@ Compiler.prototype = {
<td>{{ items.$sum('total') | currency }}</td>
</tr>
</table>
- *
+ *
* @scenario
it('should check ng:format', function(){
expect(using('.doc-example-live div:first').binding("items.$sum('total')")).toBe('$9.99');
diff --git a/src/Injector.js b/src/Injector.js
index cd9438e7..c7ee6f82 100644
--- a/src/Injector.js
+++ b/src/Injector.js
@@ -31,7 +31,7 @@ function createInjector(providerScope, providers, cache) {
* array of keys: returns an array of instances.
* function: look at $inject property of function to determine instances
* and then call the function with instances and `scope`. Any
- * additional arguments (`args`) are appended to the function
+ * additional arguments (`args`) are appended to the function
* arguments.
* object: initialize eager providers and publish them the ones with publish here.
* none: same as object but use providerScope as place to publish.
diff --git a/src/markups.js b/src/markups.js
index 16ca9ba8..21dab128 100644
--- a/src/markups.js
+++ b/src/markups.js
@@ -74,18 +74,18 @@ angularTextMarkup('OPTION', function(text, textNode, parentElement){
* @name angular.directive.ng:href
*
* @description
- * Using <angular/> markup like {{hash}} in an href attribute makes
- * the page open to a wrong URL, ff the user clicks that link before
- * angular has a chance to replace the {{hash}} with actual URL, the
- * link will be broken and will most likely return a 404 error.
- * The `ng:href` solves this problem by placing the `href` in the
+ * Using <angular/> markup like {{hash}} in an href attribute makes
+ * the page open to a wrong URL, ff the user clicks that link before
+ * angular has a chance to replace the {{hash}} with actual URL, the
+ * link will be broken and will most likely return a 404 error.
+ * The `ng:href` solves this problem by placing the `href` in the
* `ng:` namespace.
*
* The buggy way to write it:
* <pre>
* <a href="http://www.gravatar.com/avatar/{{hash}}"/>
* </pre>
- *
+ *
* The correct way to write it:
* <pre>
* <a ng:href="http://www.gravatar.com/avatar/{{hash}}"/>
@@ -101,8 +101,8 @@ angularTextMarkup('OPTION', function(text, textNode, parentElement){
* @name angular.directive.ng:src
*
* @description
- * Using <angular/> markup like `{{hash}}` in a `src` attribute doesn't
- * work right: The browser will fetch from the URL with the literal
+ * Using <angular/> markup like `{{hash}}` in a `src` attribute doesn't
+ * work right: The browser will fetch from the URL with the literal
* text `{{hash}}` until <angular/> replaces the expression inside
* `{{hash}}`. The `ng:src` attribute solves this problem by placing
* the `src` attribute in the `ng:` namespace.
@@ -111,7 +111,7 @@ angularTextMarkup('OPTION', function(text, textNode, parentElement){
* <pre>
* <img src="http://www.gravatar.com/avatar/{{hash}}"/>
* </pre>
- *
+ *
* The correct way to write it:
* <pre>
* <img ng:src="http://www.gravatar.com/avatar/{{hash}}"/>
diff --git a/src/parser.js b/src/parser.js
index ac62fb97..f2ca7a80 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -49,8 +49,8 @@ function lex(text, parseStringsForObjects){
}
} else if (is('(){}[].,;:')) {
tokens.push({
- index:index,
- text:ch,
+ index:index,
+ text:ch,
json:(was(':[,') && is('{[')) || is('}]:,')
});
if (is('{[')) json.unshift(ch);
@@ -108,8 +108,8 @@ function lex(text, parseStringsForObjects){
end = end || index;
throw Error("Lexer Error: " + error + " at column" +
(isDefined(start) ?
- "s " + start + "-" + index + " [" + text.substring(start, end) + "]" :
- " " + end) +
+ "s " + start + "-" + index + " [" + text.substring(start, end) + "]" :
+ " " + end) +
" in expression [" + text + "].");
}
@@ -157,8 +157,8 @@ function lex(text, parseStringsForObjects){
}
fn = OPERATORS[ident];
tokens.push({
- index:start,
- text:ident,
+ index:start,
+ text:ident,
json: fn,
fn:fn||extend(getterFn(ident), {
assign:function(self, value){
@@ -167,7 +167,7 @@ function lex(text, parseStringsForObjects){
})
});
}
-
+
function readString(quote) {
var start = index;
index++;
@@ -217,25 +217,25 @@ function lex(text, parseStringsForObjects){
function parser(text, json){
var ZERO = valueFn(0),
tokens = lex(text, json),
- assignment = _assignment,
+ assignment = _assignment,
assignable = logicalOR,
- functionCall = _functionCall,
- fieldAccess = _fieldAccess,
- objectIndex = _objectIndex,
- filterChain = _filterChain,
- functionIdent = _functionIdent,
+ functionCall = _functionCall,
+ fieldAccess = _fieldAccess,
+ objectIndex = _objectIndex,
+ filterChain = _filterChain,
+ functionIdent = _functionIdent,
pipeFunction = _pipeFunction;
if(json){
- // The extra level of aliasing is here, just in case the lexer misses something, so that
+ // The extra level of aliasing is here, just in case the lexer misses something, so that
// we prevent any accidental execution in JSON.
assignment = logicalOR;
- functionCall =
- fieldAccess =
- objectIndex =
+ functionCall =
+ fieldAccess =
+ objectIndex =
assignable =
- filterChain =
- functionIdent =
- pipeFunction =
+ filterChain =
+ functionIdent =
+ pipeFunction =
function (){ throwError("is not valid json", {text:text, index:0}); };
}
return {
@@ -368,7 +368,7 @@ function parser(text, json){
argFns.push(expression());
} else {
return valueFn({
- format:invokeFn(formatter.format),
+ format:invokeFn(formatter.format),
parse:invokeFn(formatter.parse)
});
}
diff --git a/src/sanitizer.js b/src/sanitizer.js
index 5e99ec71..c8a7b9f1 100644
--- a/src/sanitizer.js
+++ b/src/sanitizer.js
@@ -214,7 +214,7 @@ function decodeEntities(value) {
}
/**
- * Escapes all potentially dangerous characters, so that the
+ * Escapes all potentially dangerous characters, so that the
* resulting string can be safely inserted into attribute or
* element text.
* @param value
diff --git a/src/scenario/output/Json.js b/src/scenario/output/Json.js
index 94212301..2c852496 100644
--- a/src/scenario/output/Json.js
+++ b/src/scenario/output/Json.js
@@ -3,7 +3,7 @@
*/
angular.scenario.output('json', function(context, runner) {
var model = new angular.scenario.ObjectModel(runner);
-
+
runner.on('RunnerEnd', function() {
context.text(angular.toJson(model.value));
});
diff --git a/src/services.js b/src/services.js
index 1a7b91ac..aa4a2090 100644
--- a/src/services.js
+++ b/src/services.js
@@ -11,16 +11,16 @@ function angularServiceInject(name, fn, inject, eager) {
* @workInProgress
* @ngdoc service
* @name angular.service.$window
- *
+ *
* @description
* Is reference to the browser's <b>window</b> object. While <b>window</b>
* is globally available in JavaScript, it causes testability problems, because
* it is a global variable. In <b><angular/></b> we always refer to it through the
* $window service, so it may be overriden, removed or mocked for testing.
- *
+ *
* All expressions are evaluated with respect to current scope so they don't
* suffer from window globality.
- *
+ *
* @example
<input ng:init="greeting='Hello World!'" type="text" name="greeting" />
<button ng:click="$window.alert(greeting)">ALERT</button>
@@ -32,7 +32,7 @@ angularServiceInject("$window", bind(window, identity, window), [], EAGER);
* @ngdoc service
* @name angular.service.$document
* @requires $window
- *
+ *
* @description
* Reference to the browser window.document, but wrapped into angular.element().
*/
@@ -45,7 +45,7 @@ angularServiceInject("$document", function(window){
* @ngdoc service
* @name angular.service.$location
* @requires $browser
- *
+ *
* @property {string} href
* @property {string} protocol
* @property {string} host
@@ -55,15 +55,15 @@ angularServiceInject("$document", function(window){
* @property {string} hash
* @property {string} hashPath
* @property {Object.<string|boolean>} hashSearch
- *
+ *
* @description
* Parses the browser location url and makes it available to your application.
* Any changes to the url are reflected into $location service and changes to
* $location are reflected to url.
* Notice that using browser's forward/back buttons changes the $location.
- *
+ *
* @example
- <a href="#">clear hash</a> |
+ <a href="#">clear hash</a> |
<a href="#myPath?name=misko">test hash</a><br/>
<input type='text' name="$location.hash"/>
<pre>$location = {{$location}}</pre>
@@ -91,7 +91,7 @@ angularServiceInject("$location", function($browser) {
* @ngdoc method
* @name angular.service.$location#update
* @methodOf angular.service.$location
- *
+ *
* @description
* Update location object
* Does not immediately update the browser
@@ -127,7 +127,7 @@ angularServiceInject("$location", function($browser) {
* @ngdoc method
* @name angular.service.$location#updateHash
* @methodOf angular.service.$location
- *
+ *
* @description
* Update location hash part
* @see update()
@@ -288,13 +288,13 @@ angularServiceInject("$location", function($browser) {
* @ngdoc service
* @name angular.service.$log
* @requires $window
- *
+ *
* @description
* Is simple service for logging. Default implementation writes the message
* into the browser's console (if present).
- *
+ *
* This is useful for debugging.
- *
+ *
* @example
<p>Reload this page with open console, enter text and hit the log button...</p>
Message:
@@ -311,46 +311,46 @@ angularServiceInject("$log", function($window){
* @ngdoc method
* @name angular.service.$log#log
* @methodOf angular.service.$log
- *
+ *
* @description
* Write a log message
*/
log: consoleLog('log'),
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$log#warn
* @methodOf angular.service.$log
- *
+ *
* @description
* Write a warning message
*/
warn: consoleLog('warn'),
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$log#info
* @methodOf angular.service.$log
- *
+ *
* @description
* Write an information message
*/
info: consoleLog('info'),
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$log#error
* @methodOf angular.service.$log
- *
+ *
* @description
* Write an error message
*/
error: consoleLog('error')
};
-
+
function consoleLog(type) {
var console = $window.console || {};
var logFn = console[type] || console.log || noop;
@@ -374,17 +374,17 @@ angularServiceInject("$log", function($window){
* @ngdoc service
* @name angular.service.$exceptionHandler
* @requires $log
- *
+ *
* @description
* Any uncaught exception in <angular/> is delegated to this service.
* The default implementation simply delegates to $log.error which logs it into
* the browser console.
- *
+ *
* When unit testing it is useful to have uncaught exceptions propagate
* to the test so the test will fail rather than silently log the exception
* to the browser console. For this purpose you can override this service with
- * a simple rethrow.
- *
+ * a simple rethrow.
+ *
* @example
*/
angularServiceInject('$exceptionHandler', function($log){
@@ -459,9 +459,9 @@ angularServiceInject('$updateView', serviceUpdateViewFactory, ['$browser']);
* @name angular.service.$hover
* @requires $browser
* @requires $document
- *
+ *
* @description
- *
+ *
* @example
*/
angularServiceInject("$hover", function(browser, document) {
@@ -514,11 +514,11 @@ angularServiceInject("$hover", function(browser, document) {
* @workInProgress
* @ngdoc service
* @name angular.service.$invalidWidgets
- *
+ *
* @description
* Keeps references to all invalid widgets found during validation.
* Can be queried to find whether there are any invalid widgets currently displayed.
- *
+ *
* @example
*/
angularServiceInject("$invalidWidgets", function(){
@@ -608,45 +608,45 @@ function switchRouteMatcher(on, when, dstName) {
* @ngdoc service
* @name angular.service.$route
* @requires $location
- *
+ *
* @property {Object} current Name of the current route
* @property {Array.<Object>} routes List of configured routes
- *
+ *
* @description
* Watches $location.hashPath and tries to map the hash to an existing route
* definition. It is used for deep-linking URLs to controllers and views (HTML partials).
- *
+ *
* $route is typically used in conjunction with {@link angular.widget.ng:view ng:view} widget.
- *
+ *
* @example
<p>
- This example shows how changing the URL hash causes the <tt>$route</tt>
- to match a route against the URL, and the <tt>[[ng:include]]</tt> pulls in the partial.
- Try changing the URL in the input box to see changes.
+ This example shows how changing the URL hash causes the <tt>$route</tt>
+ to match a route against the URL, and the <tt>[[ng:include]]</tt> pulls in the partial.
+ Try changing the URL in the input box to see changes.
</p>
-
+
<script>
- angular.service('myApp', function($route) {
- $route.when('/Book/:bookId', {template:'rsrc/book.html', controller:BookCntl});
- $route.when('/Book/:bookId/ch/:chapterId', {template:'rsrc/chapter.html', controller:ChapterCntl});
- $route.onChange(function() {
- $route.current.scope.params = $route.current.params;
- });
- }, {$inject: ['$route']});
-
- function BookCntl() {
- this.name = "BookCntl";
- }
-
- function ChapterCntl() {
- this.name = "ChapterCntl";
- }
+ angular.service('myApp', function($route) {
+ $route.when('/Book/:bookId', {template:'rsrc/book.html', controller:BookCntl});
+ $route.when('/Book/:bookId/ch/:chapterId', {template:'rsrc/chapter.html', controller:ChapterCntl});
+ $route.onChange(function() {
+ $route.current.scope.params = $route.current.params;
+ });
+ }, {$inject: ['$route']});
+
+ function BookCntl() {
+ this.name = "BookCntl";
+ }
+
+ function ChapterCntl() {
+ this.name = "ChapterCntl";
+ }
</script>
-Chose:
-<a href="#/Book/Moby">Moby</a> |
-<a href="#/Book/Moby/ch/1">Moby: Ch1</a> |
-<a href="#/Book/Gatsby">Gatsby</a> |
+Chose:
+<a href="#/Book/Moby">Moby</a> |
+<a href="#/Book/Moby/ch/1">Moby: Ch1</a> |
+<a href="#/Book/Gatsby">Gatsby</a> |
<a href="#/Book/Gatsby/ch/4?key=value">Gatsby: Ch4</a><br/>
<input type="text" name="$location.hashPath" size="80" />
<pre>$location={{$location}}</pre>
@@ -664,31 +664,31 @@ angularServiceInject('$route', function(location) {
dirty = 0,
$route = {
routes: routes,
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$route#onChange
* @methodOf angular.service.$route
- *
+ *
* @param {function()} fn Function that will be called on route change
- *
+ *
* @description
* Register a handler function that will be called when route changes
*/
onChange: bind(onChange, onChange.push),
-
+
/**
* @workInProgress
* @ngdoc method
* @name angular.service.$route#when
* @methodOf angular.service.$route
- *
+ *
* @param {string} path Route path (matched against $location.hash)
* @param {Object} params Mapping information to be assigned to `$route.current` on route
* match.
* @returns {Object} route object
- *
+ *
* @description
* Add new route
*/
@@ -732,9 +732,9 @@ angularServiceInject('$route', function(location) {
* @requires $browser
* @requires $xhr.error
* @requires $log
- *
+ *
* @description
- *
+ *
* @example
*/
angularServiceInject('$xhr', function($browser, $error, $log){
@@ -773,9 +773,9 @@ angularServiceInject('$xhr', function($browser, $error, $log){
* @ngdoc service
* @name angular.service.$xhr.error
* @requires $log
- *
+ *
* @description
- *
+ *
* @example
*/
angularServiceInject('$xhr.error', function($log){
@@ -791,9 +791,9 @@ angularServiceInject('$xhr.error', function($log){
* @requires $xhr
* @requires $xhr.error
* @requires $log
- *
+ *
* @description
- *
+ *
* @example
*/
angularServiceInject('$xhr.bulk', function($xhr, $error, $log){
@@ -885,9 +885,9 @@ angularServiceInject('$defer', function($browser, $exceptionHandler, $updateView
* @ngdoc service
* @name angular.service.$xhr.cache
* @requires $xhr
- *
+ *
* @description
- *
+ *
* @example
*/
angularServiceInject('$xhr.cache', function($xhr, $defer, $log){
@@ -942,7 +942,7 @@ angularServiceInject('$xhr.cache', function($xhr, $defer, $log){
* @requires $xhr
*
* @description
- * Is a factory which creates a resource object which lets you interact with
+ * Is a factory which creates a resource object which lets you interact with
* <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">RESTful</a>
* server-side data sources.
* Resource object has action methods which provide high-level behaviors without
@@ -1051,7 +1051,7 @@ angularServiceInject('$xhr.cache', function($xhr, $defer, $log){
{get:{method:'JSON', params:{visibility:'@self'}}, replies: {method:'JSON', params:{visibility:'@self', comments:'@comments'}}}
);
}
-
+
BuzzController.prototype = {
fetch: function() {
this.activities = this.Activity.get({userId:this.userId});
@@ -1069,9 +1069,9 @@ angularServiceInject('$xhr.cache', function($xhr, $defer, $log){
<hr/>
<div ng:repeat="item in activities.data.items">
<h1 style="font-size: 15px;">
- <img src="{{item.actor.thumbnailUrl}}" style="max-height:30px;max-width:30px;"/>
- <a href="{{item.actor.profileUrl}}">{{item.actor.name}}</a>
- <a href ng:click="expandReplies(item)" style="float: right;">Expand replies: {{item.links.replies[0].count}}</a>
+ <img src="{{item.actor.thumbnailUrl}}" style="max-height:30px;max-width:30px;"/>
+ <a href="{{item.actor.profileUrl}}">{{item.actor.name}}</a>
+ <a href ng:click="expandReplies(item)" style="float: right;">Expand replies: {{item.links.replies[0].count}}</a>
</h1>
{{item.object.content | html}}
<div ng:repeat="reply in item.replies.data.items" style="margin-left: 20px;">
@@ -1091,13 +1091,13 @@ angularServiceInject('$resource', function($xhr){
* @ngdoc service
* @name angular.service.$cookies
* @requires $browser
- *
+ *
* @description
* Provides read/write access to browser's cookies.
- *
+ *
* Only a simple Object is exposed and by adding or removing properties to/from
* this object, new cookies are created/deleted at the end of current $eval.
- *
+ *
* @example
*/
angularServiceInject('$cookies', function($browser) {
@@ -1181,7 +1181,7 @@ angularServiceInject('$cookies', function($browser) {
* @ngdoc service
* @name angular.service.$cookieStore
* @requires $cookies
- *
+ *
* @description
* Provides a key-value (string-object) storage, that is backed by session cookies.
* Objects put or retrieved from this storage are automatically serialized or
@@ -1196,10 +1196,10 @@ angularServiceInject('$cookieStore', function($store) {
* @ngdoc method
* @name angular.service.$cookieStore#get
* @methodOf angular.service.$cookieStore
- *
+ *
* @description
* Returns the value of given cookie key
- *
+ *
* @param {string} key Id to use for lookup.
* @returns {Object} Deserialized cookie value.
*/
@@ -1212,10 +1212,10 @@ angularServiceInject('$cookieStore', function($store) {
* @ngdoc method
* @name angular.service.$cookieStore#put
* @methodOf angular.service.$cookieStore
- *
+ *
* @description
* Sets a value for given cookie key
- *
+ *
* @param {string} key Id for the `value`.
* @param {Object} value Value to be stored.
*/
@@ -1228,10 +1228,10 @@ angularServiceInject('$cookieStore', function($store) {
* @ngdoc method
* @name angular.service.$cookieStore#remove
* @methodOf angular.service.$cookieStore
- *
+ *
* @description
* Remove given cookie
- *
+ *
* @param {string} key Id of the key-value pair to delete.
*/
remove: function(key) {
diff --git a/src/validators.js b/src/validators.js
index 7d115518..30936574 100644
--- a/src/validators.js
+++ b/src/validators.js
@@ -7,32 +7,32 @@ extend(angularValidator, {
* @name angular.validator.regexp
* @description
* Use regexp validator to restrict the input to any Regular Expression.
- *
+ *
* @param {string} value value to validate
* @param {string|regexp} expression regular expression.
* @param {string=} msg error message to display.
* @css ng-validation-error
- *
+ *
* @example
* <script> function Cntl(){
- * this.ssnRegExp = /^\d\d\d-\d\d-\d\d\d\d$/;
+ * this.ssnRegExp = /^\d\d\d-\d\d-\d\d\d\d$/;
* }
* </script>
* Enter valid SSN:
* <div ng:controller="Cntl">
* <input name="ssn" value="123-45-6789" ng:validate="regexp:ssnRegExp" >
* </div>
- *
+ *
* @scenario
* it('should invalidate non ssn', function(){
* var textBox = element('.doc-example :input');
* expect(textBox.attr('className')).not().toMatch(/ng-validation-error/);
* expect(textBox.val()).toEqual('123-45-6789');
- *
+ *
* input('ssn').enter('123-45-67890');
* expect(textBox.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'regexp': function(value, regexp, msg) {
if (!value.match(regexp)) {
@@ -48,38 +48,38 @@ extend(angularValidator, {
* @ngdoc validator
* @name angular.validator.number
* @description
- * Use number validator to restrict the input to numbers with an
+ * Use number validator to restrict the input to numbers with an
* optional range. (See integer for whole numbers validator).
- *
+ *
* @param {string} value value to validate
* @param {int=} [min=MIN_INT] minimum value.
* @param {int=} [max=MAX_INT] maximum value.
* @css ng-validation-error
- *
+ *
* @example
* Enter number: <input name="n1" ng:validate="number" > <br>
* Enter number greater than 10: <input name="n2" ng:validate="number:10" > <br>
* Enter number between 100 and 200: <input name="n3" ng:validate="number:100:200" > <br>
- *
+ *
* @scenario
* it('should invalidate number', function(){
* var n1 = element('.doc-example :input[name=n1]');
* expect(n1.attr('className')).not().toMatch(/ng-validation-error/);
* input('n1').enter('1.x');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* var n2 = element('.doc-example :input[name=n2]');
* expect(n2.attr('className')).not().toMatch(/ng-validation-error/);
* input('n2').enter('9');
* expect(n2.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* var n3 = element('.doc-example :input[name=n3]');
* expect(n3.attr('className')).not().toMatch(/ng-validation-error/);
* input('n3').enter('201');
* expect(n3.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* });
- *
+ *
*/
'number': function(value, min, max) {
var num = 1 * value;
@@ -101,36 +101,36 @@ extend(angularValidator, {
* @ngdoc validator
* @name angular.validator.integer
* @description
- * Use number validator to restrict the input to integers with an
+ * Use number validator to restrict the input to integers with an
* optional range. (See integer for whole numbers validator).
- *
+ *
* @param {string} value value to validate
* @param {int=} [min=MIN_INT] minimum value.
* @param {int=} [max=MAX_INT] maximum value.
* @css ng-validation-error
- *
+ *
* @example
* Enter integer: <input name="n1" ng:validate="integer" > <br>
* Enter integer equal or greater than 10: <input name="n2" ng:validate="integer:10" > <br>
* Enter integer between 100 and 200 (inclusive): <input name="n3" ng:validate="integer:100:200" > <br>
- *
+ *
* @scenario
* it('should invalidate integer', function(){
* var n1 = element('.doc-example :input[name=n1]');
* expect(n1.attr('className')).not().toMatch(/ng-validation-error/);
* input('n1').enter('1.1');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* var n2 = element('.doc-example :input[name=n2]');
* expect(n2.attr('className')).not().toMatch(/ng-validation-error/);
* input('n2').enter('10.1');
* expect(n2.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* var n3 = element('.doc-example :input[name=n3]');
* expect(n3.attr('className')).not().toMatch(/ng-validation-error/);
* input('n3').enter('100.1');
* expect(n3.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* });
*/
'integer': function(value, min, max) {
@@ -149,14 +149,14 @@ extend(angularValidator, {
* @description
* Use date validator to restrict the user input to a valid date
* in format in format MM/DD/YYYY.
- *
+ *
* @param {string} value value to validate
* @css ng-validation-error
- *
+ *
* @example
* Enter valid date:
* <input name="text" value="1/1/2009" ng:validate="date" >
- *
+ *
* @scenario
* it('should invalidate date', function(){
* var n1 = element('.doc-example :input');
@@ -164,7 +164,7 @@ extend(angularValidator, {
* input('text').enter('123/123/123');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'date': function(value) {
var fields = /^(\d\d?)\/(\d\d?)\/(\d\d\d\d)$/.exec(value);
@@ -182,14 +182,14 @@ extend(angularValidator, {
* @name angular.validator.email
* @description
* Use email validator if you wist to restrict the user input to a valid email.
- *
+ *
* @param {string} value value to validate
* @css ng-validation-error
- *
+ *
* @example
* Enter valid email:
* <input name="text" ng:validate="email" value="me@example.com">
- *
+ *
* @scenario
* it('should invalidate email', function(){
* var n1 = element('.doc-example :input');
@@ -197,7 +197,7 @@ extend(angularValidator, {
* input('text').enter('a@b.c');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'email': function(value) {
if (value.match(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/)) {
@@ -212,14 +212,14 @@ extend(angularValidator, {
* @name angular.validator.phone
* @description
* Use phone validator to restrict the input phone numbers.
- *
+ *
* @param {string} value value to validate
* @css ng-validation-error
- *
+ *
* @example
* Enter valid phone number:
* <input name="text" value="1(234)567-8901" ng:validate="phone" >
- *
+ *
* @scenario
* it('should invalidate phone', function(){
* var n1 = element('.doc-example :input');
@@ -227,7 +227,7 @@ extend(angularValidator, {
* input('text').enter('+12345678');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'phone': function(value) {
if (value.match(/^1\(\d\d\d\)\d\d\d-\d\d\d\d$/)) {
@@ -245,14 +245,14 @@ extend(angularValidator, {
* @name angular.validator.url
* @description
* Use phone validator to restrict the input URLs.
- *
+ *
* @param {string} value value to validate
* @css ng-validation-error
- *
+ *
* @example
* Enter valid phone number:
* <input name="text" value="http://example.com/abc.html" size="40" ng:validate="url" >
- *
+ *
* @scenario
* it('should invalidate url', function(){
* var n1 = element('.doc-example :input');
@@ -260,7 +260,7 @@ extend(angularValidator, {
* input('text').enter('abc://server/path');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'url': function(value) {
if (value.match(/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/)) {
@@ -275,15 +275,15 @@ extend(angularValidator, {
* @name angular.validator.json
* @description
* Use json validator if you wish to restrict the user input to a valid JSON.
- *
+ *
* @param {string} value value to validate
* @css ng-validation-error
- *
+ *
* @example
* <textarea name="json" cols="60" rows="5" ng:validate="json">
* {name:'abc'}
* </textarea>
- *
+ *
* @scenario
* it('should invalidate json', function(){
* var n1 = element('.doc-example :input');
@@ -291,7 +291,7 @@ extend(angularValidator, {
* input('json').enter('{name}');
* expect(n1.attr('className')).toMatch(/ng-validation-error/);
* });
- *
+ *
*/
'json': function(value) {
try {
@@ -307,36 +307,36 @@ extend(angularValidator, {
* @ngdoc validator
* @name angular.validator.asynchronous
* @description
- * Use asynchronous validator if the validation can not be computed
- * immediately, but is provided through a callback. The widget
- * automatically shows a spinning indicator while the validity of
+ * Use asynchronous validator if the validation can not be computed
+ * immediately, but is provided through a callback. The widget
+ * automatically shows a spinning indicator while the validity of
* the widget is computed. This validator caches the result.
- *
+ *
* @param {string} value value to validate
* @param {function(inputToValidate,validationDone)} validate function to call to validate the state
* of the input.
- * @param {function(data)=} [update=noop] function to call when state of the
+ * @param {function(data)=} [update=noop] function to call when state of the
* validator changes
- *
+ *
* @paramDescription
- * The `validate` function (specified by you) is called as
+ * The `validate` function (specified by you) is called as
* `validate(inputToValidate, validationDone)`:
- *
+ *
* * `inputToValidate`: value of the input box.
* * `validationDone`: `function(error, data){...}`
* * `error`: error text to display if validation fails
* * `data`: data object to pass to update function
- *
+ *
* The `update` function is optionally specified by you and is
- * called by <angular/> on input change. Since the
- * asynchronous validator caches the results, the update
- * function can be called without a call to `validate`
+ * called by <angular/> on input change. Since the
+ * asynchronous validator caches the results, the update
+ * function can be called without a call to `validate`
* function. The function is called as `update(data)`:
- *
+ *
* * `data`: data object as passed from validate function
- *
+ *
* @css ng-input-indicator-wait, ng-validation-error
- *
+ *
* @example
* <script>
* function MyCntl(){
@@ -351,23 +351,23 @@ extend(angularValidator, {
* <div ng:controller="MyCntl">
* <input name="text" ng:validate="asynchronous:myValidator">
* </div>
- *
+ *
* @scenario
* it('should change color in delayed way', function(){
* var textBox = element('.doc-example :input');
* expect(textBox.attr('className')).not().toMatch(/ng-input-indicator-wait/);
* expect(textBox.attr('className')).not().toMatch(/ng-validation-error/);
- *
+ *
* input('text').enter('X');
* expect(textBox.attr('className')).toMatch(/ng-input-indicator-wait/);
- *
+ *
* pause(.6);
- *
+ *
* expect(textBox.attr('className')).not().toMatch(/ng-input-indicator-wait/);
* expect(textBox.attr('className')).toMatch(/ng-validation-error/);
- *
+ *
* });
- *
+ *
*/
/*
* cache is attached to the element