forked from stjaenicke/GeoTemCo
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
XLS/XLSX loading using https://github.com/SheetJS/js-xls / https://gi…
- Loading branch information
Sebastian Kruse
committed
Aug 8, 2014
1 parent
0060c15
commit 4d66aeb
Showing
5 changed files
with
5,639 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys | ||
if (!Object.keys) { | ||
Object.keys = (function () { | ||
var hasOwnProperty = Object.prototype.hasOwnProperty, | ||
hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), | ||
dontEnums = [ | ||
'toString', | ||
'toLocaleString', | ||
'valueOf', | ||
'hasOwnProperty', | ||
'isPrototypeOf', | ||
'propertyIsEnumerable', | ||
'constructor' | ||
], | ||
dontEnumsLength = dontEnums.length; | ||
|
||
return function (obj) { | ||
if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object'); | ||
|
||
var result = []; | ||
|
||
for (var prop in obj) { | ||
if (hasOwnProperty.call(obj, prop)) result.push(prop); | ||
} | ||
|
||
if (hasDontEnumBug) { | ||
for (var i=0; i < dontEnumsLength; i++) { | ||
if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]); | ||
} | ||
} | ||
return result; | ||
}; | ||
})(); | ||
} | ||
|
||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter | ||
if (!Array.prototype.filter) | ||
{ | ||
Array.prototype.filter = function(fun /*, thisp */) | ||
{ | ||
"use strict"; | ||
|
||
if (this == null) | ||
throw new TypeError(); | ||
|
||
var t = Object(this); | ||
var len = t.length >>> 0; | ||
if (typeof fun != "function") | ||
throw new TypeError(); | ||
|
||
var res = []; | ||
var thisp = arguments[1]; | ||
for (var i = 0; i < len; i++) | ||
{ | ||
if (i in t) | ||
{ | ||
var val = t[i]; // in case fun mutates this | ||
if (fun.call(thisp, val, i, t)) | ||
res.push(val); | ||
} | ||
} | ||
|
||
return res; | ||
}; | ||
} | ||
|
||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim | ||
if (!String.prototype.trim) { | ||
String.prototype.trim = function () { | ||
return this.replace(/^\s+|\s+$/g, ''); | ||
}; | ||
} | ||
|
||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach | ||
if (!Array.prototype.forEach) | ||
{ | ||
Array.prototype.forEach = function(fun /*, thisArg */) | ||
{ | ||
"use strict"; | ||
|
||
if (this === void 0 || this === null) | ||
throw new TypeError(); | ||
|
||
var t = Object(this); | ||
var len = t.length >>> 0; | ||
if (typeof fun !== "function") | ||
throw new TypeError(); | ||
|
||
var thisArg = arguments.length >= 2 ? arguments[1] : void 0; | ||
for (var i = 0; i < len; i++) | ||
{ | ||
if (i in t) | ||
fun.call(thisArg, t[i], i, t); | ||
} | ||
}; | ||
} | ||
|
||
// Production steps of ECMA-262, Edition 5, 15.4.4.19 | ||
// Reference: http://es5.github.com/#x15.4.4.19 | ||
if (!Array.prototype.map) { | ||
Array.prototype.map = function(callback, thisArg) { | ||
|
||
var T, A, k; | ||
|
||
if (this == null) { | ||
throw new TypeError(" this is null or not defined"); | ||
} | ||
|
||
// 1. Let O be the result of calling ToObject passing the |this| value as the argument. | ||
var O = Object(this); | ||
|
||
// 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". | ||
// 3. Let len be ToUint32(lenValue). | ||
var len = O.length >>> 0; | ||
|
||
// 4. If IsCallable(callback) is false, throw a TypeError exception. | ||
// See: http://es5.github.com/#x9.11 | ||
if (typeof callback !== "function") { | ||
throw new TypeError(callback + " is not a function"); | ||
} | ||
|
||
// 5. If thisArg was supplied, let T be thisArg; else let T be undefined. | ||
if (thisArg) { | ||
T = thisArg; | ||
} | ||
|
||
// 6. Let A be a new array created as if by the expression new Array(len) where Array is | ||
// the standard built-in constructor with that name and len is the value of len. | ||
A = new Array(len); | ||
|
||
// 7. Let k be 0 | ||
k = 0; | ||
|
||
// 8. Repeat, while k < len | ||
while(k < len) { | ||
|
||
var kValue, mappedValue; | ||
|
||
// a. Let Pk be ToString(k). | ||
// This is implicit for LHS operands of the in operator | ||
// b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. | ||
// This step can be combined with c | ||
// c. If kPresent is true, then | ||
if (k in O) { | ||
|
||
// i. Let kValue be the result of calling the Get internal method of O with argument Pk. | ||
kValue = O[ k ]; | ||
|
||
// ii. Let mappedValue be the result of calling the Call internal method of callback | ||
// with T as the this value and argument list containing kValue, k, and O. | ||
mappedValue = callback.call(T, kValue, k, O); | ||
|
||
// iii. Call the DefineOwnProperty internal method of A with arguments | ||
// Pk, Property Descriptor {Value: mappedValue, : true, Enumerable: true, Configurable: true}, | ||
// and false. | ||
|
||
// In browsers that support Object.defineProperty, use the following: | ||
// Object.defineProperty(A, Pk, { value: mappedValue, writable: true, enumerable: true, configurable: true }); | ||
|
||
// For best browser support, use the following: | ||
A[ k ] = mappedValue; | ||
} | ||
// d. Increase k by 1. | ||
k++; | ||
} | ||
|
||
// 9. return A | ||
return A; | ||
}; | ||
} | ||
|
||
// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf | ||
if (!Array.prototype.indexOf) { | ||
Array.prototype.indexOf = function (searchElement, fromIndex) { | ||
if ( this === undefined || this === null ) { | ||
throw new TypeError( '"this" is null or not defined' ); | ||
} | ||
|
||
var length = this.length >>> 0; // Hack to convert object.length to a UInt32 | ||
|
||
fromIndex = +fromIndex || 0; | ||
|
||
if (Math.abs(fromIndex) === Infinity) { | ||
fromIndex = 0; | ||
} | ||
|
||
if (fromIndex < 0) { | ||
fromIndex += length; | ||
if (fromIndex < 0) { | ||
fromIndex = 0; | ||
} | ||
} | ||
|
||
for (;fromIndex < length; fromIndex++) { | ||
if (this[fromIndex] === searchElement) { | ||
return fromIndex; | ||
} | ||
} | ||
|
||
return -1; | ||
}; | ||
} | ||
// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray | ||
|
||
if (! Array.isArray) { | ||
Array.isArray = function(obj) { | ||
return Object.prototype.toString.call(obj) === "[object Array]"; | ||
}; | ||
} | ||
|
||
// https://github.com/ttaubert/node-arraybuffer-slice | ||
// (c) 2013 Tim Taubert <[email protected]> | ||
// arraybuffer-slice may be freely distributed under the MIT license. | ||
|
||
"use strict"; | ||
|
||
if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) { | ||
ArrayBuffer.prototype.slice = function (begin, end) { | ||
begin = (begin|0) || 0; | ||
var num = this.byteLength; | ||
end = end === (void 0) ? num : (end|0); | ||
|
||
// Handle negative values. | ||
if (begin < 0) begin += num; | ||
if (end < 0) end += num; | ||
|
||
if (num === 0 || begin >= num || begin >= end) { | ||
return new ArrayBuffer(0); | ||
} | ||
|
||
var length = Math.min(num - begin, end - begin); | ||
var target = new ArrayBuffer(length); | ||
var targetArray = new Uint8Array(target); | ||
targetArray.set(new Uint8Array(this, begin, length)); | ||
return target; | ||
}; | ||
} |
Large diffs are not rendered by default.
Oops, something went wrong.
Oops, something went wrong.