simple-squiggle

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

replacer.js (1069B)


      1 "use strict";
      2 
      3 Object.defineProperty(exports, "__esModule", {
      4   value: true
      5 });
      6 exports.createReplacer = void 0;
      7 
      8 var _factory = require("../utils/factory.js");
      9 
     10 var name = 'replacer';
     11 var dependencies = [];
     12 var createReplacer = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function () {
     13   /**
     14    * Stringify data types into their JSON representation.
     15    * Most data types can be serialized using their `.toJSON` method,
     16    * but not all, for example the number `Infinity`. For these cases you have
     17    * to use the replacer. Example usage:
     18    *
     19    *     JSON.stringify([2, Infinity], math.replacer)
     20    *
     21    * @param {string} key
     22    * @param {*} value
     23    * @returns {*} Returns the replaced object
     24    */
     25   return function replacer(key, value) {
     26     // the numeric values Infinitiy, -Infinity, and NaN cannot be serialized to JSON
     27     if (typeof value === 'number' && (!isFinite(value) || isNaN(value))) {
     28       return {
     29         mathjs: 'number',
     30         value: String(value)
     31       };
     32     }
     33 
     34     return value;
     35   };
     36 });
     37 exports.createReplacer = createReplacer;