Skip to content

Instantly share code, notes, and snippets.

@jenya239
Created January 21, 2020 22:20
Show Gist options
  • Save jenya239/78b7c819ee8e93490d7d384a204c44bf to your computer and use it in GitHub Desktop.
Save jenya239/78b7c819ee8e93490d7d384a204c44bf to your computer and use it in GitHub Desktop.
modules ={}
for id in 'fs path vm coffeescript' .split ' '
modules[ id ] =require id
exports =
read: ( file )->
unless file[ 0 ] =='/'
file =modules .path .join( __dirname, file )
modules .fs .readFileSync file, 'utf8'
compile: ( coffee, file )->
options = inlineMap: false, sourceMap: true, bare: true, header: false, filename: file
res =modules .coffeescript .compile coffee, options
res .js
evaluate: ( js, filename ='', lineOffset =0, columnOffset =0 )->
modules .vm .runInThisContext js, { filename, lineOffset, columnOffset }
get_wrapper: ( id, args, set_exports =true )->
file =id + '.coffee'
str =@read( file ) .replace( /\n/g, "\n\t" )
coffee =if set_exports
"( #{ args } )->\n\texports ={}\n\t#{ str }\n\texports"
else
"( #{ args } )->\n\t#{ str }"
js =@compile coffee, file
@evaluate js, file#, 1, 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment