Compare commits
	
		
			No commits in common. "v1.0.2" and "master" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										41
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					Copyright 2018 AJ ONeal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is open source software; you can redistribute it and/or modify it under the
 | 
				
			||||||
 | 
					terms of either:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   a) the "MIT License"
 | 
				
			||||||
 | 
					   b) the "Apache-2.0 License"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MIT License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Apache-2.0 License Summary
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   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.
 | 
				
			||||||
@ -12,9 +12,10 @@ This works in both the Browser and SSJS.
 | 
				
			|||||||
Notes
 | 
					Notes
 | 
				
			||||||
----
 | 
					----
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This uses the ["Flanagan / Miller device"](http://groups.google.com/group/nodejs/msg/0670a986a2906aeb) rather than the Crockford's original.
 | 
					`typeOf` is taken from `jQuery.type`, which is more accurate than Crockford's original and even simpler
 | 
				
			||||||
 | 
					than the ["Flanagan / Miller device"](http://groups.google.com/group/nodejs/msg/0670a986a2906aeb).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
There is [a more specific typeof()](http://rolandog.com/archives/2007/01/18/typeof-a-more-specific-typeof/) implementation worthy of consideration.
 | 
					There is [a more specific typeof()](http://rolandog.com/archives/2007/01/18/typeof-a-more-specific-typeof/) implementation also worthy of consideration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Globals
 | 
					Globals
 | 
				
			||||||
====
 | 
					====
 | 
				
			||||||
 | 
				
			|||||||
@ -1,18 +1,23 @@
 | 
				
			|||||||
/*jslint onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true */
 | 
					/*jslint onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true */
 | 
				
			||||||
"use strict";
 | 
					 | 
				
			||||||
(function () {
 | 
					(function () {
 | 
				
			||||||
    function typeOf(value) {
 | 
					    "use strict";
 | 
				
			||||||
        var s = typeof value;
 | 
					
 | 
				
			||||||
        if (s === 'object') {
 | 
					    var global = Function('return this')()
 | 
				
			||||||
            if (value) {
 | 
					      , classes = "Boolean Number String Function Array Date RegExp Object".split(" ")
 | 
				
			||||||
                if ((/array/i).test(({}).toString.call(value))) {
 | 
					      , i
 | 
				
			||||||
                    s = 'array';
 | 
					      , name
 | 
				
			||||||
                }
 | 
					      , class2type = {}
 | 
				
			||||||
            } else {
 | 
					      ;
 | 
				
			||||||
                s = 'null';
 | 
					
 | 
				
			||||||
 | 
					    for (i in classes) {
 | 
				
			||||||
 | 
					      if (classes.hasOwnProperty(i)) {
 | 
				
			||||||
 | 
					        name = classes[i];
 | 
				
			||||||
 | 
					        class2type["[object " + name + "]"] = name.toLowerCase();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
        return s;
 | 
					
 | 
				
			||||||
 | 
					    function typeOf(obj) {
 | 
				
			||||||
 | 
					      return (null === obj || undefined === obj) ? String(obj) : class2type[Object.prototype.toString.call(obj)] || "object";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function isEmpty(o) {
 | 
					    function isEmpty(o) {
 | 
				
			||||||
@ -90,15 +95,11 @@
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Boiler Plate
 | 
					    // CommonJS / npm / Ender.JS
 | 
				
			||||||
    if ('undefined' === typeof module) { module = {}; }
 | 
					 | 
				
			||||||
    module.exports = {
 | 
					    module.exports = {
 | 
				
			||||||
        typeOf: typeOf,
 | 
					        typeOf: typeOf,
 | 
				
			||||||
        isEmpty: isEmpty
 | 
					        isEmpty: isEmpty
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    if ('undefined' === typeof global) { global = window; }
 | 
					 | 
				
			||||||
    global.typeOf = global.typeOf || typeOf;
 | 
					    global.typeOf = global.typeOf || typeOf;
 | 
				
			||||||
    global.isEmpty = global.isEmpty || isEmpty;
 | 
					    global.isEmpty = global.isEmpty || isEmpty;
 | 
				
			||||||
    if ('undefined' === typeof provide) { provide = function () {}; }
 | 
					 | 
				
			||||||
    provide('remedial');
 | 
					 | 
				
			||||||
}());
 | 
					}());
 | 
				
			||||||
							
								
								
									
										33
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								package.json
									
									
									
									
									
								
							@ -1,23 +1,14 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
 | 
					  "name"          : "remedial",
 | 
				
			||||||
  "contributors": [ "Douglas Crockford <douglas@crockford.com>" ],
 | 
					  "description"   : "Deprecated. Utilities for ES3, most of which have been adopted or superseded in ES5.1. Adapted from Douglas Crockford's Remedial JavaScript",
 | 
				
			||||||
  "dependencies": {},
 | 
					  "url"           : "http://javascript.crockford.com/remedial.html",
 | 
				
			||||||
  "description": "Deprecated. Utilities for ES3, most of which have been adopted or superseded in ES5.1. Adapted from Douglas Crockford's Remedial JavaScript",
 | 
					  "keywords"      : ["util", "isEmpty", "typeOf", "entityify", "quote", "supplant", "trim"],
 | 
				
			||||||
  "engines": {
 | 
					  "author"        : "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com)",
 | 
				
			||||||
    "node": "*"
 | 
					  "contributors"  : [ "Douglas Crockford <douglas@crockford.com>" ],
 | 
				
			||||||
  },
 | 
					  "dependencies"  : {},
 | 
				
			||||||
  "keywords": [
 | 
					  "engines"       : { "node": "*" },
 | 
				
			||||||
    "util",
 | 
					  "homepage"      : "https://git.coolaj86.com/coolaj86/remedial.js",
 | 
				
			||||||
    "isEmpty",
 | 
					  "license"       : "(MIT OR Apache-2.0)",
 | 
				
			||||||
    "typeOf",
 | 
					  "main"          : "./index",
 | 
				
			||||||
    "entityify",
 | 
					  "version"       : "1.0.8"
 | 
				
			||||||
    "quote",
 | 
					 | 
				
			||||||
    "supplant",
 | 
					 | 
				
			||||||
    "trim"
 | 
					 | 
				
			||||||
  ],
 | 
					 | 
				
			||||||
  "lib": "lib",
 | 
					 | 
				
			||||||
  "main": "./lib/remedial",
 | 
					 | 
				
			||||||
  "name": "remedial",
 | 
					 | 
				
			||||||
  "homepage": "https://git.coolaj86.com/coolaj86/remedial.js",
 | 
					 | 
				
			||||||
  "version": "1.0.2"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@
 | 
				
			|||||||
  // Expected: 3
 | 
					  // Expected: 3
 | 
				
			||||||
  // Node/V8/FF: 0
 | 
					  // Node/V8/FF: 0
 | 
				
			||||||
  console.log(typeOf(b));
 | 
					  console.log(typeOf(b));
 | 
				
			||||||
  // Expected: Object
 | 
					  // Expected: Object (with Flanagan / Miller device or jQuery's type)
 | 
				
			||||||
  // Node/V8/FF: array (with Crockford's original)
 | 
					  // Node/V8/FF: array (with Crockford's original)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										31
									
								
								tests/types.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								tests/types.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					(function () {
 | 
				
			||||||
 | 
					  require('../lib/remedial');
 | 
				
			||||||
 | 
					  var n = null,
 | 
				
			||||||
 | 
					    u;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (
 | 
				
			||||||
 | 
					    'object' === typeOf(Object.create([])) &&
 | 
				
			||||||
 | 
					    'object' === typeOf(Object.create(function () {})) &&
 | 
				
			||||||
 | 
					    'array' === typeOf([]) &&
 | 
				
			||||||
 | 
					    'string' === typeOf('') &&
 | 
				
			||||||
 | 
					    'regexp' === typeOf(/ /) &&
 | 
				
			||||||
 | 
					    'number' === typeOf(0) &&
 | 
				
			||||||
 | 
					    'function' === typeOf(function () {}) &&
 | 
				
			||||||
 | 
					    'function' === typeOf((function () {
 | 
				
			||||||
 | 
					      var a = function () {}; 
 | 
				
			||||||
 | 
					      a.foo = 'bar';
 | 
				
			||||||
 | 
					      return a;
 | 
				
			||||||
 | 
					    }())) &&
 | 
				
			||||||
 | 
					    'boolean' === typeOf(true) &&
 | 
				
			||||||
 | 
					    'boolean' === typeOf(false) &&
 | 
				
			||||||
 | 
					    'date' === typeOf(new Date()) &&
 | 
				
			||||||
 | 
					    'undefined' === typeOf(u) &&
 | 
				
			||||||
 | 
					    'undefined' === typeOf(undefined) &&
 | 
				
			||||||
 | 
					    'null' === typeOf(n) &&
 | 
				
			||||||
 | 
					    'object' === typeOf({})
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
 | 
					    console.log('passed type detections')
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    console.log('failed type detections')
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}());
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user