Skip to content

Instantly share code, notes, and snippets.

@nerdfiles
Last active December 21, 2015 22:26
Show Gist options
  • Select an option

  • Save nerdfiles/faa6a7ab13552380f044 to your computer and use it in GitHub Desktop.

Select an option

Save nerdfiles/faa6a7ab13552380f044 to your computer and use it in GitHub Desktop.
class TextSaver
constructor: (@filename, @options) ->
@q = require 'Q'
save: (data) ->
def = @q.defer()
def.resolve data
def.promise
class CloudSaver extends TextSaver
constructor: (@filename, @options) ->
super @filename, @options
save: (data) ->
def = @q.defer()
$( =>
$.post "#{@options.url}/#{@filename}", data, =>
def.resolve "Saved '#{data}' to #{@filename} at #{@options.url}."
, =>
def.reject false
)
def.promise
class FileSaver extends TextSaver
constructor: (@filename, @options) ->
super @filename, @options
@fs = require 'fs'
save: (data) ->
def = @q.defer()
@fs.writeFile @filename, data, (err) =>
if err? then def.reject err
else def.resolve "Saved '#{data}' to #{@filename} in #{@options.directory}."
def.promise
filename = "temp.txt"
data = "Example data"
saver = if window?
new CloudSaver filename, url: 'http://localhost' # => Saved "Example data" to temp.txt at http://localhost
else if root?
new FileSaver filename, directory: './' # => Saved "Example data" to temp.txt in ./
init = () ->
saver.save(data).then (d) ->
console.log d
return
init()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment