anchor.diff:  +makeExample('pipes/ts/app/random-pipe.component.ts', 'pipe','app/random-pipe.component.ts (pipe)')(format='.')
   :marked
     When the input changes, it outputs a new value albeit never the same value for the same input.
  -  
  +
     Remember *purity in a pipe has nothing to do with pure functions!*
  -  
  +
     *Pipe purity* is more about the purity of the input values than of the pipe itself.
   
   .l-main-section
  
positive.code: +makeExample('pipes/ts/app/app.component.html', 'chained-parameter-birthday')(format=".")
  
  :marked
    We can add parentheses to alter the evaluation order or 
    to provide extra clarity:
  +makeExample('pipes/ts/app/app.component.html', 'chained-parameter-birthday-parens')(format=".")
  
  
negative.code: +makeExample('pipes/ts/app/exponential-strength.pipe.ts', null, 'app/exponential-strength.pipe.ts')(format=".")
  :marked
    This pipe definition reveals several key points
  
    * A pipe is a class decorated with pipe metadata.
  
    * The pipe class implements the `PipeTransform` interface's `transform` method that
    accepts an input value and an optional array of parameters and returns the transformed value.
  
    * There will be one item in the parameter array for each parameter passed to the pipe
  
    * We tell Angular that this is a pipe by applying the
    `@Pipe` decorator which we import from the core Angular library.
  
    * The `@Pipe` decorator takes an object with a name property whose value is the
       pipe name that we'll use within a template expression. It must be a valid JavaScript identifier.
       Our pipe's name is `exponentialStrength`.
  