simple-squiggle

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

column.transform.js (1228B)


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