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