Utility functions

function O.deduplicateArrayOfRefs(array)

Given an array-like object containing Ref or StoreObject objects, return a de-duplicated list of Ref objects.

This function guarantees the following properties. You must not rely on any other behaviour.

  • Order is preserved.
  • If a Ref value appears more than once in the input array, the output array will contain a single Ref of that value in the position equivalent to the lowest index.
  • The returned array will only contain Ref objects.
  • If an entry in the input array is a StoreObject, the returned array will return the corresponding Ref.
  • undefined and null values in the input array are ignored, and therefore will not be included in the output array.
  • While the array may contain the exact Ref objects which appeared in the input array, only equivalence is guaranteed.
  • A new array is returned, and the caller may modify that array.
  • If array is undefined or null, an empty array is returned.
  • An exception will be thrown if the input array contains an object of an unexpected type.

function O.interpolateString(string, inserts)

Replace occurrences of {property} within string with the corresponding property from inserts.

  let s = O.interpolateString("Hello {name}, it's {day}.", {
    name: "world",
    day: "Tuesday"
  // s === "Hello world, it's Tuesday"

This is often useful for translating text in plugins.