dormouse
Version:
Javascript API for Dormouse
50 lines (43 loc) • 1.12 kB
text/coffeescript
# Utils to simplify detecting types and stuff
# Just one requirement
_ = require 'underscore'
# Trick to namespace a functional module
libutils = exports
libutils.isEmpty = (obj) ->
for own prop of obj
return false
return true
libutils.isArray = (obj) ->
return obj instanceof Array
libutils.toArray = (array_like) ->
return Array.prototype.slice.call array_like
# Append key, value pairs from an object in querystring form on the url
#
# Format of urlObj:
#
# {
# path: '/some/relative/path' [no host]
# query: javascript object to append as params
# }
#
libutils.formatUrl = (urlObj) ->
query = urlObj.query || {}
sep = '&'
eq = '='
pairs = _.map query, (value, key) ->
return encodeURIComponent(key) + eq + encodeURIComponent(value)
qs = pairs.join sep
url = urlObj.path || '/'
# strip off anchor #..
if url.match /#/
url = url.substr 0, url.indexOf '#'
# append querystring
if qs.length > 0
if url.match /\?/
url += sep + qs
else
url += '?' + qs
# prepend leading '/'
if not url.match /^\//
url = '/' + url
return url