1.10.0-reflective.114 • Published 8 years ago

reflective-coffeescript v1.10.0-reflective.114

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago
        {                    _||          |  _)
     }   }   {        _|-_)  _||  -_)  _|  _| |\ \ / -_)
    {   {  }  }     _|\___|_| _|\___|\__|\__|_| \_/\___|
     }   }{  {
    {  }{  }  }                    _____       __  __
   ( }{ }{  { )                   / ____|.... / _|/ _|
 .- { { }  { }} -.              .| |     ___ | |_| |_ ___  ___
(  ( } { } { } }  )            ( | |    / _ \|  _|  _/ _ \/ _ \
|`-.._________..-'|            |'| |___| (_) | | | ||  __/  __/
|                 |            |  \_____\___/|_| |_| \___|\___|
|                 ;--.      .--:                 :
|                (__  \    /  __)  _____         : _       _
|                 | )  )  (  ( |  / ____|        :(_)     | |
|                 |/  /    \  \| | (___   ___ _ __ _ _ __ | |_
|                 /  /      \  \  \___ \ / __| '__| | '_ \| __|
|                 _/          \_  ____) | (__| | :| | |_) | |_
|                 |            | |_____/ \___|_| :|_| .__/ \__|
 `-.._________..-'              `-.._________..-'   | |
                                                    |_|

This experimental fork adds reflective features to Coffeescript

Reflective CoffeeScript aims to be fully compatible with the upstream, vanilla CoffeeScript.

Features added to reflective-coffeescript:

  • Reflective function

    The syntax @> introduces reflective functions:

    square = (x) @> x * x

    Reflective functions work similarly to standard CoffeeScript functions:

    square(2) is 4

    but have their own CoffeeScript source code as a property:

    square.coffee is "(x) @> x * x"

    Reflective functions can only access 'this' and arguments.

    Attempting to access a global variable or a lexical variable defined in an outer scope will result in a compiler error.

    x = 1 @> x # Compiler error

    As an automatic extra feature, the 'do @>' syntax can be used to fully isolate the lexical scope of a block of code.

    x = 1 x = 1 do -> x = 2 do @> x = 2 console.log x # prints 2 console.log x # prints 1

    x = 1 x = 1 do @> do (x) @> x = x 3 x = x 3

    #   ^-- compiler error      console.log x  # prints 3
                              console.log x    # prints 1

    Additional ideas are included in ROADMAP.org

    Licensing and Copyright status

    The original CoffeeScript is:

    Copyright (c) 2009-2013 Jeremy Ashkenas

    The Reflection-related modifications are:

    Copyright (c) 2013,2014 Michele Bini

    Please consult LICENSE for licensing details and about the lack of explicit or implied warranty.

    CoffeeScript's README content follows:

If you have the node package manager, npm, installed:

npm install -g coffee-script

Leave off the -g if you don't wish to install globally. If you don't wish to use npm:

git clone https://github.com/jashkenas/coffeescript.git
sudo coffeescript/bin/cake install

Getting Started

Execute a script:

coffee /path/to/script.coffee

Compile a script:

coffee -c /path/to/script.coffee

For documentation, usage, and examples, see: http://coffeescript.org/

To suggest a feature or report a bug: http://github.com/jashkenas/coffeescript/issues

If you'd like to chat, drop by #coffeescript on Freenode IRC.

The source repository: https://github.com/jashkenas/coffeescript.git

Changelog: http://coffeescript.org/#changelog

Our lovely and talented contributors are listed here: http://github.com/jashkenas/coffeescript/contributors