Core Library

EasyJS includes a optional core library that can be invocked with the use_mod builtin.

builtins.ej

Includes helpful builtin functions for ease of use.

int_range

This method is used to create a range from var..var in easyjs.

export fn int_range(start, end) {
    var res = []
    // the .. works because this is a for loop...
    for i in start..end {
        res.push(i)
    }

    return res
}

sleep

export fn sleep(ms) {
    javascript{
        return new Promise(resolve => setTimeout(resolve, ms))
    }
}

range

/// Creates a range
export fn range(kwargs) {
    start = kwargs.start
    end = kwargs.end
    step = kwargs.step ?? 1

    javascript{
        return Array(Math.ceil((end - start) / step)).fill(start).map((x,y) => x + y * step)
    }
}

flat

/// Flatten a list in JS.
export fn flat(list) {
    javascript{
        return [...new Set(list)];
    }
}

capitalize

/// Capitalize a string
export fn capitalize(str) {
    return "${str.charAt(0).toUpperCase()}${str.slice(1)}"
}

merge

/// Merge 2 arrays
export fn merge(arr1, arr2, flatten) {
    var narr = [].concat(arr1, arr2)

    if flatten == true {
        return flat(narr)
    }

    return arr
}

reverse_string

/// Reverse a string
export reverse_string = fn(str) {return str.split("").reverse().join("")} 

easyjs_ascii

/// Get the EasyJS ASCII
export fn easyjs_ascii() {
    return "    ___       ___       ___       ___            ___       ___   
   /\\  \\     /\\  \\     /\\  \\     /\\__\\          /\\  \\     /\\  \\  
  /::\\  \\   /::\\  \\   /::\\  \\   |::L__L        _\\:\\  \\   /::\\  \\ 
 /::\\:\\__\\ /::\\:\\__\\ /\\:\\:\\__\\  |:::\\__\\      /\\/::\\__\\ /\\:\\:\\__\\
 \\:\\:\\/  / \\/\\::/  / \\:\\:\\/__/  /:;;/__/      \\::/\\/__/ \\:\\:\\/__/
  \\:\\/  /    /:/  /   \\::/  /   \\/__/          \\/__/     \\::/  / 
   \\/__/     \\/__/     \\/__/                              \\/__/  "
}

date.ej

In JS it is known that dates are hard to work with. The date module is ment to make it easier working with dates.

days_between_dates

/// Get the days between 2 dates
export days_between_dates = fn(d1, d2) { return Math.ceil(Math.abs(date1 - date2) / (1000 * 60 * 60 * 24)) }

get_week_day

/// Get the weekday of a date.
export get_week_day = fn(d) { return d.toLocaleString('en-US', {weekday: 'long'}) }

is_weekend

/// Is a date a weekend?
export is_weekend = fn(d) {return [5,6].indexOf(d.getDay()) != -1}