simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

concat.transform.js (1275B)


      1 import { isBigNumber, isNumber } from '../../utils/is.js';
      2 import { errorTransform } from './utils/errorTransform.js';
      3 import { factory } from '../../utils/factory.js';
      4 import { createConcat } from '../../function/matrix/concat.js';
      5 var name = 'concat';
      6 var dependencies = ['typed', 'matrix', 'isInteger'];
      7 export var createConcatTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
      8   var {
      9     typed,
     10     matrix,
     11     isInteger
     12   } = _ref;
     13   var concat = createConcat({
     14     typed,
     15     matrix,
     16     isInteger
     17   });
     18   /**
     19    * Attach a transform function to math.range
     20    * Adds a property transform containing the transform function.
     21    *
     22    * This transform changed the last `dim` parameter of function concat
     23    * from one-based to zero based
     24    */
     25 
     26   return typed('concat', {
     27     '...any': function any(args) {
     28       // change last argument from one-based to zero-based
     29       var lastIndex = args.length - 1;
     30       var last = args[lastIndex];
     31 
     32       if (isNumber(last)) {
     33         args[lastIndex] = last - 1;
     34       } else if (isBigNumber(last)) {
     35         args[lastIndex] = last.minus(1);
     36       }
     37 
     38       try {
     39         return concat.apply(null, args);
     40       } catch (err) {
     41         throw errorTransform(err);
     42       }
     43     }
     44   });
     45 }, {
     46   isTransformFunction: true
     47 });