MOBILE-3565 pipes: Add some pipes
This commit is contained in:
		
							parent
							
								
									181c54976a
								
							
						
					
					
						commit
						dd73d1b2e5
					
				
							
								
								
									
										35
									
								
								src/app/pipes/create-links.pipe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/app/pipes/create-links.pipe.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | ||||
| // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| import { Pipe, PipeTransform } from '@angular/core'; | ||||
| 
 | ||||
| /** | ||||
|  * Pipe to search URLs that are not inside <a> tags and add the corresponding <a> tags. | ||||
|  */ | ||||
| @Pipe({ | ||||
|     name: 'coreCreateLinks', | ||||
| }) | ||||
| export class CoreCreateLinksPipe implements PipeTransform { | ||||
|     protected static replacePattern = /(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])(?![^<]*>|[^<>]*<\/)/gim; | ||||
| 
 | ||||
|     /** | ||||
|      * Takes some text and adds anchor tags to all links that aren't inside anchors. | ||||
|      * | ||||
|      * @param text Text to treat. | ||||
|      * @return Treated text. | ||||
|      */ | ||||
|     transform(text: string): string { | ||||
|         return text.replace(CoreCreateLinksPipe.replacePattern, '<a href="$1">$1</a>'); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										34
									
								
								src/app/pipes/no-tags.pipe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/app/pipes/no-tags.pipe.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| import { Pipe, PipeTransform } from '@angular/core'; | ||||
| 
 | ||||
| /** | ||||
|  * Pipe to remove HTML tags. | ||||
|  */ | ||||
| @Pipe({ | ||||
|     name: 'coreNoTags', | ||||
| }) | ||||
| export class CoreNoTagsPipe implements PipeTransform { | ||||
| 
 | ||||
|     /** | ||||
|      * Takes a text and removes HTML tags. | ||||
|      * | ||||
|      * @param text The text to treat. | ||||
|      * @return Treated text. | ||||
|      */ | ||||
|     transform(text: string): string { | ||||
|         return text.replace(/(<([^>]+)>)/ig, ''); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										33
									
								
								src/app/pipes/pipes.module.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/app/pipes/pipes.module.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { CoreCreateLinksPipe } from './create-links.pipe'; | ||||
| import { CoreNoTagsPipe } from './no-tags.pipe'; | ||||
| import { CoreTimeAgoPipe } from './time-ago.pipe'; | ||||
| 
 | ||||
| @NgModule({ | ||||
|     declarations: [ | ||||
|         CoreCreateLinksPipe, | ||||
|         CoreNoTagsPipe, | ||||
|         CoreTimeAgoPipe, | ||||
|     ], | ||||
|     imports: [], | ||||
|     exports: [ | ||||
|         CoreCreateLinksPipe, | ||||
|         CoreNoTagsPipe, | ||||
|         CoreTimeAgoPipe, | ||||
|     ] | ||||
| }) | ||||
| export class CorePipesModule {} | ||||
							
								
								
									
										53
									
								
								src/app/pipes/time-ago.pipe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/app/pipes/time-ago.pipe.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | ||||
| // (C) Copyright 2015 Moodle Pty Ltd.
 | ||||
| //
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| import { Pipe, PipeTransform } from '@angular/core'; | ||||
| import { Translate } from '@singletons/core.singletons'; | ||||
| import { CoreLogger } from '@singletons/logger'; | ||||
| import moment from 'moment'; | ||||
| 
 | ||||
| /** | ||||
|  * Pipe to turn a UNIX timestamp to "time ago". | ||||
|  */ | ||||
| @Pipe({ | ||||
|     name: 'coreTimeAgo', | ||||
| }) | ||||
| export class CoreTimeAgoPipe implements PipeTransform { | ||||
|     private logger: CoreLogger; | ||||
| 
 | ||||
|     constructor() { | ||||
|         this.logger = CoreLogger.getInstance('CoreTimeAgoPipe'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Turn a UNIX timestamp to "time ago". | ||||
|      * | ||||
|      * @param timestamp The UNIX timestamp (without milliseconds). | ||||
|      * @return Formatted time. | ||||
|      */ | ||||
|     transform(timestamp: string | number): string { | ||||
|         if (typeof timestamp == 'string') { | ||||
|             // Convert the value to a number.
 | ||||
|             const numberTimestamp = parseInt(timestamp, 10); | ||||
|             if (isNaN(numberTimestamp)) { | ||||
|                 this.logger.error('Invalid value received', timestamp); | ||||
| 
 | ||||
|                 return timestamp; | ||||
|             } | ||||
|             timestamp = numberTimestamp; | ||||
|         } | ||||
| 
 | ||||
|         return Translate.instance.instant('core.ago', {$a: moment(timestamp * 1000).fromNow(true)}); | ||||
|     } | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user