blob: b405f617a54b12245537704e926f1ca0103c3504 [file] [log] [blame]
// Copyright 2014 Cognitect. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
goog.provide("com.cognitect.transit.impl.reader");
goog.require("com.cognitect.transit.impl.decoder");
goog.require("com.cognitect.transit.caching");
goog.scope(function () {
var reader = com.cognitect.transit.impl.reader,
decoder = com.cognitect.transit.impl.decoder,
caching = com.cognitect.transit.caching;
/**
* A JSON unmarshaller
* @constructor
*/
reader.JSONUnmarshaller = function Transit$JSONUnmarshaller(opts) {
this.decoder = new decoder.Decoder(opts);
};
/**
* @param {string} str a JSON string
* @param {caching.ReadCache} cache a read cache
* @returns {*}
*/
reader.JSONUnmarshaller.prototype.unmarshal = function (str, cache) {
return this.decoder.decode(JSON.parse(str), cache);
};
/**
* A transit reader
* @constructor
* @param {reader.JSONUnmarshaller} unmarshaller
* @param {Object=} options
*/
reader.Reader = function Transit$Reader(unmarshaller, options) {
this.unmarshaller = unmarshaller;
this.options = options || {};
this.cache = this.options["cache"] ? this.options["cache"] : new caching.ReadCache();
};
/**
* @param {string} str a string to be read
* @returns {*}
*/
reader.Reader.prototype.read = function (str) {
var ret = this.unmarshaller.unmarshal(str, this.cache)
this.cache.clear();
return ret;
};
reader.Reader.prototype["read"] = reader.Reader.prototype.read;
});