Hone logo
Hone
Problems

Implementing a Pure Pipe in Angular

Angular pipes provide a way to transform data in your templates. This challenge focuses on creating a custom, pure pipe in Angular. Pure pipes are efficient because they only re-evaluate when their input changes, optimizing performance.

Problem Description

You are tasked with creating a pure Angular pipe named ReverseStringPipe that reverses a given string. The pipe should take a string as input and return its reversed version. The pipe must be a pure pipe, meaning it should only re-evaluate when the input string changes. This is crucial for performance, preventing unnecessary computations when the input remains the same.

Key Requirements:

  • Create a new Angular pipe named ReverseStringPipe.
  • The pipe should accept a single string argument.
  • The pipe should return the reversed version of the input string.
  • The pipe must be a pure pipe.
  • Handle null or undefined input gracefully (return null or undefined respectively).
  • Handle empty string input gracefully (return an empty string).

Expected Behavior:

When the input string changes, the pipe should re-evaluate and return the reversed version of the new string. When the input string remains the same, the pipe should return the previously computed reversed string without re-evaluating.

Edge Cases to Consider:

  • null or undefined input.
  • Empty string input.
  • Strings with special characters (e.g., Unicode characters, emojis).
  • Very long strings (consider potential performance implications, though this is less critical for a simple pipe).

Examples

Example 1:

Input: "hello"
Output: "olleh"
Explanation: The input string "hello" is reversed to produce "olleh".

Example 2:

Input: "Angular"
Output: "ragnaL"
Explanation: The input string "Angular" is reversed to produce "ragnaL".

Example 3:

Input: null
Output: null
Explanation:  Handles null input gracefully by returning null.

Example 4:

Input: ""
Output: ""
Explanation: Handles empty string input gracefully by returning an empty string.

Constraints

  • The pipe must be implemented in TypeScript.
  • The pipe must be a pure pipe (no pure: false in the decorator).
  • The pipe should be efficient and avoid unnecessary computations.
  • The pipe should handle all valid string inputs correctly.

Notes

  • Remember that pure pipes are automatically cached by Angular. This means that if the input hasn't changed, the pipe will return the cached value.
  • Consider using the spread operator (...) or Array.from() to convert the string into an array of characters for easier reversal.
  • Focus on creating a clean, readable, and efficient implementation. The primary goal is to demonstrate understanding of pure pipes and their behavior.
  • You'll need to create a new Angular project or module to implement and test this pipe. The challenge focuses solely on the pipe's logic.
Loading editor...
typescript