cardamom
Experimental Coffeescript Prelude
Last updated 7 years ago .
Repository · Original npm · Tarball · package.json
$ cnpm install cardamom 
SYNC missed versions from official npm registry.

Things are still changing. Fast.

Base

New-style Classes for CoffeeScript

Benefits:

  • Avoid the usage of 'name: =>' for bound-method declarations, which is inconsistent with the rest of CoffeeScript.
  • Decorators work flawlessly with bound methods.
  • Declarative syntax for methods, for more literate code.

Example:

class Foo extends Base

  @instance
    info:     -> "Foo.info:#{this}"
    toString: -> "<Foo>"
    clazz:    => "clazz:#{this}"  # fat arrow now binds to Foo.

  @class
    toString: -> "[class:Foo]"

  @static
    static:   -> "static:#{this}" # depends on how the function is invoked

class Bar extends Foo

  @instance
    info:     decorator -> "Bar.info:#{this}" # binding works even with decorators
    toString: -> "<Bar>"

  @class
    toString: -> "[class:Bar]"
    
f = new Foo()
f_info = f.info
f_static = f.static
console.log f.info()    # Foo.info:<Foo>
console.log f_info()    # Foo.info:<Foo>
console.log f.clazz()   # clazz:[class:Foo]
console.log f.static()  # static:<Foo>
console.log f_static()  # static:[object global]

b = new Bar()
b_info = b.info
console.log b.info()    # Bar.info:<Bar>
console.log b_info()    # Bar.info:<Bar>
console.log b.clazz()   # clazz:[class:Foo]

Fn

Allows the declaration of argument structure.

-   X     : any type. X is a placeholder for the argument name (not used)
-  {X}    : object type
-  "X"    : string type
-  X->    : function type
-     ?   : arg can be 'undefined'
- [    ]  : arg is optional (can be left out)

e.g.:

myfunc = Fn ' "name" [{options}?] callback-> ', (name, options, callback) ->

The name can be missing from the argument syntax, so the above is the same as...

myfunc = Fn ' "" [{}?] -> ', (foo, options, cb) ->

Missing arguments are always passed in as 'undefined'.

myfunc = Fn ' foo bar ', (foo, bar) -> console.log "#{foo} #{bar}"
myfunc('hello') # hello undefined

Extra arguments throw an error.

myfunc = Fn ' foo bar ', (foo, bar) -> console.log "#{foo} #{bar}"
myfunc('hello', 'coffee', 'donut') # throws error

Current Tags

  • 0.0.9-d                                ...           latest (7 years ago)

21 Versions

  • 0.0.9-d                                ...           7 years ago
  • 0.0.9-c                                ...           8 years ago
  • 0.0.9-b                                ...           8 years ago
  • 0.0.9                                ...           8 years ago
  • 0.0.8                                ...           8 years ago
  • 0.0.7-f                                ...           8 years ago
  • 0.0.7-e                                ...           8 years ago
  • 0.0.7-d                                ...           8 years ago
  • 0.0.7-c                                ...           8 years ago
  • 0.0.7-b                                ...           8 years ago
  • 0.0.7                                ...           8 years ago
  • 0.0.6-b                                ...           8 years ago
  • 0.0.6                                ...           8 years ago
  • 0.0.5                                ...           8 years ago
  • 0.0.4                                ...           8 years ago
  • 0.0.3                                ...           8 years ago
  • 0.0.2-b                                ...           8 years ago
  • 0.0.2-a                                ...           8 years ago
  • 0.0.2                                ...           8 years ago
  • 0.0.1                                ...           8 years ago
  • 0.0.0                                ...           8 years ago
Maintainers (1)
Downloads
Today 0
This Week 2
This Month 8
Last Day 0
Last Week 1
Last Month 5
Dependencies (1)
Dev Dependencies (0)
None
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |