1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * vim: ts=4:sw=4:expandtab
- */
- window.textsecure = window.textsecure || {};
- /*********************************
- *** Type conversion utilities ***
- *********************************/
- // Strings/arrays
- //TODO: Throw all this shit in favor of consistent types
- //TODO: Namespace
- var StaticByteBufferProto = new dcodeIO.ByteBuffer().__proto__;
- var StaticArrayBufferProto = new ArrayBuffer().__proto__;
- var StaticUint8ArrayProto = new Uint8Array().__proto__;
- function getString(thing) {
- if (thing === Object(thing)) {
- if (thing.__proto__ == StaticUint8ArrayProto)
- return String.fromCharCode.apply(null, thing);
- if (thing.__proto__ == StaticArrayBufferProto)
- return getString(new Uint8Array(thing));
- if (thing.__proto__ == StaticByteBufferProto)
- return thing.toString("binary");
- }
- return thing;
- }
- function getStringable(thing) {
- return (typeof thing == "string" || typeof thing == "number" || typeof thing == "boolean" ||
- (thing === Object(thing) &&
- (thing.__proto__ == StaticArrayBufferProto ||
- thing.__proto__ == StaticUint8ArrayProto ||
- thing.__proto__ == StaticByteBufferProto)));
- }
- // Number formatting utils
- window.textsecure.utils = function() {
- var self = {};
- self.unencodeNumber = function(number) {
- return number.split(".");
- };
- self.isNumberSane = function(number) {
- return number[0] == "+" &&
- /^[0-9]+$/.test(number.substring(1));
- }
- /**************************
- *** JSON'ing Utilities ***
- **************************/
- function ensureStringed(thing) {
- if (getStringable(thing))
- return getString(thing);
- else if (thing instanceof Array) {
- var res = [];
- for (var i = 0; i < thing.length; i++)
- res[i] = ensureStringed(thing[i]);
- return res;
- } else if (thing === Object(thing)) {
- var res = {};
- for (var key in thing)
- res[key] = ensureStringed(thing[key]);
- return res;
- } else if (thing === null) {
- return null;
- }
- throw new Error("unsure of how to jsonify object of type " + typeof thing);
- }
- self.jsonThing = function(thing) {
- return JSON.stringify(ensureStringed(thing));
- }
- return self;
- }();
|