js-yaml.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. 'use strict';
  2. var fs = require('fs');
  3. var _loader = require('./js-yaml/loader');
  4. var jsyaml = module.exports = {};
  5. jsyaml.scan = function scan(stream, callback, Loader) {
  6. Loader = (Loader || _loader.SafeLoader);
  7. var loader = new Loader(stream);
  8. while (loader.checkToken()) {
  9. callback(loader.getToken());
  10. }
  11. };
  12. jsyaml.compose = function compose(stream, Loader) {
  13. Loader = (Loader || _loader.SafeLoader);
  14. var loader = new Loader(stream);
  15. return loader.getSingleNode();
  16. };
  17. jsyaml.load = function load(stream, Loader) {
  18. Loader = (Loader || _loader.Loader);
  19. var loader = new Loader(stream);
  20. return loader.getSingleData();
  21. };
  22. jsyaml.loadAll = function loadAll(stream, callback, Loader) {
  23. Loader = (Loader || _loader.Loader);
  24. var loader = new Loader(stream);
  25. while (loader.checkData()) {
  26. callback(loader.getData());
  27. }
  28. };
  29. jsyaml.safeLoad = function load(stream) {
  30. return jsyaml.load(stream, _loader.SafeLoader);
  31. };
  32. jsyaml.safeLoadAll = function loadAll(stream, callback) {
  33. jsyaml.loadAll(stream, callback, _loader.SafeLoader);
  34. };
  35. /**
  36. * jsyaml.addConstructor(tag, constructor[, Loader]) -> Void
  37. * Add a constructor for the given tag.
  38. *
  39. * Constructor is a function that accepts a Loader instance
  40. * and a node object and produces the corresponding JavaScript object.
  41. **/
  42. jsyaml.addConstructor = function addConstructor(tag, constructor, Loader) {
  43. (Loader || _loader.Loader).addConstructor(tag, constructor);
  44. };
  45. // Register extensions handler
  46. (function () {
  47. var require_handler = function (module, filename) {
  48. var fd = fs.openSync(filename, 'r');
  49. // fill in documents
  50. module.exports = [];
  51. jsyaml.loadAll(fd, function (doc) { module.exports.push(doc); });
  52. fs.closeSync(fd);
  53. };
  54. // register require extensions only if we're on node.js
  55. // hack for browserify
  56. if (undefined !== require.extensions) {
  57. require.extensions['.yml'] = require_handler;
  58. require.extensions['.yaml'] = require_handler;
  59. }
  60. }());