scratch

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 74  →  ?path2? @ 75
/bower_components/yaml.js/src/Yaml.coffee
@@ -0,0 +1,118 @@
 
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)
 
 
# Registers .yml extension to work with node's require() function.
#
@register: ->
require_handler = (module, filename) ->
# Fill in result
module.exports = YAML.parseFile filename
 
# Register require extensions only if we're on node.js
# hack for browserify
if require?.extensions?
require.extensions['.yml'] = require_handler
require.extensions['.yaml'] = require_handler
 
 
# 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