From fa4c81071d8aa2225e8edb6a7531cabe84f52b74 Mon Sep 17 00:00:00 2001 From: Rasmus Erik Voel Jensen Date: Sat, 2 Mar 2013 12:27:10 +0100 Subject: [PATCH 1/4] Literate CoffeeScript support. Added support for extension .litcoffee (and updated tests and documentation). --- docs/client/packages/coffeescript.html | 3 +- packages/coffeescript/coffeescript_tests.js | 3 ++ .../litcoffeescript_tests.litcoffee | 6 +++ packages/coffeescript/package.js | 42 ++++++++++--------- 4 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 packages/coffeescript/litcoffeescript_tests.litcoffee diff --git a/docs/client/packages/coffeescript.html b/docs/client/packages/coffeescript.html index 3f24ce8c54..ce1ee8f46e 100644 --- a/docs/client/packages/coffeescript.html +++ b/docs/client/packages/coffeescript.html @@ -8,7 +8,8 @@ code compiles one-to-one into the equivalent JS, and there is no interpretation at runtime. CoffeeScript is supported on both the client and the server. Files -ending with `.coffee` are automatically compiled to JavaScript. +ending with `.coffee` or `.litcoffee` are automatically compiled to +JavaScript. See for more information. diff --git a/packages/coffeescript/coffeescript_tests.js b/packages/coffeescript/coffeescript_tests.js index 79193dc27a..631675042e 100644 --- a/packages/coffeescript/coffeescript_tests.js +++ b/packages/coffeescript/coffeescript_tests.js @@ -1,4 +1,7 @@ Tinytest.add("coffeescript - presence", function(test) { test.isTrue(Meteor.__COFFEESCRIPT_PRESENT); }); +Tinytest.add("literate coffeescript - presence", function(test) { + test.isTrue(Meteor.__LITCOFFEESCRIPT_PRESENT); +}); diff --git a/packages/coffeescript/litcoffeescript_tests.litcoffee b/packages/coffeescript/litcoffeescript_tests.litcoffee new file mode 100644 index 0000000000..48b0bd9ee3 --- /dev/null +++ b/packages/coffeescript/litcoffeescript_tests.litcoffee @@ -0,0 +1,6 @@ +This file is just the same as `coffeescript_tests.coffee`, first we set a +property, which we check for in `coffeescript_tests.js`, and then a trivial +testcase. + + Meteor.__LITCOFFEESCRIPT_PRESENT = true + Tinytest.add "literate coffeescript - compile", (test) -> test.isTrue true diff --git a/packages/coffeescript/package.js b/packages/coffeescript/package.js index a1a1440420..40c606198c 100644 --- a/packages/coffeescript/package.js +++ b/packages/coffeescript/package.js @@ -4,30 +4,32 @@ Package.describe({ var coffee = require('coffee-script'); var fs = require('fs'); +var path = require('path'); -Package.register_extension( - "coffee", function (bundle, source_path, serve_path, where) { - serve_path = serve_path + '.js'; +function coffeescript_handler(bundle, source_path, serve_path, where) { + serve_path = serve_path + '.js'; - var contents = fs.readFileSync(source_path); - var options = {bare: true, filename: source_path}; - try { - contents = coffee.compile(contents.toString('utf8'), options); - } catch (e) { - return bundle.error(e.message); - } - - contents = new Buffer(contents); - bundle.add_resource({ - type: "js", - path: serve_path, - data: contents, - where: where - }); + var contents = fs.readFileSync(source_path); + var options = {bare: true, filename: source_path, literate: path.extname(source_path) === '.litcoffee'}; + try { + contents = coffee.compile(contents.toString('utf8'), options); + } catch (e) { + return bundle.error(e.message); } -); + + contents = new Buffer(contents); + bundle.add_resource({ + type: "js", + path: serve_path, + data: contents, + where: where + }); +} + +Package.register_extension("coffee", coffeescript_handler); +Package.register_extension("litcoffee", coffeescript_handler); Package.on_test(function (api) { - api.add_files(['coffeescript_tests.coffee', 'coffeescript_tests.js'], + api.add_files(['coffeescript_tests.coffee', 'litcoffeescript_tests.litcoffee', 'coffeescript_tests.js'], ['client', 'server']); }); From 898f552f293a71872f1a461d80f092caca719a66 Mon Sep 17 00:00:00 2001 From: Rasmus Erik Voel Jensen Date: Sat, 2 Mar 2013 20:55:45 +0100 Subject: [PATCH 2/4] CoffeeScript v1.5.0 in generate-dev-bundle.sh + style fix in coffeescript-package --- admin/generate-dev-bundle.sh | 2 +- packages/coffeescript/package.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/generate-dev-bundle.sh b/admin/generate-dev-bundle.sh index 6f7697d5ed..453ba01b4a 100755 --- a/admin/generate-dev-bundle.sh +++ b/admin/generate-dev-bundle.sh @@ -79,7 +79,7 @@ which npm cd "$DIR/lib/node_modules" npm install connect@1.9.2 # not 2.x yet. sockjs doesn't work w/ new connect npm install optimist@0.3.5 -npm install coffee-script@1.4.0 +npm install coffee-script@1.5.0 npm install less@1.3.3 npm install stylus@0.30.1 npm install nib@0.8.2 diff --git a/packages/coffeescript/package.js b/packages/coffeescript/package.js index 40c606198c..f1c975d4ad 100644 --- a/packages/coffeescript/package.js +++ b/packages/coffeescript/package.js @@ -6,7 +6,7 @@ var coffee = require('coffee-script'); var fs = require('fs'); var path = require('path'); -function coffeescript_handler(bundle, source_path, serve_path, where) { +var coffeescript_handler = function(bundle, source_path, serve_path, where) { serve_path = serve_path + '.js'; var contents = fs.readFileSync(source_path); From fde627cc3418138e5fbc0aff23ceef37a7b330c0 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Sat, 2 Mar 2013 18:49:57 -0800 Subject: [PATCH 3/4] Increment dev bundle. --- admin/generate-dev-bundle.sh | 2 +- meteor | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/admin/generate-dev-bundle.sh b/admin/generate-dev-bundle.sh index 453ba01b4a..99f9ead347 100755 --- a/admin/generate-dev-bundle.sh +++ b/admin/generate-dev-bundle.sh @@ -3,7 +3,7 @@ set -e set -u -BUNDLE_VERSION=0.2.20 +BUNDLE_VERSION=0.2.21 UNAME=$(uname) ARCH=$(uname -m) diff --git a/meteor b/meteor index d54264e098..d0866cc412 100755 --- a/meteor +++ b/meteor @@ -1,6 +1,6 @@ #!/bin/bash -BUNDLE_VERSION=0.2.20 +BUNDLE_VERSION=0.2.21 # OS Check. Put here because here is where we download the precompiled # bundles that are arch specific. From b520c171424e90caba8fb8a4e885c3e3508a8637 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Sat, 2 Mar 2013 21:10:01 -0800 Subject: [PATCH 4/4] History.md updates for litcoffee --- History.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/History.md b/History.md index 74e580f04b..832904c823 100644 --- a/History.md +++ b/History.md @@ -5,6 +5,9 @@ * Removed all restrictions on EJSON types in MongoDB, even user-defined ones. +* `coffeescript` package: Support literate Coffeescript files with the extension + `.litcoffee`. + * Fixed bug where an empty `fields` object was sometimes passed to a `changed` callback of `Cursor.observeChanges`.