/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */

import {Attribute, Component, Directive, Pipe} from '@angular/core';

class CustomDirective {}

// #docregion component
@Component({selector: 'greet', template: 'Hello {{name}}!'})
class Greet {
  name: string = 'World';
}
// #enddocregion

// #docregion attributeFactory
@Component({selector: 'page', template: 'Title: {{title}}'})
class Page {
  title: string;
  constructor(@Attribute('title') title: string) {
    this.title = title;
  }
}
// #enddocregion

// #docregion attributeMetadata
@Directive({selector: 'input'})
class InputAttrDirective {
  constructor(@Attribute('type') type: string) {
    // type would be 'text' in this example
  }
}
// #enddocregion

// #docregion directive
@Directive({selector: 'input'})
class InputDirective {
  constructor() {
    // Add some logic.
  }
}
// #enddocregion

// #docregion pipe
@Pipe({name: 'lowercase'})
class Lowercase {
  transform(v: string, args: any[]) {
    return v.toLowerCase();
  }
}
// #enddocregion
