All files / libs/amalia-lang/formula/evaluate/shared/src/functions/string/left index.ts

100% Statements 40/40
100% Branches 2/2
100% Functions 1/1
100% Lines 40/40

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 34 35 36 37 38 39 40 411x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import { AmaliaFunctionCategory, AmaliaFunctionKeys, type AmaliaFormula } from '@amalia/amalia-lang/formula/types';
import { assert } from '@amalia/ext/typescript';
 
import { AmaliaFunctionDefault } from '../../AmaliaFunction';
 
export const stringLeft = new AmaliaFunctionDefault<[string | null | undefined, number | undefined], string>({
  name: AmaliaFunctionKeys.LEFT,
  category: AmaliaFunctionCategory.STRING,
  nbParamsRequired: 1,
  description: 'Return the left part of a string based on a given number of characters',
 
  exec: (text, numChars) => {
    assert(text !== null && text !== undefined, `${AmaliaFunctionKeys.LEFT}: source string is null or undefined`);
 
    return text.toString().substring(0, numChars || 1);
  },
 
  params: [
    { name: 'string', description: 'String: variables, fields, properties, string' },
    { name: 'numChars', description: 'Number of characters to take, by default it is 1', defaultValue: '1' },
  ],
 
  examples: [
    {
      desc: 'Returns co.',
      formula: 'LEFT("commission", 2)' as AmaliaFormula,
      result: 'co',
    },
    {
      desc: 'Returns c.',
      formula: 'LEFT("commission")' as AmaliaFormula,
      result: 'c',
    },
    {
      desc: 'Returns commission.',
      formula: 'LEFT("commission", 24)' as AmaliaFormula,
      result: 'commission',
    },
  ],
});