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