concat.transform.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. return typed('concat', {
  26. '...any': function any(args) {
  27. // change last argument from one-based to zero-based
  28. var lastIndex = args.length - 1;
  29. var last = args[lastIndex];
  30. if (isNumber(last)) {
  31. args[lastIndex] = last - 1;
  32. } else if (isBigNumber(last)) {
  33. args[lastIndex] = last.minus(1);
  34. }
  35. try {
  36. return concat.apply(null, args);
  37. } catch (err) {
  38. throw errorTransform(err);
  39. }
  40. }
  41. });
  42. }, {
  43. isTransformFunction: true
  44. });