All files / libs/amalia-lang/formula/parsing/src/lib/formula-parser formulaOptions.ts

0% Statements 0/32
0% Branches 0/1
0% Functions 0/1
0% Lines 0/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33                                                                 
import { isNil } from 'lodash-es';

import { type VariableFormulaOptions } from '@amalia/amalia-lang/tokens/types';

export class FormulaOptions {
  public static hasFormulaOptions(formulaOptions: VariableFormulaOptions | null): formulaOptions is FormulaOptions {
    return !!(
      formulaOptions &&
      (this.hasConvertCurrencyFormulaOptions(formulaOptions.convertCurrency) ||
        this.hasRoundFormulaOptions(formulaOptions.round) ||
        this.hasDefaultFormulaOptions(formulaOptions.default))
    );
  }

  public static hasDefaultFormulaOptions(
    defaultFormulaOption: VariableFormulaOptions['default'],
  ): defaultFormulaOption is NonNullable<VariableFormulaOptions['default']> {
    return !isNil(defaultFormulaOption?.value);
  }

  public static hasConvertCurrencyFormulaOptions(
    convertCurrencyFormulaOption?: VariableFormulaOptions['convertCurrency'],
  ): convertCurrencyFormulaOption is NonNullable<VariableFormulaOptions['convertCurrency']> {
    return !!(convertCurrencyFormulaOption?.to && convertCurrencyFormulaOption.from);
  }

  public static hasRoundFormulaOptions(
    roundFormulaOption: VariableFormulaOptions['round'],
  ): roundFormulaOption is NonNullable<VariableFormulaOptions['round']> {
    return !isNil(roundFormulaOption?.precision);
  }
}