RedScript, a Ruby Flavored Superset Language


RedScript was created to provide a better syntax for AMD modules and to provide a few aliases to make things a bit nicer to work with.

It was also created as a side project to learn more about Node, NPM Modules and Regular Expressions. In the future I would also like to add a lexer/parser to implement more advanced features (feel free to fork!).

I would also like to let JavaScript's prototype goodness shine through by adding conviences and syntax to make working with straight objects and prototypes easier than using faux classes and constructors.

  • Better syntax for AMD modules
  • Better object inheritence
  • Easier ES5 object litterals
  • Alias { } with do end
  • Alias is, isnt, and, or with ===, !==, &&, ||
  • Arrow function
  • More explicet object literals
  • Define object methods with def keyword

Once I have a solid parser/lexer, I would like to implement:

  • optional parens
  • no var declarations (e.g. coffeescript/ruby/python)
  • possibly optional type checking? not sure how useful it would be
# define an anonymous AMD module & require deps    // # define an anonymous AMD module & require deps 
define module                                        define(
require 'jquery' as $                                ["jquery","./libs/toolbox","backbone"]function($,_,Backbone) {
require './libs/toolbox' as tb
require 'backbone' as Backbone                       
# do stuff                                           // do stuff 
export {                                              return {
  methodName: funcName                                 methodName: funcName
  methodName: funcName                                 methodName: funcName 
}                                                     }       
# define an anonymous AMD module and require dependancies 
define module
require 'jquery' as $
require './utils/toolbox' as tb
function sayHello () {
  $('body').html('Hello World!');
# Arrow function in a callback 
fs.readFile('/etc/passwd'(err, data) ->
  if (err) throw err;
# Alias @ with this. 
define module
require 'jquery' as $
require './myFile' as baz
# Func alias 
func sayHello () {
# alias { } with do end 
func sayHello(msg) do
# Private blocks 
foo = 200
  foo = 10
alert foo  # alerts 200 
# Arrow function, great for parameters 
mbtn.on 'click'->
  $('.widget').slideToggle "slow"
# Paren free if/for/while 
while foo is 200 do
  console.log "I'm looping forever"

See more syntax examples on RedScript's website (coming soon)