Skip to content

Instantly share code, notes, and snippets.

THIS DOCUMENTATION IS CURRENTLY WORK IN PROGRESS!

lively.lang Build Status

What? This project packages abstractions for JavaScript that proved to be useful in the Lively Web project. On first glance it might seem to be just another underscore.js library but apart from extensions to existing JavaScript objects and classes it also provides abstractions for asynchronous code, new object representations, and functions for inspecting JavaScript objects.

@rksm
rksm / gist:562cd712cf843080cf4c
Created August 4, 2014 01:35
Conditional call in Macro with gensym binding
(defmacro foo
[& [fn]]
`(let [env# 123]
~(when fn `(~fn env#))))
;; then expanded form of env does not match:
(macroexpand '(foo identity)) ;=> (let* [env__17699__auto__ 123] (identity env__17698__auto__))
@rksm
rksm / jsPathSplitter.js
Last active August 29, 2015 13:57
Parse a JS object path
function jsPathSplitter(string) {
// STRING -> [STRING]
// ex: 'foo["bar"].x[0] -> ['foo', 'bar', x, '0']'
// for convenience even allows non-javascripty identifiers like foo.0.bar
return (function splitter(index, string, parts, term) {
if (string.length === 0) return parts;
if (index >= string.length) return parts.concat([string]);
if (string[index] === '\\') return splitter(index+2, string, parts, term); // escape char
var newTerm, skip = 0;
@rksm
rksm / gist:8037313
Created December 19, 2013 10:35
Lively localconfig for VWF prototype
var c = lively.Config;
c.set('lively2livelyAutoStart', false);
c.set('lively2livelyEnableConnectionIndicator', false);
c.set('removeDOMContentBeforeWorldLoad', false);
c.set('manuallyCreateWorld', true);
c.set('changesetsExperiment', false);
// FIXME, for compatibility with requirejs
lively.whenLoaded(function() {
setTimeout(function() {
.World {
background-color: rgb(187, 180, 188);
}
.Window {
background-color: rgb(197, 200, 198);
box-shadow: none;
border-radius: 3px;
border: 1px solid rgb(220, 220, 220);
}
@rksm
rksm / npmDo
Created June 4, 2013 02:25
using npm programmatically
function withNPMDirDo(func) {
exec('npm bin -g', function(code, out, err) {
var npmBinDir = String(out).trim(),
npmlibDir = path.join(npmBinDir, '..', 'lib', 'node_modules', 'npm');
func(null, npmlibDir);
});
}
npmDo = function npmDo(/*command, orgs..., callback*/) {
var args = Array.prototype.slice.call(arguments),