simple-squiggle

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

objects.js (961B)


      1 // objects
      2 
      3 // load math.js (using node.js)
      4 const { evaluate, format } = require('..')
      5 
      6 // create an object. Keys can be symbols or strings
      7 print(evaluate('{x: 2 + 1, y: 4}')) // {"x": 3, "y": 4}
      8 print(evaluate('{"name": "John"}')) // {"name": "John"}
      9 
     10 // create an object containing an object
     11 print(evaluate('{a: 2, b: {c: 3, d: 4}}')) // {"a": 2, "b": {"c": 3, "d": 4}}
     12 
     13 const scope = {
     14   obj: {
     15     prop: 42
     16   }
     17 }
     18 
     19 // retrieve properties using dot notation or bracket notation
     20 print(evaluate('obj.prop', scope)) // 42
     21 print(evaluate('obj["prop"]', scope)) // 42
     22 
     23 // set properties (returns the whole object, not the property value!)
     24 print(evaluate('obj.prop = 43', scope)) // 43
     25 print(evaluate('obj["prop"] = 43', scope)) // 43
     26 print(scope.obj) // {"prop": 43}
     27 
     28 /**
     29  * Helper function to output a value in the console. Value will be formatted.
     30  * @param {*} value
     31  */
     32 function print (value) {
     33   const precision = 14
     34   console.log(format(value, precision))
     35 }