[Pkg-javascript-commits] [node-has-binary] 01/02: Imported Upstream version 0.1.6
Sebastiaan Couwenberg
sebastic at moszumanska.debian.org
Sun Mar 29 22:02:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository node-has-binary.
commit 4500a29f82b5d5a860b695c1c975bedecaaf16b1
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Sun Mar 29 22:41:48 2015 +0200
Imported Upstream version 0.1.6
---
.npmignore | 15 ++++++++
History.md | 11 ++++++
LICENSE | 20 ++++++++++
Makefile | 3 ++
README.md | 4 ++
fixtures/big.json | 1 +
index.js | 58 +++++++++++++++++++++++++++++
package.json | 14 +++++++
test.js | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 234 insertions(+)
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 0000000..a72b52e
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,15 @@
+lib-cov
+*.seed
+*.log
+*.csv
+*.dat
+*.out
+*.pid
+*.gz
+
+pids
+logs
+results
+
+npm-debug.log
+node_modules
diff --git a/History.md b/History.md
new file mode 100644
index 0000000..a1e3867
--- /dev/null
+++ b/History.md
@@ -0,0 +1,11 @@
+
+0.1.6 / 2015-01-24
+==================
+
+ * fix "undefined function" bug when iterating
+ an object created with Object.create(null) [gunta]
+
+0.1.5 / 2014-09-04
+==================
+
+ * prevent browserify from bundling `Buffer`
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e6603cd
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Kevin Roark
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..1d90629
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,3 @@
+
+test:
+ @./node_modules/.bin/mocha test.js
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..76a0035
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+has-binarydata.js
+=================
+
+Simple module to test if an object contains binary data
diff --git a/fixtures/big.json b/fixtures/big.json
new file mode 100644
index 0000000..3172879
--- /dev/null
+++ b/fixtures/big.json
@@ -0,0 +1 @@
+{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{"k":{" [...]
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..7684d23
--- /dev/null
+++ b/index.js
@@ -0,0 +1,58 @@
+
+/*
+ * Module requirements.
+ */
+
+var isArray = require('isarray');
+
+/**
+ * Module exports.
+ */
+
+module.exports = hasBinary;
+
+/**
+ * Checks for binary data.
+ *
+ * Right now only Buffer and ArrayBuffer are supported..
+ *
+ * @param {Object} anything
+ * @api public
+ */
+
+function hasBinary(data) {
+
+ function _hasBinary(obj) {
+ if (!obj) return false;
+
+ if ( (global.Buffer && global.Buffer.isBuffer(obj)) ||
+ (global.ArrayBuffer && obj instanceof ArrayBuffer) ||
+ (global.Blob && obj instanceof Blob) ||
+ (global.File && obj instanceof File)
+ ) {
+ return true;
+ }
+
+ if (isArray(obj)) {
+ for (var i = 0; i < obj.length; i++) {
+ if (_hasBinary(obj[i])) {
+ return true;
+ }
+ }
+ } else if (obj && 'object' == typeof obj) {
+ if (obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key) && _hasBinary(obj[key])) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ return _hasBinary(data);
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..111c225
--- /dev/null
+++ b/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "has-binary",
+ "version": "0.1.6",
+ "description": "A function that takes anything in javascript and returns true if its argument contains binary data.",
+ "dependencies": {
+ "isarray": "0.0.1"
+ },
+ "devDependencies": {
+ "better-assert": "1.0.0",
+ "mocha": "1.17.1"
+ },
+ "author": "Kevin Roark",
+ "license": "MIT"
+}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..5320d4f
--- /dev/null
+++ b/test.js
@@ -0,0 +1,108 @@
+
+var hasBinary = require('./');
+var assert = require('better-assert');
+var fs = require('fs');
+
+var start = new Date();
+
+describe('has-binarydata', function(){
+
+ it('should work with buffer', function(){
+ assert(hasBinary(fs.readFileSync('./test.js')));
+ });
+
+ it('should work with an array that does not contain binary', function() {
+ var arr = [1, 'cool', 2];
+ assert(!hasBinary(arr));
+ });
+
+ it('should work with an array that contains a buffer', function() {
+ var arr = [1, new Buffer('asdfasdf', 'utf8'), 2];
+ assert(hasBinary(arr));
+ });
+
+ it('should work with an object that does not contain binary', function() {
+ var ob = {a: 'a', b: [], c: 1234};
+ assert(!hasBinary(ob));
+ });
+
+ it('should work with an object that contains a buffer', function() {
+ var ob = {a: 'a', b: new Buffer('abc'), c: 1234};
+ assert(hasBinary(ob));
+ });
+
+ it('should work with null', function() {
+ assert(!hasBinary(null));
+ });
+
+ it('should work with undefined', function() {
+ assert(!hasBinary(undefined));
+ });
+
+ it('should work with a complex object that contains undefined and no binary', function() {
+ var ob = {
+ x: ['a', 'b', 123],
+ y: undefined,
+ z: {a: 'x', b: 'y', c: 3, d: null},
+ w: []
+ };
+ assert(!hasBinary(ob));
+ });
+
+ it('should work with a complex object that contains undefined and binary', function() {
+ var ob = {
+ x: ['a', 'b', 123],
+ y: undefined,
+ z: {a: 'x', b: 'y', c: 3, d: null},
+ w: [],
+ bin: new Buffer('xxx')
+ };
+ assert(hasBinary(ob));
+ });
+
+ it('should handle a very large json object with no binary', function(done) {
+ this.timeout();
+ fs.readFile(__dirname + '/fixtures/big.json', function(err, data) {
+ if (err) {
+ console.log(err);
+ assert(false);
+ }
+ data = JSON.parse(data);
+ assert(!hasBinary(data));
+ done();
+ });
+ });
+
+ it('should handle a very large json object with binary', function(done) {
+ this.timeout();
+ fs.readFile(__dirname + '/fixtures/big.json', function(err, data) {
+ if (err) {
+ console.log(err);
+ assert(false);
+ }
+ var ob = JSON.parse(data);
+ ob.bin = {bin: {bin: {bin: new Buffer('abc')}}};
+ assert(hasBinary(ob));
+ done();
+ });
+ });
+
+ if (global.ArrayBuffer) {
+ it('should work with an ArrayBuffer', function() {
+ assert(hasBinary(new ArrayBuffer()));
+ });
+ }
+
+ if (global.Blob) {
+ it('should work with a Blob', function() {
+ assert(hasBinary(new Blob()));
+ });
+ }
+
+ it('should print the test time', function() {
+ var end = new Date();
+ var diff = end - start;
+ console.log('\ntest time: ' + diff + ' ms');
+ });
+
+});
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-has-binary.git
More information about the Pkg-javascript-commits
mailing list