diff options
| author | Misko Hevery | 2011-01-19 15:42:11 -0800 |
|---|---|---|
| committer | Misko Hevery | 2011-01-24 14:23:51 -0800 |
| commit | c2f2587a79aeb77aad66f081cf924a79348a698e (patch) | |
| tree | 8f5aa4cc6e7189befb834388b2102d1eda88a975 /src | |
| parent | 5d0d34ae72a9ca47f1b2dabda60711ad16ee9313 (diff) | |
| download | angular.js-c2f2587a79aeb77aad66f081cf924a79348a698e.tar.bz2 | |
fixed example rendering, add tests for it.
Diffstat (limited to 'src')
| -rw-r--r-- | src/AngularPublic.js | 2 | ||||
| -rw-r--r-- | src/Browser.js | 48 | ||||
| -rw-r--r-- | src/Compiler.js | 14 | ||||
| -rw-r--r-- | src/Injector.js | 2 | ||||
| -rw-r--r-- | src/markups.js | 18 | ||||
| -rw-r--r-- | src/parser.js | 42 | ||||
| -rw-r--r-- | src/sanitizer.js | 2 | ||||
| -rw-r--r-- | src/scenario/output/Json.js | 2 | ||||
| -rw-r--r-- | src/services.js | 170 | ||||
| -rw-r--r-- | src/validators.js | 124 |
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 |
