7272 </doc:scenario>
7373 </doc:example>
7474 */
75- angularFilter . currency = function ( amount , currencySymbol ) {
76- var formats = this . $service ( '$locale' ) . NUMBER_FORMATS ;
77- this . $element . toggleClass ( 'ng-format-negative' , amount < 0 ) ;
78- if ( isUndefined ( currencySymbol ) ) currencySymbol = formats . CURRENCY_SYM ;
79- return formatNumber ( amount , formats . PATTERNS [ 1 ] , formats . GROUP_SEP , formats . DECIMAL_SEP , 2 ) .
80- replace ( / \u00A4 / g, currencySymbol ) ;
81- } ;
75+ currencyFilter . $inject = [ '$locale' ] ;
76+ function currencyFilter ( $locale ) {
77+ var formats = $locale . NUMBER_FORMATS ;
78+ return function ( amount , currencySymbol ) {
79+ if ( isUndefined ( currencySymbol ) ) currencySymbol = formats . CURRENCY_SYM ;
80+ return formatNumber ( amount , formats . PATTERNS [ 1 ] , formats . GROUP_SEP , formats . DECIMAL_SEP , 2 ) .
81+ replace ( / \u00A4 / g, currencySymbol ) ;
82+ } ;
83+ }
8284
8385/**
8486 * @ngdoc filter
@@ -126,14 +128,17 @@ angularFilter.currency = function(amount, currencySymbol){
126128 </doc:example>
127129 */
128130
129- var DECIMAL_SEP = '.' ;
130131
131- angularFilter . number = function ( number , fractionSize ) {
132- var formats = this . $service ( '$locale' ) . NUMBER_FORMATS ;
133- return formatNumber ( number , formats . PATTERNS [ 0 ] , formats . GROUP_SEP ,
134- formats . DECIMAL_SEP , fractionSize ) ;
135- } ;
132+ numberFilter . $inject = [ '$locale' ] ;
133+ function numberFilter ( $locale ) {
134+ var formats = $locale . NUMBER_FORMATS ;
135+ return function ( number , fractionSize ) {
136+ return formatNumber ( number , formats . PATTERNS [ 0 ] , formats . GROUP_SEP , formats . DECIMAL_SEP ,
137+ fractionSize ) ;
138+ } ;
139+ }
136140
141+ var DECIMAL_SEP = '.' ;
137142function formatNumber ( number , pattern , groupSep , decimalSep , fractionSize ) {
138143 if ( isNaN ( number ) || ! isFinite ( number ) ) return '' ;
139144
@@ -260,9 +265,7 @@ var DATE_FORMATS = {
260265 Z : timeZoneGetter
261266} ;
262267
263- var GET_TIME_ZONE = / [ A - Z ] { 3 } (? ! [ + \- ] ) / ,
264- DATE_FORMATS_SPLIT = / ( (?: [ ^ y M d H h m s a Z E ' ] + ) | (?: ' (?: [ ^ ' ] | ' ' ) * ' ) | (?: E + | y + | M + | d + | H + | h + | m + | s + | a | Z ) ) ( .* ) / ,
265- OPERA_TOSTRING_PATTERN = / ^ [ \d ] .* Z $ / ,
268+ var DATE_FORMATS_SPLIT = / ( (?: [ ^ y M d H h m s a Z E ' ] + ) | (?: ' (?: [ ^ ' ] | ' ' ) * ' ) | (?: E + | y + | M + | d + | H + | h + | m + | s + | a | Z ) ) ( .* ) / ,
266269 NUMBER_STRING = / ^ \d + $ / ;
267270
268271/**
@@ -343,49 +346,51 @@ var GET_TIME_ZONE = /[A-Z]{3}(?![+\-])/,
343346 </doc:scenario>
344347 </doc:example>
345348 */
346- angularFilter . date = function ( date , format ) {
347- var $locale = this . $service ( '$locale' ) ,
348- text = '' ,
349- parts = [ ] ,
350- fn , match ;
351-
352- format = format || 'mediumDate'
353- format = $locale . DATETIME_FORMATS [ format ] || format ;
354- if ( isString ( date ) ) {
355- if ( NUMBER_STRING . test ( date ) ) {
356- date = parseInt ( date , 10 ) ;
357- } else {
358- date = angularString . toDate ( date ) ;
349+ dateFilter . $inject = [ '$locale' ] ;
350+ function dateFilter ( $locale ) {
351+ return function ( date , format ) {
352+ var text = '' ,
353+ parts = [ ] ,
354+ fn , match ;
355+
356+ format = format || 'mediumDate'
357+ format = $locale . DATETIME_FORMATS [ format ] || format ;
358+ if ( isString ( date ) ) {
359+ if ( NUMBER_STRING . test ( date ) ) {
360+ date = parseInt ( date , 10 ) ;
361+ } else {
362+ date = angularString . toDate ( date ) ;
363+ }
359364 }
360- }
361365
362- if ( isNumber ( date ) ) {
363- date = new Date ( date ) ;
364- }
366+ if ( isNumber ( date ) ) {
367+ date = new Date ( date ) ;
368+ }
365369
366- if ( ! isDate ( date ) ) {
367- return date ;
368- }
370+ if ( ! isDate ( date ) ) {
371+ return date ;
372+ }
369373
370- while ( format ) {
371- match = DATE_FORMATS_SPLIT . exec ( format ) ;
372- if ( match ) {
373- parts = concat ( parts , match , 1 ) ;
374- format = parts . pop ( ) ;
375- } else {
376- parts . push ( format ) ;
377- format = null ;
374+ while ( format ) {
375+ match = DATE_FORMATS_SPLIT . exec ( format ) ;
376+ if ( match ) {
377+ parts = concat ( parts , match , 1 ) ;
378+ format = parts . pop ( ) ;
379+ } else {
380+ parts . push ( format ) ;
381+ format = null ;
382+ }
378383 }
379- }
380384
381- forEach ( parts , function ( value ) {
382- fn = DATE_FORMATS [ value ] ;
383- text += fn ? fn ( date , $locale . DATETIME_FORMATS )
384- : value . replace ( / ( ^ ' | ' $ ) / g, '' ) . replace ( / ' ' / g, "'" ) ;
385- } ) ;
385+ forEach ( parts , function ( value ) {
386+ fn = DATE_FORMATS [ value ] ;
387+ text += fn ? fn ( date , $locale . DATETIME_FORMATS )
388+ : value . replace ( / ( ^ ' | ' $ ) / g, '' ) . replace ( / ' ' / g, "'" ) ;
389+ } ) ;
386390
387- return text ;
388- } ;
391+ return text ;
392+ } ;
393+ }
389394
390395
391396/**
@@ -417,10 +422,11 @@ angularFilter.date = function(date, format) {
417422 </doc:example>
418423 *
419424 */
420- angularFilter . json = function ( object ) {
421- this . $element . addClass ( "ng-monospace" ) ;
422- return toJson ( object , true , / ^ ( \$ | t h i s $ ) / ) ;
423- } ;
425+ function jsonFilter ( ) {
426+ return function ( object ) {
427+ return toJson ( object , true ) ;
428+ } ;
429+ }
424430
425431
426432/**
@@ -430,7 +436,7 @@ angularFilter.json = function(object) {
430436 *
431437 * @see angular.lowercase
432438 */
433- angularFilter . lowercase = lowercase ;
439+ var lowercaseFilter = valueFn ( lowercase ) ;
434440
435441
436442/**
@@ -440,7 +446,7 @@ angularFilter.lowercase = lowercase;
440446 *
441447 * @see angular.uppercase
442448 */
443- angularFilter . uppercase = uppercase ;
449+ var uppercaseFilter = valueFn ( uppercase ) ;
444450
445451
446452/**
@@ -537,9 +543,11 @@ angularFilter.uppercase = uppercase;
537543 </doc:scenario>
538544 </doc:example>
539545 */
540- angularFilter . html = function ( html , option ) {
541- return new HTML ( html , option ) ;
542- } ;
546+ function htmlFilter ( ) {
547+ return function ( html , option ) {
548+ return new HTML ( html , option ) ;
549+ } ;
550+ }
543551
544552
545553/**
@@ -619,29 +627,31 @@ angularFilter.html = function(html, option){
619627 </doc:scenario>
620628 </doc:example>
621629 */
622- var LINKY_URL_REGEXP = / ( ( f t p | h t t p s ? ) : \/ \/ | ( m a i l t o : ) ? [ A - Z a - z 0 - 9 . _ % + - ] + @ ) \S * [ ^ \s \. \; \, \( \) \{ \} \< \> ] / ,
623- MAILTO_REGEXP = / ^ m a i l t o : / ;
624-
625- angularFilter . linky = function ( text ) {
626- if ( ! text ) return text ;
627- var match ;
628- var raw = text ;
629- var html = [ ] ;
630- var writer = htmlSanitizeWriter ( html ) ;
631- var url ;
632- var i ;
633- while ( ( match = raw . match ( LINKY_URL_REGEXP ) ) ) {
634- // We can not end in these as they are sometimes found at the end of the sentence
635- url = match [ 0 ] ;
636- // if we did not match ftp/http/mailto then assume mailto
637- if ( match [ 2 ] == match [ 3 ] ) url = 'mailto:' + url ;
638- i = match . index ;
639- writer . chars ( raw . substr ( 0 , i ) ) ;
640- writer . start ( 'a' , { href :url } ) ;
641- writer . chars ( match [ 0 ] . replace ( MAILTO_REGEXP , '' ) ) ;
642- writer . end ( 'a' ) ;
643- raw = raw . substring ( i + match [ 0 ] . length ) ;
644- }
645- writer . chars ( raw ) ;
646- return new HTML ( html . join ( '' ) ) ;
630+ function linkyFilter ( ) {
631+ var LINKY_URL_REGEXP = / ( ( f t p | h t t p s ? ) : \/ \/ | ( m a i l t o : ) ? [ A - Z a - z 0 - 9 . _ % + - ] + @ ) \S * [ ^ \s \. \; \, \( \) \{ \} \< \> ] / ,
632+ MAILTO_REGEXP = / ^ m a i l t o : / ;
633+
634+ return function ( text ) {
635+ if ( ! text ) return text ;
636+ var match ;
637+ var raw = text ;
638+ var html = [ ] ;
639+ var writer = htmlSanitizeWriter ( html ) ;
640+ var url ;
641+ var i ;
642+ while ( ( match = raw . match ( LINKY_URL_REGEXP ) ) ) {
643+ // We can not end in these as they are sometimes found at the end of the sentence
644+ url = match [ 0 ] ;
645+ // if we did not match ftp/http/mailto then assume mailto
646+ if ( match [ 2 ] == match [ 3 ] ) url = 'mailto:' + url ;
647+ i = match . index ;
648+ writer . chars ( raw . substr ( 0 , i ) ) ;
649+ writer . start ( 'a' , { href :url } ) ;
650+ writer . chars ( match [ 0 ] . replace ( MAILTO_REGEXP , '' ) ) ;
651+ writer . end ( 'a' ) ;
652+ raw = raw . substring ( i + match [ 0 ] . length ) ;
653+ }
654+ writer . chars ( raw ) ;
655+ return new HTML ( html . join ( '' ) ) ;
656+ } ;
647657} ;
0 commit comments