public
Last active

CoffeeScript to JSON script for OS X

  • Download Gist
coffeetojson.sh
Shell
1
coffee --print --compile $1.coffee | sed '1s/^.//' | sed 's/ });/}/' | sed "s/\([^ '\"].*[^ '\"]\):/\"\1\":/" > $1.json

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.)

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);

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.

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 \}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.