Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(846)

Unified Diff: node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/examples/custom_types.js

Issue 800513006: Added vulcanize under third_party/npm_modules (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/examples/custom_types.js
diff --git a/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/examples/custom_types.js b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/examples/custom_types.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c01578416654cf7c00546617ccf5dbe1e422e97
--- /dev/null
+++ b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/examples/custom_types.js
@@ -0,0 +1,100 @@
+'use strict';
+
+
+var fs = require('fs');
+var path = require('path');
+var util = require('util');
+var yaml = require('../lib/js-yaml');
+
+
+// Let define a couple of classes...
+
+function Point(x, y, z) {
+ this.klass = 'Point';
+ this.x = x;
+ this.y = y;
+ this.z = z;
+}
+
+
+function Space(height, width, points) {
+ if (points) {
+ if (!points.every(function (point) { return point instanceof Point; })) {
+ throw new Error('A non-Point inside a points array!');
+ }
+ }
+
+ this.klass = 'Space';
+ this.height = height;
+ this.width = width;
+ this.points = points;
+}
+
+
+// Let's define YAML types to load and dump our Point/Space objects.
+
+var pointYamlType = new yaml.Type('!point', {
+ //
+ // The information used to load a Point.
+ //
+ loadKind: 'sequence', // See node kinds in YAML spec: http://www.yaml.org/spec/1.2/spec.html#kind//
+ loadResolver: function (state) {
+ // You can access actual data from YAML via `state.result`.
+ // After the resolving, you should put the resolved value into `state.result`.
+
+ if (3 === state.result.length) { // `state.result`
+ state.result = new Point(state.result[0], state.result[1], state.result[2]);
+ return true; // Resolved successfully.
+ } else {
+ return false; // Can't resolve.
+ }
+ },
+ //
+ // The information used to dump a Point.
+ //
+ dumpInstanceOf: Point, // Dump only instances of Point constructor as this YAML type.
+ dumpRepresenter: function (point) {
+ // Represent in YAML as three-element sequence.
+ return [ point.x, point.y, point.z ];
+ }
+});
+
+
+var spaceYamlType = new yaml.Type('!space', {
+ loadKind: 'mapping',
+ loadResolver: function (state) {
+ state.result = new Space(state.result.height, state.result.width, state.result.points);
+ return true;
+ },
+ dumpInstanceOf: Space
+ // `dumpRepresenter` is omitted here. So, Space objects will be dumped as is.
+ // That is regular mapping with three key-value pairs but with !space tag.
+});
+
+
+// After our types are defined, it's time to join them into a schema.
+
+var SPACE_SCHEMA = yaml.Schema.create([ spaceYamlType, pointYamlType ]);
+
+
+// And read a document using that schema.
+
+fs.readFile(path.join(__dirname, 'custom_types.yaml'), 'utf8', function (error, data) {
+ var loaded;
+
+ if (!error) {
+ loaded = yaml.load(data, { schema: SPACE_SCHEMA });
+ console.log(util.inspect(loaded, false, 20, true));
+ } else {
+ console.error(error.stack || error.message || String(error));
+ }
+});
+
+
+// There are some exports to play with this example interactively.
+
+module.exports.Point = Point;
+module.exports.Space = Space;
+module.exports.pointYamlType = pointYamlType;
+module.exports.spaceYamlType = spaceYamlType;
+module.exports.SPACE_SCHEMA = SPACE_SCHEMA;

Powered by Google App Engine
This is Rietveld 408576698