API Documentation

On GitHub

Utils API

NoFlo - Flow-Based Programming for JavaScript
(c) 2014-2017 Flowhub UG
NoFlo may be freely distributed under the MIT license
/* eslint-disable
    no-param-reassign,
    prefer-rest-params,
*/

Guess language from filename

/**
 * @param {string} filename
 * @returns {string}
 */
export function guessLanguageFromFilename(filename) {
  if (/.*\.coffee$/.test(filename)) { return 'coffeescript'; }
  if (/.*\.ts$/.test(filename)) { return 'typescript'; }
  return 'javascript';
}

/**
 * @param {Object} obj
 * @returns {boolean}
 */
export function isArray(obj) {
  if (Array.isArray) { return Array.isArray(obj); }
  return Object.prototype.toString.call(obj) === '[object Array]';
}

the following functions are from http://underscorejs.org/docs/underscore.html Underscore.js 1.8.3 http://underscorejs.org (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors Underscore may be freely distributed under the MIT license.

Returns a function, that, as long as it continues to be invoked, will not be triggered. The function will be called after it stops being called for N milliseconds. If immediate is passed, trigger the function on the leading edge, instead of the trailing.

/**
 * @param {Function} func
 * @param {number} wait
 * @param {boolean} [immediate]
 * @returns {Function}
 */
export function debounce(func, wait, immediate) {
  /** @type {any} */
  let timeout;
  /** @type {IArguments|null} */
  let args;
  /** @type {any} */
  let context;
  /** @type {number} */
  let timestamp;
  /** @type {any} */
  let result;

  function later() {
    const last = Date.now() - timestamp;
    if ((last < wait) && (last >= 0)) {
      timeout = setTimeout(later, wait - last);
    } else {
      timeout = null;
      if (!immediate) {
        result = func.apply(context, args);
        if (!timeout) {
          context = null;
          args = null;
        }
      }
    }
  }

  return function after() {
    context = this;
    args = arguments;
    timestamp = Date.now();
    const callNow = immediate && !timeout;
    if (!timeout) {
      timeout = setTimeout(later, wait);
    }
    if (callNow) {
      result = func.apply(context, args);
      context = null;
      args = null;
    }
    return result;
  };
}

This page contains documentation generated automatically from NoFlo's Utils.js file.