mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
41 lines
1019 B
CoffeeScript
41 lines
1019 B
CoffeeScript
![]() |
|
|||
|
# Remove last comma from string
|
|||
|
removeTrailingComma = (s) ->
|
|||
|
s.trim().replace(/,$/, "")
|
|||
|
|
|||
|
# Map of functions that can convert various Javascript objects to strings.
|
|||
|
types =
|
|||
|
|
|||
|
function: (fn) -> "#{ fn }"
|
|||
|
string: (s) -> JSON.stringify s # Knows how to correctly serialize strings to String literals
|
|||
|
number: (n) -> n.toString()
|
|||
|
boolean: (n) -> n.toString()
|
|||
|
|
|||
|
object: (obj) ->
|
|||
|
|
|||
|
# typeof reports array as object
|
|||
|
return this._array obj if Array.isArray obj
|
|||
|
|
|||
|
code = "{"
|
|||
|
code += "\"#{ k }\": #{ codeFrom v }," for k, v of obj
|
|||
|
removeTrailingComma(code) + "}"
|
|||
|
|
|||
|
_array: (array) ->
|
|||
|
code = "["
|
|||
|
code += " #{ codeFrom v }," for v in array
|
|||
|
removeTrailingComma(code) + "]"
|
|||
|
|
|||
|
|
|||
|
# Generates code string from given object. Works for numbers, strings, regexes
|
|||
|
# and even functions. Does not handle circular references.
|
|||
|
exports.stringify = codeFrom = (obj) ->
|
|||
|
types[typeof obj]?(obj)
|
|||
|
|
|||
|
|
|||
|
if require.main is module
|
|||
|
console.log exports.stringify
|
|||
|
foo: 1
|
|||
|
bar:
|
|||
|
lol: ":D"
|
|||
|
hah: 2
|