You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/02/08 12:11:58 UTC
[02/11] brooklyn-ui git commit: Replace existing textareas for
editing YAML with Composer Tab + Codemirror
http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/4174bdb2/src/main/webapp/assets/js/libs/js-yaml.js
----------------------------------------------------------------------
diff --git a/src/main/webapp/assets/js/libs/js-yaml.js b/src/main/webapp/assets/js/libs/js-yaml.js
index 890b00e..fbc53e6 100644
--- a/src/main/webapp/assets/js/libs/js-yaml.js
+++ b/src/main/webapp/assets/js/libs/js-yaml.js
@@ -1,872 +1,1188 @@
-/* js-yaml 3.2.7 https://github.com/nodeca/js-yaml */!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.jsyaml=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
-'use strict';
+/* js-yaml 3.5.2 https://github.com/nodeca/js-yaml */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.jsyaml = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+ 'use strict';
-var loader = require('./js-yaml/loader');
-var dumper = require('./js-yaml/dumper');
+ var loader = require('./js-yaml/loader');
+ var dumper = require('./js-yaml/dumper');
-function deprecated(name) {
- return function () {
- throw new Error('Function ' + name + ' is deprecated and cannot be used.');
- };
-}
-
-
-module.exports.Type = require('./js-yaml/type');
-module.exports.Schema = require('./js-yaml/schema');
-module.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');
-module.exports.JSON_SCHEMA = require('./js-yaml/schema/json');
-module.exports.CORE_SCHEMA = require('./js-yaml/schema/core');
-module.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');
-module.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');
-module.exports.load = loader.load;
-module.exports.loadAll = loader.loadAll;
-module.exports.safeLoad = loader.safeLoad;
-module.exports.safeLoadAll = loader.safeLoadAll;
-module.exports.dump = dumper.dump;
-module.exports.safeDump = dumper.safeDump;
-module.exports.YAMLException = require('./js-yaml/exception');
-
-// Deprecared schema names from JS-YAML 2.0.x
-module.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');
-module.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');
-module.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');
+ function deprecated(name) {
+ return function () {
+ throw new Error('Function ' + name + ' is deprecated and cannot be used.');
+ };
+ }
+
+
+ module.exports.Type = require('./js-yaml/type');
+ module.exports.Schema = require('./js-yaml/schema');
+ module.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');
+ module.exports.JSON_SCHEMA = require('./js-yaml/schema/json');
+ module.exports.CORE_SCHEMA = require('./js-yaml/schema/core');
+ module.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');
+ module.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');
+ module.exports.load = loader.load;
+ module.exports.loadAll = loader.loadAll;
+ module.exports.safeLoad = loader.safeLoad;
+ module.exports.safeLoadAll = loader.safeLoadAll;
+ module.exports.dump = dumper.dump;
+ module.exports.safeDump = dumper.safeDump;
+ module.exports.YAMLException = require('./js-yaml/exception');
+
+// Deprecated schema names from JS-YAML 2.0.x
+ module.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');
+ module.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');
+ module.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');
// Deprecated functions from JS-YAML 1.x.x
-module.exports.scan = deprecated('scan');
-module.exports.parse = deprecated('parse');
-module.exports.compose = deprecated('compose');
-module.exports.addConstructor = deprecated('addConstructor');
+ module.exports.scan = deprecated('scan');
+ module.exports.parse = deprecated('parse');
+ module.exports.compose = deprecated('compose');
+ module.exports.addConstructor = deprecated('addConstructor');
},{"./js-yaml/dumper":3,"./js-yaml/exception":4,"./js-yaml/loader":5,"./js-yaml/schema":7,"./js-yaml/schema/core":8,"./js-yaml/schema/default_full":9,"./js-yaml/schema/default_safe":10,"./js-yaml/schema/failsafe":11,"./js-yaml/schema/json":12,"./js-yaml/type":13}],2:[function(require,module,exports){
-'use strict';
+ 'use strict';
-function isNothing(subject) {
- return (undefined === subject) || (null === subject);
-}
+ function isNothing(subject) {
+ return (typeof subject === 'undefined') || (null === subject);
+ }
-function isObject(subject) {
- return ('object' === typeof subject) && (null !== subject);
-}
+ function isObject(subject) {
+ return (typeof subject === 'object') && (null !== subject);
+ }
-function toArray(sequence) {
- if (Array.isArray(sequence)) {
- return sequence;
- } else if (isNothing(sequence)) {
- return [];
- } else {
+ function toArray(sequence) {
+ if (Array.isArray(sequence)) {
+ return sequence;
+ } else if (isNothing(sequence)) {
+ return [];
+ }
return [ sequence ];
}
-}
-function extend(target, source) {
- var index, length, key, sourceKeys;
+ function extend(target, source) {
+ var index, length, key, sourceKeys;
- if (source) {
- sourceKeys = Object.keys(source);
+ if (source) {
+ sourceKeys = Object.keys(source);
- for (index = 0, length = sourceKeys.length; index < length; index += 1) {
- key = sourceKeys[index];
- target[key] = source[key];
+ for (index = 0, length = sourceKeys.length; index < length; index += 1) {
+ key = sourceKeys[index];
+ target[key] = source[key];
+ }
}
+
+ return target;
}
- return target;
-}
+ function repeat(string, count) {
+ var result = '', cycle;
-function repeat(string, count) {
- var result = '', cycle;
+ for (cycle = 0; cycle < count; cycle += 1) {
+ result += string;
+ }
- for (cycle = 0; cycle < count; cycle += 1) {
- result += string;
+ return result;
}
- return result;
-}
-
-function isNegativeZero(number) {
- return (0 === number) && (Number.NEGATIVE_INFINITY === 1 / number);
-}
+ function isNegativeZero(number) {
+ return (0 === number) && (Number.NEGATIVE_INFINITY === 1 / number);
+ }
-module.exports.isNothing = isNothing;
-module.exports.isObject = isObject;
-module.exports.toArray = toArray;
-module.exports.repeat = repeat;
-module.exports.isNegativeZero = isNegativeZero;
-module.exports.extend = extend;
+ module.exports.isNothing = isNothing;
+ module.exports.isObject = isObject;
+ module.exports.toArray = toArray;
+ module.exports.repeat = repeat;
+ module.exports.isNegativeZero = isNegativeZero;
+ module.exports.extend = extend;
},{}],3:[function(require,module,exports){
-'use strict';
+ 'use strict';
+
+ /*eslint-disable no-use-before-define*/
+
+ var common = require('./common');
+ var YAMLException = require('./exception');
+ var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
+ var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
+
+ var _toString = Object.prototype.toString;
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
+
+ var CHAR_TAB = 0x09; /* Tab */
+ var CHAR_LINE_FEED = 0x0A; /* LF */
+ var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */
+ var CHAR_SPACE = 0x20; /* Space */
+ var CHAR_EXCLAMATION = 0x21; /* ! */
+ var CHAR_DOUBLE_QUOTE = 0x22; /* " */
+ var CHAR_SHARP = 0x23; /* # */
+ var CHAR_PERCENT = 0x25; /* % */
+ var CHAR_AMPERSAND = 0x26; /* & */
+ var CHAR_SINGLE_QUOTE = 0x27; /* ' */
+ var CHAR_ASTERISK = 0x2A; /* * */
+ var CHAR_COMMA = 0x2C; /* , */
+ var CHAR_MINUS = 0x2D; /* - */
+ var CHAR_COLON = 0x3A; /* : */
+ var CHAR_GREATER_THAN = 0x3E; /* > */
+ var CHAR_QUESTION = 0x3F; /* ? */
+ var CHAR_COMMERCIAL_AT = 0x40; /* @ */
+ var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */
+ var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
+ var CHAR_GRAVE_ACCENT = 0x60; /* ` */
+ var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */
+ var CHAR_VERTICAL_LINE = 0x7C; /* | */
+ var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */
+
+ var ESCAPE_SEQUENCES = {};
+
+ ESCAPE_SEQUENCES[0x00] = '\\0';
+ ESCAPE_SEQUENCES[0x07] = '\\a';
+ ESCAPE_SEQUENCES[0x08] = '\\b';
+ ESCAPE_SEQUENCES[0x09] = '\\t';
+ ESCAPE_SEQUENCES[0x0A] = '\\n';
+ ESCAPE_SEQUENCES[0x0B] = '\\v';
+ ESCAPE_SEQUENCES[0x0C] = '\\f';
+ ESCAPE_SEQUENCES[0x0D] = '\\r';
+ ESCAPE_SEQUENCES[0x1B] = '\\e';
+ ESCAPE_SEQUENCES[0x22] = '\\"';
+ ESCAPE_SEQUENCES[0x5C] = '\\\\';
+ ESCAPE_SEQUENCES[0x85] = '\\N';
+ ESCAPE_SEQUENCES[0xA0] = '\\_';
+ ESCAPE_SEQUENCES[0x2028] = '\\L';
+ ESCAPE_SEQUENCES[0x2029] = '\\P';
+
+ var DEPRECATED_BOOLEANS_SYNTAX = [
+ 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
+ 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
+ ];
+
+ function compileStyleMap(schema, map) {
+ var result, keys, index, length, tag, style, type;
+
+ if (null === map) {
+ return {};
+ }
+
+ result = {};
+ keys = Object.keys(map);
+
+ for (index = 0, length = keys.length; index < length; index += 1) {
+ tag = keys[index];
+ style = String(map[tag]);
+
+ if ('!!' === tag.slice(0, 2)) {
+ tag = 'tag:yaml.org,2002:' + tag.slice(2);
+ }
+ type = schema.compiledTypeMap[tag];
-var common = require('./common');
-var YAMLException = require('./exception');
-var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
-var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
+ if (type && _hasOwnProperty.call(type.styleAliases, style)) {
+ style = type.styleAliases[style];
+ }
+ result[tag] = style;
+ }
-var _toString = Object.prototype.toString;
-var _hasOwnProperty = Object.prototype.hasOwnProperty;
+ return result;
+ }
+ function encodeHex(character) {
+ var string, handle, length;
-var CHAR_TAB = 0x09; /* Tab */
-var CHAR_LINE_FEED = 0x0A; /* LF */
-var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */
-var CHAR_SPACE = 0x20; /* Space */
-var CHAR_EXCLAMATION = 0x21; /* ! */
-var CHAR_DOUBLE_QUOTE = 0x22; /* " */
-var CHAR_SHARP = 0x23; /* # */
-var CHAR_PERCENT = 0x25; /* % */
-var CHAR_AMPERSAND = 0x26; /* & */
-var CHAR_SINGLE_QUOTE = 0x27; /* ' */
-var CHAR_ASTERISK = 0x2A; /* * */
-var CHAR_COMMA = 0x2C; /* , */
-var CHAR_MINUS = 0x2D; /* - */
-var CHAR_COLON = 0x3A; /* : */
-var CHAR_GREATER_THAN = 0x3E; /* > */
-var CHAR_QUESTION = 0x3F; /* ? */
-var CHAR_COMMERCIAL_AT = 0x40; /* @ */
-var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */
-var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */
-var CHAR_GRAVE_ACCENT = 0x60; /* ` */
-var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */
-var CHAR_VERTICAL_LINE = 0x7C; /* | */
-var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */
+ string = character.toString(16).toUpperCase();
+ if (character <= 0xFF) {
+ handle = 'x';
+ length = 2;
+ } else if (character <= 0xFFFF) {
+ handle = 'u';
+ length = 4;
+ } else if (character <= 0xFFFFFFFF) {
+ handle = 'U';
+ length = 8;
+ } else {
+ throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');
+ }
-var ESCAPE_SEQUENCES = {};
+ return '\\' + handle + common.repeat('0', length - string.length) + string;
+ }
-ESCAPE_SEQUENCES[0x00] = '\\0';
-ESCAPE_SEQUENCES[0x07] = '\\a';
-ESCAPE_SEQUENCES[0x08] = '\\b';
-ESCAPE_SEQUENCES[0x09] = '\\t';
-ESCAPE_SEQUENCES[0x0A] = '\\n';
-ESCAPE_SEQUENCES[0x0B] = '\\v';
-ESCAPE_SEQUENCES[0x0C] = '\\f';
-ESCAPE_SEQUENCES[0x0D] = '\\r';
-ESCAPE_SEQUENCES[0x1B] = '\\e';
-ESCAPE_SEQUENCES[0x22] = '\\"';
-ESCAPE_SEQUENCES[0x5C] = '\\\\';
-ESCAPE_SEQUENCES[0x85] = '\\N';
-ESCAPE_SEQUENCES[0xA0] = '\\_';
-ESCAPE_SEQUENCES[0x2028] = '\\L';
-ESCAPE_SEQUENCES[0x2029] = '\\P';
+ function State(options) {
+ this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
+ this.indent = Math.max(1, (options['indent'] || 2));
+ this.skipInvalid = options['skipInvalid'] || false;
+ this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
+ this.styleMap = compileStyleMap(this.schema, options['styles'] || null);
+ this.sortKeys = options['sortKeys'] || false;
+ this.lineWidth = options['lineWidth'] || 80;
+ this.noRefs = options['noRefs'] || false;
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.explicitTypes = this.schema.compiledExplicit;
-var DEPRECATED_BOOLEANS_SYNTAX = [
- 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',
- 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'
-];
+ this.tag = null;
+ this.result = '';
+ this.duplicates = [];
+ this.usedDuplicates = null;
+ }
-function compileStyleMap(schema, map) {
- var result, keys, index, length, tag, style, type;
+ function indentString(string, spaces) {
+ var ind = common.repeat(' ', spaces),
+ position = 0,
+ next = -1,
+ result = '',
+ line,
+ length = string.length;
- if (null === map) {
- return {};
- }
+ while (position < length) {
+ next = string.indexOf('\n', position);
+ if (next === -1) {
+ line = string.slice(position);
+ position = length;
+ } else {
+ line = string.slice(position, next + 1);
+ position = next + 1;
+ }
+ if (line.length && line !== '\n') {
+ result += ind;
+ }
+ result += line;
+ }
- result = {};
- keys = Object.keys(map);
+ return result;
+ }
- for (index = 0, length = keys.length; index < length; index += 1) {
- tag = keys[index];
- style = String(map[tag]);
+ function generateNextLine(state, level) {
+ return '\n' + common.repeat(' ', state.indent * level);
+ }
- if ('!!' === tag.slice(0, 2)) {
- tag = 'tag:yaml.org,2002:' + tag.slice(2);
- }
+ function testImplicitResolving(state, str) {
+ var index, length, type;
- type = schema.compiledTypeMap[tag];
+ for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
+ type = state.implicitTypes[index];
- if (type && _hasOwnProperty.call(type.styleAliases, style)) {
- style = type.styleAliases[style];
+ if (type.resolve(str)) {
+ return true;
+ }
}
- result[tag] = style;
+ return false;
}
- return result;
-}
+ function StringBuilder(source) {
+ this.source = source;
+ this.result = '';
+ this.checkpoint = 0;
+ }
+ StringBuilder.prototype.takeUpTo = function (position) {
+ var er;
-function encodeHex(character) {
- var string, handle, length;
+ if (position < this.checkpoint) {
+ er = new Error('position should be > checkpoint');
+ er.position = position;
+ er.checkpoint = this.checkpoint;
+ throw er;
+ }
- string = character.toString(16).toUpperCase();
+ this.result += this.source.slice(this.checkpoint, position);
+ this.checkpoint = position;
+ return this;
+ };
- if (character <= 0xFF) {
- handle = 'x';
- length = 2;
- } else if (character <= 0xFFFF) {
- handle = 'u';
- length = 4;
- } else if (character <= 0xFFFFFFFF) {
- handle = 'U';
- length = 8;
- } else {
- throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');
- }
+ StringBuilder.prototype.escapeChar = function () {
+ var character, esc;
- return '\\' + handle + common.repeat('0', length - string.length) + string;
-}
+ character = this.source.charCodeAt(this.checkpoint);
+ esc = ESCAPE_SEQUENCES[character] || encodeHex(character);
+ this.result += esc;
+ this.checkpoint += 1;
+ return this;
+ };
-function State(options) {
- this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
- this.indent = Math.max(1, (options['indent'] || 2));
- this.skipInvalid = options['skipInvalid'] || false;
- this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);
- this.styleMap = compileStyleMap(this.schema, options['styles'] || null);
+ StringBuilder.prototype.finish = function () {
+ if (this.source.length > this.checkpoint) {
+ this.takeUpTo(this.source.length);
+ }
+ };
- this.implicitTypes = this.schema.compiledImplicit;
- this.explicitTypes = this.schema.compiledExplicit;
+ function writeScalar(state, object, level, iskey) {
+ var simple, first, spaceWrap, folded, literal, single, double,
+ sawLineFeed, linePosition, longestLine, indent, max, character,
+ position, escapeSeq, hexEsc, previous, lineLength, modifier,
+ trailingLineBreaks, result;
- this.tag = null;
- this.result = '';
+ if (0 === object.length) {
+ state.dump = "''";
+ return;
+ }
- this.duplicates = [];
- this.usedDuplicates = null;
-}
+ if (-1 !== DEPRECATED_BOOLEANS_SYNTAX.indexOf(object)) {
+ state.dump = "'" + object + "'";
+ return;
+ }
+ simple = true;
+ first = object.length ? object.charCodeAt(0) : 0;
+ spaceWrap = (CHAR_SPACE === first ||
+ CHAR_SPACE === object.charCodeAt(object.length - 1));
-function generateNextLine(state, level) {
- return '\n' + common.repeat(' ', state.indent * level);
-}
+ // Simplified check for restricted first characters
+ // http://www.yaml.org/spec/1.2/spec.html#ns-plain-first%28c%29
+ if (CHAR_MINUS === first ||
+ CHAR_QUESTION === first ||
+ CHAR_COMMERCIAL_AT === first ||
+ CHAR_GRAVE_ACCENT === first) {
+ simple = false;
+ }
-function testImplicitResolving(state, str) {
- var index, length, type;
+ // Can only use > and | if not wrapped in spaces or is not a key.
+ // Also, don't use if in flow mode.
+ if (spaceWrap || (state.flowLevel > -1 && state.flowLevel <= level)) {
+ if (spaceWrap) {
+ simple = false;
+ }
+ folded = false;
+ literal = false;
+ } else {
+ folded = !iskey;
+ literal = !iskey;
+ }
- for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
- type = state.implicitTypes[index];
+ single = true;
+ double = new StringBuilder(object);
- if (type.resolve(str)) {
- return true;
+ sawLineFeed = false;
+ linePosition = 0;
+ longestLine = 0;
+
+ indent = state.indent * level;
+ max = state.lineWidth;
+ if (max === -1) {
+ // Replace -1 with biggest ingeger number according to
+ // http://ecma262-5.com/ELS5_HTML.htm#Section_8.5
+ max = 9007199254740991;
}
- }
- return false;
-}
-
-function writeScalar(state, object) {
- var isQuoted, checkpoint, position, length, character, first;
-
- state.dump = '';
- isQuoted = false;
- checkpoint = 0;
- first = object.charCodeAt(0) || 0;
-
- if (-1 !== DEPRECATED_BOOLEANS_SYNTAX.indexOf(object)) {
- // Ensure compatibility with YAML 1.0/1.1 loaders.
- isQuoted = true;
- } else if (0 === object.length) {
- // Quote empty string
- isQuoted = true;
- } else if (CHAR_SPACE === first ||
- CHAR_SPACE === object.charCodeAt(object.length - 1)) {
- isQuoted = true;
- } else if (CHAR_MINUS === first ||
- CHAR_QUESTION === first) {
- // Don't check second symbol for simplicity
- isQuoted = true;
- }
-
- for (position = 0, length = object.length; position < length; position += 1) {
- character = object.charCodeAt(position);
-
- if (!isQuoted) {
- if (CHAR_TAB === character ||
- CHAR_LINE_FEED === character ||
- CHAR_CARRIAGE_RETURN === character ||
- CHAR_COMMA === character ||
- CHAR_LEFT_SQUARE_BRACKET === character ||
- CHAR_RIGHT_SQUARE_BRACKET === character ||
- CHAR_LEFT_CURLY_BRACKET === character ||
- CHAR_RIGHT_CURLY_BRACKET === character ||
- CHAR_SHARP === character ||
- CHAR_AMPERSAND === character ||
- CHAR_ASTERISK === character ||
- CHAR_EXCLAMATION === character ||
- CHAR_VERTICAL_LINE === character ||
- CHAR_GREATER_THAN === character ||
- CHAR_SINGLE_QUOTE === character ||
- CHAR_DOUBLE_QUOTE === character ||
- CHAR_PERCENT === character ||
- CHAR_COMMERCIAL_AT === character ||
- CHAR_COLON === character ||
- CHAR_GRAVE_ACCENT === character) {
- isQuoted = true;
- }
- }
-
- if (ESCAPE_SEQUENCES[character] ||
- !((0x00020 <= character && character <= 0x00007E) ||
- (0x00085 === character) ||
- (0x000A0 <= character && character <= 0x00D7FF) ||
- (0x0E000 <= character && character <= 0x00FFFD) ||
- (0x10000 <= character && character <= 0x10FFFF))) {
- state.dump += object.slice(checkpoint, position);
- state.dump += ESCAPE_SEQUENCES[character] || encodeHex(character);
- checkpoint = position + 1;
- isQuoted = true;
- }
- }
-
- if (checkpoint < position) {
- state.dump += object.slice(checkpoint, position);
- }
-
- if (!isQuoted && testImplicitResolving(state, state.dump)) {
- isQuoted = true;
- }
-
- if (isQuoted) {
- state.dump = '"' + state.dump + '"';
- }
-}
-
-function writeFlowSequence(state, level, object) {
- var _result = '',
- _tag = state.tag,
- index,
- length;
-
- for (index = 0, length = object.length; index < length; index += 1) {
- // Write only valid elements.
- if (writeNode(state, level, object[index], false, false)) {
- if (0 !== index) {
- _result += ', ';
- }
- _result += state.dump;
+ if (indent < 40) {
+ max -= indent;
+ } else {
+ max = 40;
}
- }
- state.tag = _tag;
- state.dump = '[' + _result + ']';
-}
+ for (position = 0; position < object.length; position++) {
+ character = object.charCodeAt(position);
+ if (simple) {
+ // Characters that can never appear in the simple scalar
+ if (!simpleChar(character)) {
+ simple = false;
+ } else {
+ // Still simple. If we make it all the way through like
+ // this, then we can just dump the string as-is.
+ continue;
+ }
+ }
+
+ if (single && character === CHAR_SINGLE_QUOTE) {
+ single = false;
+ }
-function writeBlockSequence(state, level, object, compact) {
- var _result = '',
- _tag = state.tag,
- index,
- length;
+ escapeSeq = ESCAPE_SEQUENCES[character];
+ hexEsc = needsHexEscape(character);
- for (index = 0, length = object.length; index < length; index += 1) {
- // Write only valid elements.
- if (writeNode(state, level + 1, object[index], true, true)) {
- if (!compact || 0 !== index) {
- _result += generateNextLine(state, level);
+ if (!escapeSeq && !hexEsc) {
+ continue;
}
- _result += '- ' + state.dump;
- }
- }
- state.tag = _tag;
- state.dump = _result || '[]'; // Empty sequence if no valid values.
-}
+ if (character !== CHAR_LINE_FEED &&
+ character !== CHAR_DOUBLE_QUOTE &&
+ character !== CHAR_SINGLE_QUOTE) {
+ folded = false;
+ literal = false;
+ } else if (character === CHAR_LINE_FEED) {
+ sawLineFeed = true;
+ single = false;
+ if (position > 0) {
+ previous = object.charCodeAt(position - 1);
+ if (previous === CHAR_SPACE) {
+ literal = false;
+ folded = false;
+ }
+ }
+ if (folded) {
+ lineLength = position - linePosition;
+ linePosition = position;
+ if (lineLength > longestLine) {
+ longestLine = lineLength;
+ }
+ }
+ }
-function writeFlowMapping(state, level, object) {
- var _result = '',
- _tag = state.tag,
- objectKeyList = Object.keys(object),
- index,
- length,
- objectKey,
- objectValue,
- pairBuffer;
+ if (character !== CHAR_DOUBLE_QUOTE) {
+ single = false;
+ }
- for (index = 0, length = objectKeyList.length; index < length; index += 1) {
- pairBuffer = '';
+ double.takeUpTo(position);
+ double.escapeChar();
+ }
- if (0 !== index) {
- pairBuffer += ', ';
+ if (simple && testImplicitResolving(state, object)) {
+ simple = false;
}
- objectKey = objectKeyList[index];
- objectValue = object[objectKey];
+ modifier = '';
+ if (folded || literal) {
+ trailingLineBreaks = 0;
+ if (object.charCodeAt(object.length - 1) === CHAR_LINE_FEED) {
+ trailingLineBreaks += 1;
+ if (object.charCodeAt(object.length - 2) === CHAR_LINE_FEED) {
+ trailingLineBreaks += 1;
+ }
+ }
- if (!writeNode(state, level, objectKey, false, false)) {
- continue; // Skip this pair because of invalid key;
+ if (trailingLineBreaks === 0) {
+ modifier = '-';
+ } else if (trailingLineBreaks === 2) {
+ modifier = '+';
+ }
}
- if (state.dump.length > 1024) {
- pairBuffer += '? ';
+ if (literal && longestLine < max || state.tag !== null) {
+ folded = false;
}
- pairBuffer += state.dump + ': ';
+ // If it's literally one line, then don't bother with the literal.
+ // We may still want to do a fold, though, if it's a super long line.
+ if (!sawLineFeed) {
+ literal = false;
+ }
- if (!writeNode(state, level, objectValue, false, false)) {
- continue; // Skip this pair because of invalid value.
+ if (simple) {
+ state.dump = object;
+ } else if (single) {
+ state.dump = '\'' + object + '\'';
+ } else if (folded) {
+ result = fold(object, max);
+ state.dump = '>' + modifier + '\n' + indentString(result, indent);
+ } else if (literal) {
+ if (!modifier) {
+ object = object.replace(/\n$/, '');
+ }
+ state.dump = '|' + modifier + '\n' + indentString(object, indent);
+ } else if (double) {
+ double.finish();
+ state.dump = '"' + double.result + '"';
+ } else {
+ throw new Error('Failed to dump scalar value');
}
- pairBuffer += state.dump;
+ return;
+ }
+
+// The `trailing` var is a regexp match of any trailing `\n` characters.
+//
+// There are three cases we care about:
+//
+// 1. One trailing `\n` on the string. Just use `|` or `>`.
+// This is the assumed default. (trailing = null)
+// 2. No trailing `\n` on the string. Use `|-` or `>-` to "chomp" the end.
+// 3. More than one trailing `\n` on the string. Use `|+` or `>+`.
+//
+// In the case of `>+`, these line breaks are *not* doubled (like the line
+// breaks within the string), so it's important to only end with the exact
+// same number as we started.
+ function fold(object, max) {
+ var result = '',
+ position = 0,
+ length = object.length,
+ trailing = /\n+$/.exec(object),
+ newLine;
+
+ if (trailing) {
+ length = trailing.index + 1;
+ }
+
+ while (position < length) {
+ newLine = object.indexOf('\n', position);
+ if (newLine > length || newLine === -1) {
+ if (result) {
+ result += '\n\n';
+ }
+ result += foldLine(object.slice(position, length), max);
+ position = length;
+ } else {
+ if (result) {
+ result += '\n\n';
+ }
+ result += foldLine(object.slice(position, newLine), max);
+ position = newLine + 1;
+ }
+ }
+ if (trailing && trailing[0] !== '\n') {
+ result += trailing[0];
+ }
- // Both key and value are valid.
- _result += pairBuffer;
+ return result;
}
- state.tag = _tag;
- state.dump = '{' + _result + '}';
-}
+ function foldLine(line, max) {
+ if (line === '') {
+ return line;
+ }
+
+ var foldRe = /[^\s] [^\s]/g,
+ result = '',
+ prevMatch = 0,
+ foldStart = 0,
+ match = foldRe.exec(line),
+ index,
+ foldEnd,
+ folded;
-function writeBlockMapping(state, level, object, compact) {
- var _result = '',
- _tag = state.tag,
- objectKeyList = Object.keys(object),
- index,
- length,
- objectKey,
- objectValue,
- explicitPair,
- pairBuffer;
+ while (match) {
+ index = match.index;
- for (index = 0, length = objectKeyList.length; index < length; index += 1) {
- pairBuffer = '';
+ // when we cross the max len, if the previous match would've
+ // been ok, use that one, and carry on. If there was no previous
+ // match on this fold section, then just have a long line.
+ if (index - foldStart > max) {
+ if (prevMatch !== foldStart) {
+ foldEnd = prevMatch;
+ } else {
+ foldEnd = index;
+ }
- if (!compact || 0 !== index) {
- pairBuffer += generateNextLine(state, level);
+ if (result) {
+ result += '\n';
+ }
+ folded = line.slice(foldStart, foldEnd);
+ result += folded;
+ foldStart = foldEnd + 1;
+ }
+ prevMatch = index + 1;
+ match = foldRe.exec(line);
}
- objectKey = objectKeyList[index];
- objectValue = object[objectKey];
+ if (result) {
+ result += '\n';
+ }
- if (!writeNode(state, level + 1, objectKey, true, true)) {
- continue; // Skip this pair because of invalid key.
+ // if we end up with one last word at the end, then the last bit might
+ // be slightly bigger than we wanted, because we exited out of the loop.
+ if (foldStart !== prevMatch && line.length - foldStart > max) {
+ result += line.slice(foldStart, prevMatch) + '\n' +
+ line.slice(prevMatch + 1);
+ } else {
+ result += line.slice(foldStart);
+ }
+
+ return result;
+ }
+
+// Returns true if character can be found in a simple scalar
+ function simpleChar(character) {
+ return CHAR_TAB !== character &&
+ CHAR_LINE_FEED !== character &&
+ CHAR_CARRIAGE_RETURN !== character &&
+ CHAR_COMMA !== character &&
+ CHAR_LEFT_SQUARE_BRACKET !== character &&
+ CHAR_RIGHT_SQUARE_BRACKET !== character &&
+ CHAR_LEFT_CURLY_BRACKET !== character &&
+ CHAR_RIGHT_CURLY_BRACKET !== character &&
+ CHAR_SHARP !== character &&
+ CHAR_AMPERSAND !== character &&
+ CHAR_ASTERISK !== character &&
+ CHAR_EXCLAMATION !== character &&
+ CHAR_VERTICAL_LINE !== character &&
+ CHAR_GREATER_THAN !== character &&
+ CHAR_SINGLE_QUOTE !== character &&
+ CHAR_DOUBLE_QUOTE !== character &&
+ CHAR_PERCENT !== character &&
+ CHAR_COLON !== character &&
+ !ESCAPE_SEQUENCES[character] &&
+ !needsHexEscape(character);
+ }
+
+// Returns true if the character code needs to be escaped.
+ function needsHexEscape(character) {
+ return !((0x00020 <= character && character <= 0x00007E) ||
+ (0x00085 === character) ||
+ (0x000A0 <= character && character <= 0x00D7FF) ||
+ (0x0E000 <= character && character <= 0x00FFFD) ||
+ (0x10000 <= character && character <= 0x10FFFF));
+ }
+
+ function writeFlowSequence(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level, object[index], false, false)) {
+ if (0 !== index) {
+ _result += ', ';
+ }
+ _result += state.dump;
+ }
}
- explicitPair = (null !== state.tag && '?' !== state.tag) ||
- (state.dump && state.dump.length > 1024);
+ state.tag = _tag;
+ state.dump = '[' + _result + ']';
+ }
+
+ function writeBlockSequence(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
- if (explicitPair) {
- if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
- pairBuffer += '?';
- } else {
- pairBuffer += '? ';
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level + 1, object[index], true, true)) {
+ if (!compact || 0 !== index) {
+ _result += generateNextLine(state, level);
+ }
+ _result += '- ' + state.dump;
}
}
- pairBuffer += state.dump;
+ state.tag = _tag;
+ state.dump = _result || '[]'; // Empty sequence if no valid values.
+ }
- if (explicitPair) {
- pairBuffer += generateNextLine(state, level);
- }
+ function writeFlowMapping(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ pairBuffer;
- if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
- continue; // Skip this pair because of invalid value.
- }
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = '';
- if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
- pairBuffer += ':';
- } else {
- pairBuffer += ': ';
- }
+ if (0 !== index) {
+ pairBuffer += ', ';
+ }
- pairBuffer += state.dump;
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
- // Both key and value are valid.
- _result += pairBuffer;
- }
+ if (!writeNode(state, level, objectKey, false, false)) {
+ continue; // Skip this pair because of invalid key;
+ }
+
+ if (state.dump.length > 1024) {
+ pairBuffer += '? ';
+ }
+
+ pairBuffer += state.dump + ': ';
+
+ if (!writeNode(state, level, objectValue, false, false)) {
+ continue; // Skip this pair because of invalid value.
+ }
- state.tag = _tag;
- state.dump = _result || '{}'; // Empty mapping if no valid pairs.
-}
+ pairBuffer += state.dump;
-function detectType(state, object, explicit) {
- var _result, typeList, index, length, type, style;
+ // Both key and value are valid.
+ _result += pairBuffer;
+ }
- typeList = explicit ? state.explicitTypes : state.implicitTypes;
+ state.tag = _tag;
+ state.dump = '{' + _result + '}';
+ }
+
+ function writeBlockMapping(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ explicitPair,
+ pairBuffer;
+
+ // Allow sorting keys so that the output file is deterministic
+ if (state.sortKeys === true) {
+ // Default sorting
+ objectKeyList.sort();
+ } else if (typeof state.sortKeys === 'function') {
+ // Custom sort function
+ objectKeyList.sort(state.sortKeys);
+ } else if (state.sortKeys) {
+ // Something is wrong
+ throw new YAMLException('sortKeys must be a boolean or a function');
+ }
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = '';
- for (index = 0, length = typeList.length; index < length; index += 1) {
- type = typeList[index];
+ if (!compact || 0 !== index) {
+ pairBuffer += generateNextLine(state, level);
+ }
- if ((type.instanceOf || type.predicate) &&
- (!type.instanceOf || (('object' === typeof object) && (object instanceof type.instanceOf))) &&
- (!type.predicate || type.predicate(object))) {
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
- state.tag = explicit ? type.tag : '?';
+ if (!writeNode(state, level + 1, objectKey, true, true, true)) {
+ continue; // Skip this pair because of invalid key.
+ }
- if (type.represent) {
- style = state.styleMap[type.tag] || type.defaultStyle;
+ explicitPair = (null !== state.tag && '?' !== state.tag) ||
+ (state.dump && state.dump.length > 1024);
- if ('[object Function]' === _toString.call(type.represent)) {
- _result = type.represent(object, style);
- } else if (_hasOwnProperty.call(type.represent, style)) {
- _result = type.represent[style](object, style);
+ if (explicitPair) {
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += '?';
} else {
- throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
+ pairBuffer += '? ';
}
+ }
+
+ pairBuffer += state.dump;
- state.dump = _result;
+ if (explicitPair) {
+ pairBuffer += generateNextLine(state, level);
}
- return true;
+ if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
+ continue; // Skip this pair because of invalid value.
+ }
+
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += ':';
+ } else {
+ pairBuffer += ': ';
+ }
+
+ pairBuffer += state.dump;
+
+ // Both key and value are valid.
+ _result += pairBuffer;
}
+
+ state.tag = _tag;
+ state.dump = _result || '{}'; // Empty mapping if no valid pairs.
}
- return false;
-}
+ function detectType(state, object, explicit) {
+ var _result, typeList, index, length, type, style;
+
+ typeList = explicit ? state.explicitTypes : state.implicitTypes;
+
+ for (index = 0, length = typeList.length; index < length; index += 1) {
+ type = typeList[index];
+
+ if ((type.instanceOf || type.predicate) &&
+ (!type.instanceOf || (('object' === typeof object) && (object instanceof type.instanceOf))) &&
+ (!type.predicate || type.predicate(object))) {
+
+ state.tag = explicit ? type.tag : '?';
+
+ if (type.represent) {
+ style = state.styleMap[type.tag] || type.defaultStyle;
+
+ if ('[object Function]' === _toString.call(type.represent)) {
+ _result = type.represent(object, style);
+ } else if (_hasOwnProperty.call(type.represent, style)) {
+ _result = type.represent[style](object, style);
+ } else {
+ throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
+ }
+
+ state.dump = _result;
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+ }
// Serializes `object` and writes it to global `result`.
// Returns true on success, or false on invalid object.
//
-function writeNode(state, level, object, block, compact) {
- state.tag = null;
- state.dump = object;
-
- if (!detectType(state, object, false)) {
- detectType(state, object, true);
- }
+ function writeNode(state, level, object, block, compact, iskey) {
+ state.tag = null;
+ state.dump = object;
- var type = _toString.call(state.dump);
+ if (!detectType(state, object, false)) {
+ detectType(state, object, true);
+ }
- if (block) {
- block = (0 > state.flowLevel || state.flowLevel > level);
- }
+ var type = _toString.call(state.dump);
- if ((null !== state.tag && '?' !== state.tag) || (2 !== state.indent && level > 0)) {
- compact = false;
- }
+ if (block) {
+ block = (0 > state.flowLevel || state.flowLevel > level);
+ }
- var objectOrArray = '[object Object]' === type || '[object Array]' === type,
- duplicateIndex,
- duplicate;
+ var objectOrArray = '[object Object]' === type || '[object Array]' === type,
+ duplicateIndex,
+ duplicate;
- if (objectOrArray) {
- duplicateIndex = state.duplicates.indexOf(object);
- duplicate = duplicateIndex !== -1;
- }
+ if (objectOrArray) {
+ duplicateIndex = state.duplicates.indexOf(object);
+ duplicate = duplicateIndex !== -1;
+ }
- if (duplicate && state.usedDuplicates[duplicateIndex]) {
- state.dump = '*ref_' + duplicateIndex;
- } else {
- if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
- state.usedDuplicates[duplicateIndex] = true;
+ if ((null !== state.tag && '?' !== state.tag) || duplicate || (2 !== state.indent && level > 0)) {
+ compact = false;
}
- if ('[object Object]' === type) {
- if (block && (0 !== Object.keys(state.dump).length)) {
- writeBlockMapping(state, level, state.dump, compact);
- if (duplicate) {
- state.dump = '&ref_' + duplicateIndex + (0 === level ? '\n' : '') + state.dump;
+
+ if (duplicate && state.usedDuplicates[duplicateIndex]) {
+ state.dump = '*ref_' + duplicateIndex;
+ } else {
+ if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
+ state.usedDuplicates[duplicateIndex] = true;
+ }
+ if ('[object Object]' === type) {
+ if (block && (0 !== Object.keys(state.dump).length)) {
+ writeBlockMapping(state, level, state.dump, compact);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowMapping(state, level, state.dump);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
}
- } else {
- writeFlowMapping(state, level, state.dump);
- if (duplicate) {
- state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ } else if ('[object Array]' === type) {
+ if (block && (0 !== state.dump.length)) {
+ writeBlockSequence(state, level, state.dump, compact);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowSequence(state, level, state.dump);
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
}
- }
- } else if ('[object Array]' === type) {
- if (block && (0 !== state.dump.length)) {
- writeBlockSequence(state, level, state.dump, compact);
- if (duplicate) {
- state.dump = '&ref_' + duplicateIndex + (0 === level ? '\n' : '') + state.dump;
+ } else if ('[object String]' === type) {
+ if ('?' !== state.tag) {
+ writeScalar(state, state.dump, level, iskey);
}
} else {
- writeFlowSequence(state, level, state.dump);
- if (duplicate) {
- state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ if (state.skipInvalid) {
+ return false;
}
+ throw new YAMLException('unacceptable kind of an object to dump ' + type);
}
- } else if ('[object String]' === type) {
- if ('?' !== state.tag) {
- writeScalar(state, state.dump);
+
+ if (null !== state.tag && '?' !== state.tag) {
+ state.dump = '!<' + state.tag + '> ' + state.dump;
}
- } else if (state.skipInvalid) {
- return false;
- } else {
- throw new YAMLException('unacceptable kind of an object to dump ' + type);
}
- if (null !== state.tag && '?' !== state.tag) {
- state.dump = '!<' + state.tag + '> ' + state.dump;
- }
+ return true;
}
- return true;
-}
+ function getDuplicateReferences(object, state) {
+ var objects = [],
+ duplicatesIndexes = [],
+ index,
+ length;
-function getDuplicateReferences(object, state) {
- var objects = [],
- duplicatesIndexes = [],
- index,
- length;
+ inspectNode(object, objects, duplicatesIndexes);
- inspectNode(object, objects, duplicatesIndexes);
-
- for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
- state.duplicates.push(objects[duplicatesIndexes[index]]);
+ for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
+ state.duplicates.push(objects[duplicatesIndexes[index]]);
+ }
+ state.usedDuplicates = new Array(length);
}
- state.usedDuplicates = new Array(length);
-}
-function inspectNode(object, objects, duplicatesIndexes) {
- var type = _toString.call(object),
- objectKeyList,
- index,
- length;
+ function inspectNode(object, objects, duplicatesIndexes) {
+ var objectKeyList,
+ index,
+ length;
- if (null !== object && 'object' === typeof object) {
- index = objects.indexOf(object);
- if (-1 !== index) {
- if (-1 === duplicatesIndexes.indexOf(index)) {
- duplicatesIndexes.push(index);
- }
- } else {
- objects.push(object);
-
- if(Array.isArray(object)) {
- for (index = 0, length = object.length; index < length; index += 1) {
- inspectNode(object[index], objects, duplicatesIndexes);
+ if (null !== object && 'object' === typeof object) {
+ index = objects.indexOf(object);
+ if (-1 !== index) {
+ if (-1 === duplicatesIndexes.indexOf(index)) {
+ duplicatesIndexes.push(index);
}
} else {
- objectKeyList = Object.keys(object);
+ objects.push(object);
- for (index = 0, length = objectKeyList.length; index < length; index += 1) {
- inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
+ if (Array.isArray(object)) {
+ for (index = 0, length = object.length; index < length; index += 1) {
+ inspectNode(object[index], objects, duplicatesIndexes);
+ }
+ } else {
+ objectKeyList = Object.keys(object);
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
+ }
}
}
}
}
-}
-function dump(input, options) {
- options = options || {};
+ function dump(input, options) {
+ options = options || {};
- var state = new State(options);
+ var state = new State(options);
- getDuplicateReferences(input, state);
+ if (!state.noRefs) {
+ getDuplicateReferences(input, state);
+ }
- if (writeNode(state, 0, input, true, true)) {
- return state.dump + '\n';
- } else {
+ if (writeNode(state, 0, input, true, true)) {
+ return state.dump + '\n';
+ }
return '';
}
-}
-
-
-function safeDump(input, options) {
- return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
-}
+ function safeDump(input, options) {
+ return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));
+ }
-module.exports.dump = dump;
-module.exports.safeDump = safeDump;
+ module.exports.dump = dump;
+ module.exports.safeDump = safeDump;
},{"./common":2,"./exception":4,"./schema/default_full":9,"./schema/default_safe":10}],4:[function(require,module,exports){
-'use strict';
+// YAML error class. http://stackoverflow.com/questions/8458984
+//
+ 'use strict';
+ function YAMLException(reason, mark) {
+ // Super constructor
+ Error.call(this);
-function YAMLException(reason, mark) {
- this.name = 'YAMLException';
- this.reason = reason;
- this.mark = mark;
- this.message = this.toString(false);
-}
+ // Include stack trace in error object
+ if (Error.captureStackTrace) {
+ // Chrome and NodeJS
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ // FF, IE 10+ and Safari 6+. Fallback for others
+ this.stack = (new Error()).stack || '';
+ }
+ this.name = 'YAMLException';
+ this.reason = reason;
+ this.mark = mark;
+ this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');
+ }
-YAMLException.prototype.toString = function toString(compact) {
- var result;
- result = 'JS-YAML: ' + (this.reason || '(unknown reason)');
+// Inherit from Error
+ YAMLException.prototype = Object.create(Error.prototype);
+ YAMLException.prototype.constructor = YAMLException;
- if (!compact && this.mark) {
- result += ' ' + this.mark.toString();
- }
- return result;
-};
+ YAMLException.prototype.toString = function toString(compact) {
+ var result = this.name + ': ';
+ result += this.reason || '(unknown reason)';
-module.exports = YAMLException;
+ if (!compact && this.mark) {
+ result += ' ' + this.mark.toString();
+ }
-},{}],5:[function(require,module,exports){
-'use strict';
+ return result;
+ };
-var common = require('./common');
-var YAMLException = require('./exception');
-var Mark = require('./mark');
-var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
-var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
+ module.exports = YAMLException;
+},{}],5:[function(require,module,exports){
+ 'use strict';
-var _hasOwnProperty = Object.prototype.hasOwnProperty;
+ /*eslint-disable max-len,no-use-before-define*/
+ var common = require('./common');
+ var YAMLException = require('./exception');
+ var Mark = require('./mark');
+ var DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');
+ var DEFAULT_FULL_SCHEMA = require('./schema/default_full');
-var CONTEXT_FLOW_IN = 1;
-var CONTEXT_FLOW_OUT = 2;
-var CONTEXT_BLOCK_IN = 3;
-var CONTEXT_BLOCK_OUT = 4;
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
-var CHOMPING_CLIP = 1;
-var CHOMPING_STRIP = 2;
-var CHOMPING_KEEP = 3;
+ var CONTEXT_FLOW_IN = 1;
+ var CONTEXT_FLOW_OUT = 2;
+ var CONTEXT_BLOCK_IN = 3;
+ var CONTEXT_BLOCK_OUT = 4;
-var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uD800-\uDFFF\uFFFE\uFFFF]/;
-var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
-var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
-var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
-var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
+ var CHOMPING_CLIP = 1;
+ var CHOMPING_STRIP = 2;
+ var CHOMPING_KEEP = 3;
-function is_EOL(c) {
- return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
-}
-function is_WHITE_SPACE(c) {
- return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
-}
+ var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
+ var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
+ var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
+ var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
+ var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
-function is_WS_OR_EOL(c) {
- return (c === 0x09/* Tab */) ||
- (c === 0x20/* Space */) ||
- (c === 0x0A/* LF */) ||
- (c === 0x0D/* CR */);
-}
-function is_FLOW_INDICATOR(c) {
- return 0x2C/* , */ === c ||
- 0x5B/* [ */ === c ||
- 0x5D/* ] */ === c ||
- 0x7B/* { */ === c ||
- 0x7D/* } */ === c;
-}
+ function is_EOL(c) {
+ return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);
+ }
-function fromHexCode(c) {
- var lc;
+ function is_WHITE_SPACE(c) {
+ return (c === 0x09/* Tab */) || (c === 0x20/* Space */);
+ }
- if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
- return c - 0x30;
+ function is_WS_OR_EOL(c) {
+ return (c === 0x09/* Tab */) ||
+ (c === 0x20/* Space */) ||
+ (c === 0x0A/* LF */) ||
+ (c === 0x0D/* CR */);
}
- lc = c | 0x20;
- if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
- return lc - 0x61 + 10;
+ function is_FLOW_INDICATOR(c) {
+ return 0x2C/* , */ === c ||
+ 0x5B/* [ */ === c ||
+ 0x5D/* ] */ === c ||
+ 0x7B/* { */ === c ||
+ 0x7D/* } */ === c;
}
- return -1;
-}
+ function fromHexCode(c) {
+ var lc;
+
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+ return c - 0x30;
+ }
+
+ /*eslint-disable no-bitwise*/
+ lc = c | 0x20;
+
+ if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {
+ return lc - 0x61 + 10;
+ }
-function escapedHexLen(c) {
- if (c === 0x78/* x */) { return 2; }
- if (c === 0x75/* u */) { return 4; }
- if (c === 0x55/* U */) { return 8; }
- return 0;
-}
+ return -1;
+ }
-function fromDecimalCode(c) {
- if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
- return c - 0x30;
+ function escapedHexLen(c) {
+ if (c === 0x78/* x */) { return 2; }
+ if (c === 0x75/* u */) { return 4; }
+ if (c === 0x55/* U */) { return 8; }
+ return 0;
}
- return -1;
-}
+ function fromDecimalCode(c) {
+ if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {
+ return c - 0x30;
+ }
+
+ return -1;
+ }
-function simpleEscapeSequence(c) {
- return (c === 0x30/* 0 */) ? '\x00' :
+ function simpleEscapeSequence(c) {
+ return (c === 0x30/* 0 */) ? '\x00' :
(c === 0x61/* a */) ? '\x07' :
- (c === 0x62/* b */) ? '\x08' :
- (c === 0x74/* t */) ? '\x09' :
- (c === 0x09/* Tab */) ? '\x09' :
- (c === 0x6E/* n */) ? '\x0A' :
- (c === 0x76/* v */) ? '\x0B' :
- (c === 0x66/* f */) ? '\x0C' :
- (c === 0x72/* r */) ? '\x0D' :
- (c === 0x65/* e */) ? '\x1B' :
- (c === 0x20/* Space */) ? ' ' :
- (c === 0x22/* " */) ? '\x22' :
- (c === 0x2F/* / */) ? '/' :
- (c === 0x5C/* \ */) ? '\x5C' :
- (c === 0x4E/* N */) ? '\x85' :
- (c === 0x5F/* _ */) ? '\xA0' :
- (c === 0x4C/* L */) ? '\u2028' :
- (c === 0x50/* P */) ? '\u2029' : '';
-}
-
-function charFromCodepoint(c) {
- if (c <= 0xFFFF) {
- return String.fromCharCode(c);
- } else {
+ (c === 0x62/* b */) ? '\x08' :
+ (c === 0x74/* t */) ? '\x09' :
+ (c === 0x09/* Tab */) ? '\x09' :
+ (c === 0x6E/* n */) ? '\x0A' :
+ (c === 0x76/* v */) ? '\x0B' :
+ (c === 0x66/* f */) ? '\x0C' :
+ (c === 0x72/* r */) ? '\x0D' :
+ (c === 0x65/* e */) ? '\x1B' :
+ (c === 0x20/* Space */) ? ' ' :
+ (c === 0x22/* " */) ? '\x22' :
+ (c === 0x2F/* / */) ? '/' :
+ (c === 0x5C/* \ */) ? '\x5C' :
+ (c === 0x4E/* N */) ? '\x85' :
+ (c === 0x5F/* _ */) ? '\xA0' :
+ (c === 0x4C/* L */) ? '\u2028' :
+ (c === 0x50/* P */) ? '\u2029' : '';
+ }
+
+ function charFromCodepoint(c) {
+ if (c <= 0xFFFF) {
+ return String.fromCharCode(c);
+ }
// Encode UTF-16 surrogate pair
// https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,
- ((c - 0x010000) & 0x03FF) + 0xDC00);
+ ((c - 0x010000) & 0x03FF) + 0xDC00);
}
-}
-
-var simpleEscapeCheck = new Array(256); // integer, for fast access
-var simpleEscapeMap = new Array(256);
-for (var i = 0; i < 256; i++) {
- simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
- simpleEscapeMap[i] = simpleEscapeSequence(i);
-}
+ var simpleEscapeCheck = new Array(256); // integer, for fast access
+ var simpleEscapeMap = new Array(256);
+ for (var i = 0; i < 256; i++) {
+ simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
+ simpleEscapeMap[i] = simpleEscapeSequence(i);
+ }
-function State(input, options) {
- this.input = input;
- this.filename = options['filename'] || null;
- this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
- this.onWarning = options['onWarning'] || null;
- this.legacy = options['legacy'] || false;
+ function State(input, options) {
+ this.input = input;
- this.implicitTypes = this.schema.compiledImplicit;
- this.typeMap = this.schema.compiledTypeMap;
+ this.filename = options['filename'] || null;
+ this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;
+ this.onWarning = options['onWarning'] || null;
+ this.legacy = options['legacy'] || false;
+ this.json = options['json'] || false;
- this.length = input.length;
- this.position = 0;
- this.line = 0;
- this.lineStart = 0;
- this.lineIndent = 0;
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.typeMap = this.schema.compiledTypeMap;
- this.documents = [];
+ this.length = input.length;
+ this.position = 0;
+ this.line = 0;
+ this.lineStart = 0;
+ this.lineIndent = 0;
- /*
- this.version;
- this.checkLineBreaks;
- this.tagMap;
- this.anchorMap;
- this.tag;
- this.anchor;
- this.kind;
- this.result;*/
+ this.documents = [];
-}
+ /*
+ this.version;
+ this.checkLineBreaks;
+ this.tagMap;
+ this.anchorMap;
+ this.tag;
+ this.anchor;
+ this.kind;
+ this.result;*/
+ }
-function generateError(state, message) {
- return new YAMLException(
- message,
- new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
-}
-function throwError(state, message) {
- throw generateError(state, message);
-}
+ function generateError(state, message) {
+ return new YAMLException(
+ message,
+ new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));
+ }
-function throwWarning(state, message) {
- var error = generateError(state, message);
+ function throwError(state, message) {
+ throw generateError(state, message);
+ }
- if (state.onWarning) {
- state.onWarning.call(null, error);
- } else {
- throw error;
+ function throwWarning(state, message) {
+ if (state.onWarning) {
+ state.onWarning.call(null, generateError(state, message));
+ }
}
-}
-var directiveHandlers = {
+ var directiveHandlers = {
- 'YAML': function handleYamlDirective(state, name, args) {
+ YAML: function handleYamlDirective(state, name, args) {
var match, major, minor;
@@ -899,7 +1215,7 @@ var directiveHandlers = {
}
},
- 'TAG': function handleTagDirective(state, name, args) {
+ TAG: function handleTagDirective(state, name, args) {
var handle, prefix;
@@ -924,793 +1240,809 @@ var directiveHandlers = {
state.tagMap[handle] = prefix;
}
-};
+ };
-function captureSegment(state, start, end, checkJson) {
- var _position, _length, _character, _result;
+ function captureSegment(state, start, end, checkJson) {
+ var _position, _length, _character, _result;
- if (start < end) {
- _result = state.input.slice(start, end);
+ if (start < end) {
+ _result = state.input.slice(start, end);
- if (checkJson) {
- for (_position = 0, _length = _result.length;
- _position < _length;
- _position += 1) {
- _character = _result.charCodeAt(_position);
- if (!(0x09 === _character ||
+ if (checkJson) {
+ for (_position = 0, _length = _result.length;
+ _position < _length;
+ _position += 1) {
+ _character = _result.charCodeAt(_position);
+ if (!(0x09 === _character ||
0x20 <= _character && _character <= 0x10FFFF)) {
- throwError(state, 'expected valid JSON character');
+ throwError(state, 'expected valid JSON character');
+ }
}
+ } else if (PATTERN_NON_PRINTABLE.test(_result)) {
+ throwError(state, 'the stream contains non-printable characters');
}
- }
- state.result += _result;
+ state.result += _result;
+ }
}
-}
-function mergeMappings(state, destination, source) {
- var sourceKeys, key, index, quantity;
+ function mergeMappings(state, destination, source, overridableKeys) {
+ var sourceKeys, key, index, quantity;
- if (!common.isObject(source)) {
- throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
- }
+ if (!common.isObject(source)) {
+ throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
+ }
- sourceKeys = Object.keys(source);
+ sourceKeys = Object.keys(source);
- for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
- key = sourceKeys[index];
+ for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
+ key = sourceKeys[index];
- if (!_hasOwnProperty.call(destination, key)) {
- destination[key] = source[key];
+ if (!_hasOwnProperty.call(destination, key)) {
+ destination[key] = source[key];
+ overridableKeys[key] = true;
+ }
}
}
-}
-function storeMappingPair(state, _result, keyTag, keyNode, valueNode) {
- var index, quantity;
+ function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {
+ var index, quantity;
- keyNode = String(keyNode);
+ keyNode = String(keyNode);
- if (null === _result) {
- _result = {};
- }
+ if (null === _result) {
+ _result = {};
+ }
- if ('tag:yaml.org,2002:merge' === keyTag) {
- if (Array.isArray(valueNode)) {
- for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
- mergeMappings(state, _result, valueNode[index]);
+ if ('tag:yaml.org,2002:merge' === keyTag) {
+ if (Array.isArray(valueNode)) {
+ for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
+ mergeMappings(state, _result, valueNode[index], overridableKeys);
+ }
+ } else {
+ mergeMappings(state, _result, valueNode, overridableKeys);
}
} else {
- mergeMappings(state, _result, valueNode);
+ if (!state.json &&
+ !_hasOwnProperty.call(overridableKeys, keyNode) &&
+ _hasOwnProperty.call(_result, keyNode)) {
+ throwError(state, 'duplicated mapping key');
+ }
+ _result[keyNode] = valueNode;
+ delete overridableKeys[keyNode];
}
- } else {
- _result[keyNode] = valueNode;
- }
- return _result;
-}
+ return _result;
+ }
-function readLineBreak(state) {
- var ch;
+ function readLineBreak(state) {
+ var ch;
- ch = state.input.charCodeAt(state.position);
+ ch = state.input.charCodeAt(state.position);
- if (0x0A/* LF */ === ch) {
- state.position++;
- } else if (0x0D/* CR */ === ch) {
- state.position++;
- if (0x0A/* LF */ === state.input.charCodeAt(state.position)) {
+ if (0x0A/* LF */ === ch) {
state.position++;
+ } else if (0x0D/* CR */ === ch) {
+ state.position++;
+ if (0x0A/* LF */ === state.input.charCodeAt(state.position)) {
+ state.position++;
+ }
+ } else {
+ throwError(state, 'a line break is expected');
}
- } else {
- throwError(state, 'a line break is expected');
- }
-
- state.line += 1;
- state.lineStart = state.position;
-}
-function skipSeparationSpace(state, allowComments, checkIndent) {
- var lineBreaks = 0,
- ch = state.input.charCodeAt(state.position);
+ state.line += 1;
+ state.lineStart = state.position;
+ }
- while (0 !== ch) {
- while (is_WHITE_SPACE(ch)) {
- ch = state.input.charCodeAt(++state.position);
- }
+ function skipSeparationSpace(state, allowComments, checkIndent) {
+ var lineBreaks = 0,
+ ch = state.input.charCodeAt(state.position);
- if (allowComments && 0x23/* # */ === ch) {
- do {
+ while (0 !== ch) {
+ while (is_WHITE_SPACE(ch)) {
ch = state.input.charCodeAt(++state.position);
- } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && 0 !== ch);
- }
+ }
- if (is_EOL(ch)) {
- readLineBreak(state);
+ if (allowComments && 0x23/* # */ === ch) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && 0 !== ch);
+ }
- ch = state.input.charCodeAt(state.position);
- lineBreaks++;
- state.lineIndent = 0;
+ if (is_EOL(ch)) {
+ readLineBreak(state);
- while (0x20/* Space */ === ch) {
- state.lineIndent++;
- ch = state.input.charCodeAt(++state.position);
+ ch = state.input.charCodeAt(state.position);
+ lineBreaks++;
+ state.lineIndent = 0;
+
+ while (0x20/* Space */ === ch) {
+ state.lineIndent++;
+ ch = state.input.charCodeAt(++state.position);
+ }
+ } else {
+ break;
}
- } else {
- break;
}
- }
- if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) {
- throwWarning(state, 'deficient indentation');
- }
+ if (-1 !== checkIndent && 0 !== lineBreaks && state.lineIndent < checkIndent) {
+ throwWarning(state, 'deficient indentation');
+ }
- return lineBreaks;
-}
+ return lineBreaks;
+ }
-function testDocumentSeparator(state) {
- var _position = state.position,
- ch;
+ function testDocumentSeparator(state) {
+ var _position = state.position,
+ ch;
- ch = state.input.charCodeAt(_position);
+ ch = state.input.charCodeAt(_position);
- // Condition state.position === state.lineStart is tested
- // in parent on each call, for efficiency. No needs to test here again.
- if ((0x2D/* - */ === ch || 0x2E/* . */ === ch) &&
- state.input.charCodeAt(_position + 1) === ch &&
- state.input.charCodeAt(_position+ 2) === ch) {
+ // Condition state.position === state.lineStart is tested
+ // in parent on each call, for efficiency. No needs to test here again.
+ if ((0x2D/* - */ === ch || 0x2E/* . */ === ch) &&
+ state.input.charCodeAt(_position + 1) === ch &&
+ state.input.charCodeAt(_position + 2) === ch) {
- _position += 3;
+ _position += 3;
- ch = state.input.charCodeAt(_position);
+ ch = state.input.charCodeAt(_position);
- if (ch === 0 || is_WS_OR_EOL(ch)) {
- return true;
+ if (ch === 0 || is_WS_OR_EOL(ch)) {
+ return true;
+ }
}
- }
- return false;
-}
-
-function writeFoldedLines(state, count) {
- if (1 === count) {
- state.result += ' ';
- } else if (count > 1) {
- state.result += common.repeat('\n', count - 1);
- }
-}
-
-
-function readPlainScalar(state, nodeIndent, withinFlowCollection) {
- var preceding,
- following,
- captureStart,
- captureEnd,
- hasPendingContent,
- _line,
- _lineStart,
- _lineIndent,
- _kind = state.kind,
- _result = state.result,
- ch;
-
- ch = state.input.charCodeAt(state.position);
-
- if (is_WS_OR_EOL(ch) ||
- is_FLOW_INDICATOR(ch) ||
- 0x23/* # */ === ch ||
- 0x26/* & */ === ch ||
- 0x2A/* * */ === ch ||
- 0x21/* ! */ === ch ||
- 0x7C/* | */ === ch ||
- 0x3E/* > */ === ch ||
- 0x27/* ' */ === ch ||
- 0x22/* " */ === ch ||
- 0x25/* % */ === ch ||
- 0x40/* @ */ === ch ||
- 0x60/* ` */ === ch) {
return false;
}
- if (0x3F/* ? */ === ch || 0x2D/* - */ === ch) {
- following = state.input.charCodeAt(state.position + 1);
-
- if (is_WS_OR_EOL(following) ||
- withinFlowCollection && is_FLOW_INDICATOR(following)) {
- return false;
+ function writeFoldedLines(state, count) {
+ if (1 === count) {
+ state.result += ' ';
+ } else if (count > 1) {
+ state.result += common.repeat('\n', count - 1);
}
}
- state.kind = 'scalar';
- state.result = '';
- captureStart = captureEnd = state.position;
- hasPendingContent = false;
- while (0 !== ch) {
- if (0x3A/* : */ === ch) {
- following = state.input.charCodeAt(state.position+1);
+ function readPlainScalar(state, nodeIndent, withinFlowCollection) {
+ var preceding,
+ following,
+ captureStart,
+ captureEnd,
+ hasPendingContent,
+ _line,
+ _lineStart,
+ _lineIndent,
+ _kind = state.kind,
+ _result = state.result,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (is_WS_OR_EOL(ch) ||
+ is_FLOW_INDICATOR(ch) ||
+ 0x23/* # */ === ch ||
+ 0x26/* & */ === ch ||
+ 0x2A/* * */ === ch ||
+ 0x21/* ! */ === ch ||
+ 0x7C/* | */ === ch ||
+ 0x3E/* > */ === ch ||
+ 0x27/* ' */ === ch ||
+ 0x22/* " */ === ch ||
+ 0x25/* % */ === ch ||
+ 0x40/* @ */ === ch ||
+ 0x60/* ` */ === ch) {
+ return false;
+ }
+
+ if (0x3F/* ? */ === ch || 0x2D/* - */ === ch) {
+ following = state.input.charCodeAt(state.position + 1);
if (is_WS_OR_EOL(following) ||
withinFlowCollection && is_FLOW_INDICATOR(following)) {
- break;
+ return false;
}
+ }
- } else if (0x23/* # */ === ch) {
- preceding = state.input.charCodeAt(state.position - 1);
+ state.kind = 'scalar';
+ state.result = '';
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
- if (is_WS_OR_EOL(preceding)) {
- break;
- }
+ while (0 !== ch) {
+ if (0x3A/* : */ === ch) {
+ following = state.input.charCodeAt(state.position + 1);
- } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
- withinFlowCollection && is_FLOW_INDICATOR(ch)) {
- break;
+ if (is_WS_OR_EOL(following) ||
+ withinFlowCollection && is_FLOW_INDICATOR(following)) {
+ break;
+ }
- } else if (is_EOL(ch)) {
- _line = state.line;
- _lineStart = state.lineStart;
- _lineIndent = state.lineIndent;
- skipSeparationSpace(state, false, -1);
+ } else if (0x23/* # */ === ch) {
+ preceding = state.input.charCodeAt(state.position - 1);
- if (state.lineIndent >= nodeIndent) {
- hasPendingContent = true;
- ch = state.input.charCodeAt(state.position);
- continue;
- } else {
- state.position = captureEnd;
- state.line = _line;
- state.lineStart = _lineStart;
- state.lineIndent = _lineIndent;
+ if (is_WS_OR_EOL(preceding)) {
+ break;
+ }
+
+ } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||
+ withinFlowCollection && is_FLOW_INDICATOR(ch)) {
break;
+
+ } else if (is_EOL(ch)) {
+ _line = state.line;
+ _lineStart = state.lineStart;
+ _lineIndent = state.lineIndent;
+ skipSeparationSpace(state, false, -1);
+
+ if (state.lineIndent >= nodeIndent) {
+ hasPendingContent = true;
+ ch = state.input.charCodeAt(state.position);
+ continue;
+ } else {
+ state.position = captureEnd;
+ state.line = _line;
+ state.lineStart = _lineStart;
+ state.lineIndent = _lineIndent;
+ break;
+ }
}
- }
- if (hasPendingContent) {
- captureSegment(state, captureStart, captureEnd, false);
- writeFoldedLines(state, state.line - _line);
- captureStart = captureEnd = state.position;
- hasPendingContent = false;
- }
+ if (hasPendingContent) {
+ captureSegment(state, captureStart, captureEnd, false);
+ writeFoldedLines(state, state.line - _line);
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
+ }
+
+ if (!is_WHITE_SPACE(ch)) {
+ captureEnd = state.position + 1;
+ }
- if (!is_WHITE_SPACE(ch)) {
- captureEnd = state.position + 1;
+ ch = state.input.charCodeAt(++state.position);
}
- ch = state.input.charCodeAt(++state.position);
- }
+ captureSegment(state, captureStart, captureEnd, false);
- captureSegment(state, captureStart, captureEnd, false);
+ if (state.result) {
+ return true;
+ }
- if (state.result) {
- return true;
- } else {
state.kind = _kind;
state.result = _result;
return false;
}
-}
-
-function readSingleQuotedScalar(state, nodeIndent) {
- var ch,
- captureStart, captureEnd;
- ch = state.input.charCodeAt(state.position);
+ function readSingleQuotedScalar(state, nodeIndent) {
+ var ch,
+ captureStart, captureEnd;
- if (0x27/* ' */ !== ch) {
- return false;
- }
+ ch = state.input.charCodeAt(state.position);
- state.kind = 'scalar';
- state.result = '';
- state.position++;
- captureStart = captureEnd = state.position;
+ if (0x27/* ' */ !== ch) {
+ return false;
+ }
- while (0 !== (ch = state.input.charCodeAt(state.position))) {
- if (0x27/* ' */ === ch) {
- captureSegment(state, captureStart, state.position, true);
- ch = state.input.charCodeAt(++state.position);
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
+ while (0 !== (ch = state.input.charCodeAt(state.position))) {
if (0x27/* ' */ === ch) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
+
+ if (0x27/* ' */ === ch) {
+ captureStart = captureEnd = state.position;
+ state.position++;
+ } else {
+ return true;
+ }
+
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
captureStart = captureEnd = state.position;
- state.position++;
+
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a single quoted scalar');
+
} else {
- return true;
+ state.position++;
+ captureEnd = state.position;
}
+ }
- } else if (is_EOL(ch)) {
- captureSegment(state, captureStart, captureEnd, true);
- writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
- captureStart = captureEnd = state.position;
+ throwError(state, 'unexpected end of the stream within a single quoted scalar');
+ }
- } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
- throwError(state, 'unexpected end of the document within a single quoted scalar');
+ function readDoubleQuotedScalar(state, nodeIndent) {
+ var captureStart,
+ captureEnd,
+ hexLength,
+ hexResult,
+ tmp,
+ ch;
- } else {
- state.position++;
- captureEnd = state.position;
- }
- }
+ ch = state.input.charCodeAt(state.position);
- throwError(state, 'unexpected end of the stream within a single quoted scalar');
-}
+ if (0x22/* " */ !== ch) {
+ return false;
+ }
-function readDoubleQuotedScalar(state, nodeIndent) {
- var captureStart,
- captureEnd,
- hexLength,
- hexResult,
- tmp, tmpEsc,
- ch;
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
- ch = state.input.charCodeAt(state.position);
+ while (0 !== (ch = state.input.charCodeAt(state.position))) {
+ if (0x22/* " */ === ch) {
+ captureSegment(state, captureStart, state.position, true);
+ state.position++;
+ return true;
- if (0x22/* " */ !== ch) {
- return false;
- }
+ } else if (0x5C/* \ */ === ch) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
- state.kind = 'scalar';
- state.result = '';
- state.position++;
- captureStart = captureEnd = state.position;
+ if (is_EOL(ch)) {
+ skipSeparationSpace(state, false, nodeIndent);
- while (0 !== (ch = state.input.charCodeAt(state.position))) {
- if (0x22/* " */ === ch) {
- captureSegment(state, captureStart, state.position, true);
- state.position++;
- return true;
+ // TODO: rework to inline fn with no type cast?
+ } else if (ch < 256 && simpleEscapeCheck[ch]) {
+ state.result += simpleEscapeMap[ch];
+ state.position++;
- } else if (0x5C/* \ */ === ch) {
- captureSegment(state, captureStart, state.position, true);
- ch = state.input.charCodeAt(++state.position);
+ } else if ((tmp = escapedHexLen(ch)) > 0) {
+ hexLength = tmp;
+ hexResult = 0;
- if (is_EOL(ch)) {
- skipSeparationSpace(state, false, nodeIndent);
+ for (; hexLength > 0; hexLength--) {
+ ch = state.input.charCodeAt(++state.position);
- //TODO: rework to inline fn with no type cast?
- } else if (ch < 256 && simpleEscapeCheck[ch]) {
- state.result += simpleEscapeMap[ch];
- state.position++;
+ if ((tmp = fromHexCode(ch)) >= 0) {
+ hexResult = (hexResult << 4) + tmp;
- } else if ((tmp = escapedHexLen(ch)) > 0) {
- hexLength = tmp;
- hexResult = 0;
+ } else {
+ throwError(state, 'expected hexadecimal character');
+ }
+ }
- for (; hexLength > 0; hexLength--) {
- ch = state.input.charCodeAt(++state.position);
+ state.result += charFromCodepoint(hexResult);
- if ((tmp = fromHexCode(ch)) >= 0) {
- hexResult = (hexResult << 4) + tmp;
+ state.position++;
- } else {
- throwError(state, 'expected hexadecimal character');
- }
+ } else {
+ throwError(state, 'unknown escape sequence');
}
- state.result += charFromCodepoint(hexResult);
+ captureStart = captureEnd = state.position;
- state.position++;
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+ captureStart = captureEnd = state.position;
+
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a double quoted scalar');
} else {
- throwError(state, 'unknown escape sequence');
+ state.position++;
+ captureEnd = state.position;
}
+ }
- captureStart = captureEnd = state.position;
+ throwError(state, 'unexpected end of the stream within a double quoted scalar');
+ }
- } else if (is_EOL(ch)) {
- captureSegment(state, captureStart, captureEnd, true);
- writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
- captureStart = captureEnd = state.position;
+ function readFlowCollection(state, nodeIndent) {
+ var readNext = true,
+ _line,
+ _tag = state.tag,
+ _result,
+ _anchor = state.anchor,
+ following,
+ terminator,
+ isPair,
+ isExplicitPair,
+ isMapping,
+ overridableKeys = {},
+ keyNode,
+ keyTag,
+ valueNode,
+ ch;
- } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
- throwError(state, 'unexpected end of the document within a double quoted scalar');
+ ch = state.input.charCodeAt(state.position);
+ if (ch === 0x5B/* [ */) {
+ terminator = 0x5D;/* ] */
+ isMapping = false;
+ _result = [];
+ } else if (ch === 0x7B/* { */) {
+ terminator = 0x7D;/* } */
+ isMapping = true;
+ _result = {};
} else {
- state.position++;
- captureEnd = state.position;
- }
- }
-
- throwError(state, 'unexpected end of the stream within a double quoted scalar');
-}
-
-function readFlowCollection(state, nodeIndent) {
- var readNext = true,
- _line,
- _tag = state.tag,
- _result,
- _anchor = state.anchor,
- following,
- terminator,
- isPair,
- isExplicitPair,
- isMapping,
- keyNode,
- keyTag,
- valueNode,
- ch;
-
- ch = state.input.charCodeAt(state.position);
-
- if (ch === 0x5B/* [ */) {
- terminator = 0x5D/* ] */;
- isMapping = false;
- _result = [];
- } else if (ch === 0x7B/* { */) {
- terminator = 0x7D/* } */;
- isMapping = true;
- _result = {};
- } else {
- return false;
- }
+ return false;
+ }
- if (null !== state.anchor) {
- state.anchorMap[state.anchor] = _result;
- }
+ if (null !== state.anchor) {
+ state.anchorMap[state.anchor] = _result;
+ }
- ch = state.input.charCodeAt(++state.position);
+ ch = state.input.charCodeAt(++state.position);
- while (0 !== ch) {
- skipSeparationSpace(state, true, nodeIndent);
+ while (0 !== ch) {
+ skipSeparationSpace(state, true, nodeIndent);
- ch = state.input.charCodeAt(state.position);
+ ch = state.input.charCodeAt(state.position);
- if (ch === terminator) {
- state.position++;
- state.tag = _tag;
- state.anchor = _anchor;
- state.kind = isMapping ? 'mapping' : 'sequence';
- state.result = _result;
- return true;
- } else if (!readNext) {
- throwError(state, 'missed comma between flow collection entries');
- }
+ if (ch === terminator) {
+ state.position++;
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = isMapping ? 'mapping' : 'sequence';
+ state.result = _result;
+ return true;
+ } else if (!readNext) {
+ throwError(state, 'missed comma between flow collection entries');
+ }
- keyTag = keyNode = valueNode = null;
- isPair = isExplicitPair = false;
+ keyTag = keyNode = valueNode = null;
+ isPair = isExplicitPair = false;
- if (0x3F/* ? */ === ch) {
- following = state.input.charCodeAt(state.position + 1);
+ if (0x3F/* ? */ === ch) {
+ following = state.input.charCodeAt(state.position + 1);
- if (is_WS_OR_EOL(following)) {
- isPair = isExplicitPair = true;
- state.position++;
- skipSeparationSpace(state, true, nodeIndent);
+ if (is_WS_OR_EOL(following)) {
+ isPair = isExplicitPair = true;
+ state.position++;
+ skipSeparationSpace(state, true, nodeIndent);
+ }
}
- }
- _line = state.line;
- composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
- keyTag = state.tag;
- keyNode = state.result;
- skipSeparationSpace(state, true, nodeIndent);
+ _line = state.line;
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ keyTag = state.tag;
+ keyNode = state.result;
+ skipSeparationSpace(state, true, nodeIndent);
- ch = state.input.charCodeAt(state.position);
+ ch = state.input.charCodeAt(state.position);
- if ((isExplicitPair || state.line === _line) && 0x3A/* : */ === ch) {
- isPair = true;
- ch = state.input.charCodeAt(++state.position);
- skipSeparationSpace(state, true, nodeIndent);
- composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
- valueNode = state.result;
- }
+ if ((isExplicitPair || state.line === _line) && 0x3A/* : */ === ch) {
+ isPair = true;
+ ch = state.input.charCodeAt(++state.position);
+ skipSeparationSpace(state, true, nodeIndent);
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ valueNode = state.result;
+ }
- if (isMapping) {
- storeMappingPair(state, _result, keyTag, keyNode, valueNode);
- } else if (isPair) {
- _result.push(storeMappingPair(state, null, keyTag, keyNode, valueNode));
- } else {
- _result.push(keyNode);
- }
+ if (isMapping) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
+ } else if (isPair) {
+ _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));
+ } else {
+ _result.push(keyNode);
+ }
- skipSeparationSpace(state, true, nodeIndent);
+ skipSeparationSpace(state, true, nodeIndent);
- ch = state.input.charCodeAt(state.position);
+ ch = state.input.charCodeAt(state.position);
- if (0x2C/* , */ === ch) {
- readNext = true;
- ch = state.input.charCodeAt(++state.position);
- } else {
- readNext = false;
+ if (0x2C/* , */ === ch) {
+ readNext = true;
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ readNext = false;
+ }
}
+
+ throwError(state, 'unexpected end of the stream within a flow collection');
}
- throwError(state, 'unexpected end of the stream within a flow collection');
-}
+ function readBlockScalar(state, nodeIndent) {
+ var captureStart,
+ folding,
+ chomping = CHOMPING_CLIP,
+ detectedIndent = false,
+ textIndent = nodeIndent,
+ emptyLines = 0,
+ atMoreIndented = false,
+ tmp,
+ ch;
-function readBlockScalar(state, nodeIndent) {
- var captureStart,
- folding,
- chomping = CHOMPING_CLIP,
- detectedIndent = false,
- textIndent = nodeIndent,
- emptyLines = 0,
- atMoreIndented = false,
- tmp,
- ch;
+ ch = state.input.charCodeAt(state.position);
- ch = state.input.charCodeAt(state.position);
+ if (ch === 0x7C/* | */) {
+ folding = false;
+ } else if (ch === 0x3E/* > */) {
+ folding = true;
+ } else {
+ return false;
+ }
- if (ch === 0x7C/* | */) {
- folding = false;
- } else if (ch === 0x3E/* > */) {
- folding = true;
- } else {
- return false;
- }
+ state.kind = 'scalar';
+ state.result = '';
- state.kind = 'scalar';
- state.result = '';
+ while (0 !== ch) {
+ ch = state.input.charCodeAt(++state.position);
- while (0 !== ch) {
- ch = state.input.charCodeAt(++state.position);
+ if (0x2B/* + */ === ch || 0x2D/* - */ === ch) {
+ if (CHOMPING_CLIP === chomping) {
+ chomping = (0x2B/* + */ === ch) ? CHOMPING_KEEP : CHOMPING_STRIP;
+ } else {
+ throwError(state, 'repeat of
<TRUNCATED>