/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';
import {DecimalPipe} from '@angular/common';

@Pipe({
  name: 'displayFimsFinancialNumber',
  pure: true
})
export class DisplayFimsFinancialNumber extends DecimalPipe implements PipeTransform {

  constructor(@Inject(LOCALE_ID) private locale: string) {
    super(locale);
  }

  transform(value: any, digits: string = '1.2-2'): string {
    const transformed = super.transform(value, digits);

    if (transformed.indexOf('-') === 0) {
      return `(${transformed.substr(1, transformed.length)})`;
    }

    return transformed;
  }
}
