forked from enviPath/enviPy
Current Dev State
This commit is contained in:
87
static/js/ketcher2/node_modules/varstream/src/VarStream.js
generated
vendored
Executable file
87
static/js/ketcher2/node_modules/varstream/src/VarStream.js
generated
vendored
Executable file
@ -0,0 +1,87 @@
|
||||
'use strict';
|
||||
/*
|
||||
* Copyright (C) 2012 Nicolas Froidure
|
||||
*
|
||||
* This file is free software;
|
||||
* you can redistribute it and/or modify it under the terms of the GNU
|
||||
* General Public License (GPL) as published by the Free Software
|
||||
* Foundation, in version 3. It is distributed in the
|
||||
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
|
||||
*
|
||||
*/
|
||||
var DuplexStream = require('readable-stream').Duplex
|
||||
, util = require('util')
|
||||
, VarStreamReader = require('./VarStreamReader')
|
||||
, VarStreamWriter = require('./VarStreamWriter')
|
||||
;
|
||||
|
||||
// Inherit of duplex stream
|
||||
util.inherits(VarStream, DuplexStream);
|
||||
|
||||
// Constructor
|
||||
function VarStream(rootObject, rootProperty, options) {
|
||||
var self = this;
|
||||
|
||||
// Ensure new were used
|
||||
if(!(this instanceof VarStream)) {
|
||||
return new VarStream(rootObject, rootProperty, options);
|
||||
}
|
||||
|
||||
// Ensure we had root object and property
|
||||
if(!(rootObject instanceof Object)) {
|
||||
throw new Error('No root object provided.');
|
||||
}
|
||||
if('string' !== typeof rootProperty || rootProperty == '') {
|
||||
throw new Error('No root property name given.');
|
||||
}
|
||||
|
||||
// Parent constructor
|
||||
DuplexStream.call(this);
|
||||
|
||||
this._varstreamReader=new VarStreamReader(rootObject, rootProperty,
|
||||
options ? options&VarStreamReader.OPTIONS : 0);
|
||||
|
||||
this._varstreamWriter = new VarStreamWriter(function(str) {
|
||||
self.push(new Buffer(str, 'utf8'));
|
||||
}, options ? options&VarStreamWriter.OPTIONS : 0);
|
||||
|
||||
// Parse input
|
||||
this._write = function _write(chunk, encoding, done) {
|
||||
this._varstreamReader.read(chunk.toString(
|
||||
encoding !== 'buffer' ? encoding : 'utf8'
|
||||
));
|
||||
done();
|
||||
};
|
||||
|
||||
// Output data
|
||||
this._read = function _read() {
|
||||
this._varstreamWriter.write(rootObject[rootProperty]);
|
||||
this.push(null);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
// Parse helper
|
||||
VarStream.parse = function(content) {
|
||||
var root = {};
|
||||
var stream = new VarStream(root, 'prop');
|
||||
stream.write(Buffer(content));
|
||||
stream.end();
|
||||
return root.prop || {};
|
||||
};
|
||||
|
||||
// Export helper
|
||||
VarStream.stringify = function(obj) {
|
||||
var root = {prop: obj}, stream, content;
|
||||
if('object' !== typeof obj) {
|
||||
throw new Error('The stringified object must be an instance of Object.');
|
||||
}
|
||||
stream = new VarStream(root, 'prop');
|
||||
content = stream.read();
|
||||
return String(content);
|
||||
};
|
||||
|
||||
// Exporting
|
||||
VarStream.VarStreamReader = VarStream.Reader = VarStreamReader;
|
||||
VarStream.VarStreamWriter = VarStream.Writer = VarStreamWriter;
|
||||
module.exports = VarStream;
|
||||
Reference in New Issue
Block a user