Some checks failed
Lint / pre-commit Linting (push) Has been cancelled
Deploy js code to an instance of screeps. Some debugging tools are implemented. Reviewed-on: #6 Co-authored-by: Philipp Horstenkamp <philipp@horstenkamp.de> Co-committed-by: Philipp Horstenkamp <philipp@horstenkamp.de>
105 lines
3.9 KiB
CoffeeScript
105 lines
3.9 KiB
CoffeeScript
|
|
Parser = require './Parser'
|
|
Dumper = require './Dumper'
|
|
Utils = require './Utils'
|
|
|
|
# Yaml offers convenience methods to load and dump YAML.
|
|
#
|
|
class Yaml
|
|
|
|
# Parses YAML into a JavaScript object.
|
|
#
|
|
# The parse method, when supplied with a YAML string,
|
|
# will do its best to convert YAML in a file into a JavaScript object.
|
|
#
|
|
# Usage:
|
|
# myObject = Yaml.parse('some: yaml');
|
|
# console.log(myObject);
|
|
#
|
|
# @param [String] input A string containing YAML
|
|
# @param [Boolean] exceptionOnInvalidType true if an exception must be thrown on invalid types, false otherwise
|
|
# @param [Function] objectDecoder A function to deserialize custom objects, null otherwise
|
|
#
|
|
# @return [Object] The YAML converted to a JavaScript object
|
|
#
|
|
# @throw [ParseException] If the YAML is not valid
|
|
#
|
|
@parse: (input, exceptionOnInvalidType = false, objectDecoder = null) ->
|
|
return new Parser().parse(input, exceptionOnInvalidType, objectDecoder)
|
|
|
|
|
|
# Parses YAML from file path into a JavaScript object.
|
|
#
|
|
# The parseFile method, when supplied with a YAML file,
|
|
# will do its best to convert YAML in a file into a JavaScript object.
|
|
#
|
|
# Usage:
|
|
# myObject = Yaml.parseFile('config.yml');
|
|
# console.log(myObject);
|
|
#
|
|
# @param [String] path A file path pointing to a valid YAML file
|
|
# @param [Boolean] exceptionOnInvalidType true if an exception must be thrown on invalid types, false otherwise
|
|
# @param [Function] objectDecoder A function to deserialize custom objects, null otherwise
|
|
#
|
|
# @return [Object] The YAML converted to a JavaScript object or null if the file doesn't exist.
|
|
#
|
|
# @throw [ParseException] If the YAML is not valid
|
|
#
|
|
@parseFile: (path, callback = null, exceptionOnInvalidType = false, objectDecoder = null) ->
|
|
if callback?
|
|
# Async
|
|
Utils.getStringFromFile path, (input) =>
|
|
result = null
|
|
if input?
|
|
result = @parse input, exceptionOnInvalidType, objectDecoder
|
|
callback result
|
|
return
|
|
else
|
|
# Sync
|
|
input = Utils.getStringFromFile path
|
|
if input?
|
|
return @parse input, exceptionOnInvalidType, objectDecoder
|
|
return null
|
|
|
|
|
|
# Dumps a JavaScript object to a YAML string.
|
|
#
|
|
# The dump method, when supplied with an object, will do its best
|
|
# to convert the object into friendly YAML.
|
|
#
|
|
# @param [Object] input JavaScript object
|
|
# @param [Integer] inline The level where you switch to inline YAML
|
|
# @param [Integer] indent The amount of spaces to use for indentation of nested nodes.
|
|
# @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] A YAML string representing the original JavaScript object
|
|
#
|
|
@dump: (input, inline = 2, indent = 4, exceptionOnInvalidType = false, objectEncoder = null) ->
|
|
yaml = new Dumper()
|
|
yaml.indentation = indent
|
|
|
|
return yaml.dump(input, inline, 0, exceptionOnInvalidType, objectEncoder)
|
|
|
|
|
|
# Alias of dump() method for compatibility reasons.
|
|
#
|
|
@stringify: (input, inline, indent, exceptionOnInvalidType, objectEncoder) ->
|
|
return @dump input, inline, indent, exceptionOnInvalidType, objectEncoder
|
|
|
|
|
|
# Alias of parseFile() method for compatibility reasons.
|
|
#
|
|
@load: (path, callback, exceptionOnInvalidType, objectDecoder) ->
|
|
return @parseFile path, callback, exceptionOnInvalidType, objectDecoder
|
|
|
|
|
|
# Expose YAML namespace to browser
|
|
window?.YAML = Yaml
|
|
|
|
# Not in the browser?
|
|
unless window?
|
|
@YAML = Yaml
|
|
|
|
module.exports = Yaml
|