Instantly share code, notes, and snippets.
CreatedAugust 31, 2012 20:57
Save cowboy/3558882 to your computer and use it in GitHub Desktop.
Abstraction.js "Lite" (live-coded at BrazilJS 2012)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
/* | |
* Abstraction.js "Lite" | |
* | |
* Copyright (c) 2012 "Cowboy" Ben Alman | |
* Licensed under the MIT license. | |
* http://benalman.com/about/license/ | |
*/ | |
var$elseif,$else; | |
var$if=function(state){ | |
varnop=function(){}; | |
varexec=function(fn){fn()}; | |
if(state){ | |
$elseif=function(){returnnop;}; | |
$else=nop; | |
returnexec; | |
}else{ | |
$elseif=$if; | |
$else=exec; | |
returnnop; | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
// Why log now when we can log later? | |
varconsole$log=function(arg){ | |
returnfunction(){ | |
console.log(arg); | |
}; | |
}; | |
// Valid JavaScript | |
$if(true)( | |
console$log("1") | |
) | |
$elseif(true)( | |
console$log("shouldn't log a") | |
) | |
$else( | |
console$log("shouldn't log b") | |
) | |
$if(false)( | |
console$log("shouldn't log c") | |
) | |
$elseif(true)( | |
console$log("2") | |
) | |
$elseif(true)( | |
console$log("shouldn't log d") | |
) | |
$elseif(false)( | |
console$log("shouldn't log e") | |
) | |
$else( | |
console$log("shouldn't log f") | |
) | |
$if(false)( | |
console$log("shouldn't log g") | |
) | |
$elseif(false)( | |
console$log("shouldn't log h") | |
) | |
$else( | |
console$log("3") | |
) | |
// Logs: | |
// 1 | |
// 2 | |
// 3 |
Also see the original,Abstraction.js.
hkdobrev commentedSep 2, 2012
OMG
TheEskhaton commentedOct 16, 2013
well this completely blew my mind
ryasmi commentedOct 16, 2013
@cowboy if the whole language could be written this way and macros were implemented, I think this could be awesome. JavaScript could consist of a small set of functions and really simple syntax.
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment