Skip to content

Instantly share code, notes, and snippets.

@aral
Created November 13, 2011 16:14
Show Gist options
  • Save aral/1362273 to your computer and use it in GitHub Desktop.
Save aral/1362273 to your computer and use it in GitHub Desktop.
CoffeeScript to JSON script for OS X
coffee --print --compile $1.coffee | sed '1s/^.//' | sed 's/ });/}/' | sed "s/\([^ '\"].*[^ '\"]\):/\"\1\":/" > $1.json
@aral
Copy link
Author

aral commented Nov 13, 2011

Converts a CoffeeScript data structure into valid JSON (simply removes the additional parentheses that the compiler adds to the start and end of the data structure.)

@jbilcke
Copy link

jbilcke commented Nov 21, 2011

hmm it seems to have changed a little bit, when I run it on my node:

$ cat foo.coffee
foo: "bar"

$ ./coffee2js foo

$ cat foo.json
function() {
({
"foo": "bar"
}
}).call(this);

@wlaurance
Copy link

coffee --print --bare $1.coffee | sed '1s/&.//' | sed 's/});/}/' | sed 's/({/{/' | sed "s/\([^ '\"].*[^ '\"]\): /\"\1\": /1" > $1.json

Try this. Note the spaces after :
I have URLS as values and this was causing it to put quotes around part of it. The space after : fixed this.

@onetom
Copy link

onetom commented Nov 28, 2013

With a bit more simplification and handling the input both from stdin and from a file name parameter:

#!/bin/sh
echo \{
    cat $1 | \
    coffee --print --bare --compile --stdio | \
    sed -e '1,2d; $d' | \
    sed "s/\([^ '\"].*[^ '\"]\): /\"\1\": /"
echo \}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment