| "use strict"; |
| |
| var utils = require("../utils"); |
| var support = require("../support"); |
| var ArrayReader = require("./ArrayReader"); |
| var StringReader = require("./StringReader"); |
| var NodeBufferReader = require("./NodeBufferReader"); |
| var Uint8ArrayReader = require("./Uint8ArrayReader"); |
| |
| /** |
| * Create a reader adapted to the data. |
| * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read. |
| * @return {DataReader} the data reader. |
| */ |
| module.exports = function (data) { |
| var type = utils.getTypeOf(data); |
| utils.checkSupport(type); |
| if (type === "string" && !support.uint8array) { |
| return new StringReader(data); |
| } |
| if (type === "nodebuffer") { |
| return new NodeBufferReader(data); |
| } |
| if (support.uint8array) { |
| return new Uint8ArrayReader(utils.transformTo("uint8array", data)); |
| } |
| return new ArrayReader(utils.transformTo("array", data)); |
| }; |