Agregué una sección a la wiki de coffeescript sobre cómo manejar el espacio de nombres Es bastante elegentPackage (creo)
https://github.com/jashkenas/coffee-script/wiki/Easy-modules-with-coffeescript
CoffeeScript no tiene un sistema de módulo nativo por encima de la de rodear todos los archivos de código fuente en una función anónima. Sin embargo, con un truco simple puedes tener módulos que son la envidia de Ruby. defino mis módulos como el de abajo
@module "foo", ->
@module "bar", ->
class @Amazing
toString: "ain't it"
La implementación del módulo de ayudante es
window.module = (name, fn)->
if not @[name]?
this[name] = {}
if not @[name].module?
@[name].module = window.module
fn.apply(this[name], [])
que puede poner en otro archivo de origen si lo desea. A continuación, puede acceder a sus clases por módulos de espacios de nombres
x = new foo.bar.Amazing
WRT a su problema Creo que el jazmín continuación spec responder a ella usando mi sistema de módulos
@module "test", ->
hidden = 10
@open = hidden
describe "test", ->
it "has no hidden", ->
expect(test.hidden?).toEqual false
it "has open", ->
expect(test.open?).toEqual true
"que existe principalmente para capturar valores en bucles"
matyr
Matyr, ¿puedes explicar eso? La palabra clave do parece que captura valores en un ámbito local para mí. – Geoff
@matyr No fue el propósito de 'do' cuando inicialmente lo propusiste, pero ciertamente es la razón por la cual Jeremy (de mala gana) lo agregó a CoffeeScript. Ver [problema 959] (https://github.com/jashkenas/coffee-script/issues/959). También es el único contexto en el que 'do' aparece en [documentos oficiales] (http://jashkenas.github.com/coffee-script/#loops). –