| '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)); |
| }; |