gorillajs
Version:
A smart development environment designed to easily install and neatly manage web applications. Gorilla JS frees you from the repetitive daily tasks like apps installation, database management, creation of virtual environment, server configuration… And it
57 lines (43 loc) • 2.44 kB
text/coffeescript
Utils = require './Utils'
Inline = require './Inline'
# Dumper dumps JavaScript variables to YAML strings.
#
class Dumper
# The amount of spaces to use for indentation of nested nodes.
# Dumps a JavaScript value to YAML.
#
# @param [Object] input The JavaScript value
# @param [Integer] inline The level where you switch to inline YAML
# @param [Integer] indent The level of indentation (used internally)
# @param [Boolean] exceptionOnInvalidType true if an exception must be thrown on invalid types (a JavaScript resource or object), false otherwise
# @param [Function] objectEncoder A function to serialize custom objects, null otherwise
#
# @return [String] The YAML representation of the JavaScript value
#
dump: (input, inline = 0, indent = 0, exceptionOnInvalidType = false, objectEncoder = null) ->
output = ''
prefix = (if indent then Utils.strRepeat(' ', indent) else '')
if inline <= 0 or typeof(input) isnt 'object' or input instanceof Date or Utils.isEmpty(input)
output += prefix + Inline.dump(input, exceptionOnInvalidType, objectEncoder)
else
if input instanceof Array
for value in input
willBeInlined = (inline - 1 <= 0 or typeof(value) isnt 'object' or Utils.isEmpty(value))
output +=
prefix +
'-' +
(if willBeInlined then ' ' else "\n") +
(if willBeInlined then "\n" else '')
else
for key, value of input
willBeInlined = (inline - 1 <= 0 or typeof(value) isnt 'object' or Utils.isEmpty(value))
output +=
prefix +
Inline.dump(key, exceptionOnInvalidType, objectEncoder) + ':' +
(if willBeInlined then ' ' else "\n") +
(if willBeInlined then "\n" else '')
return output
module.exports = Dumper