UNPKG

jquery-yohours

Version:

Jquery and bootstrap based input widget to create opening_hours data

7 lines (6 loc) 2.88 kB
(function(d,b){"function"===typeof define&&define.amd?define([],b):"object"===typeof exports?module.exports=b(require("text-encoding")):d.jedGettextParser=b()})(this,function(d){function b(){this._littleEndian;this._dataView;this._encoding;this._originalOffset;this._translationOffset}var h=d?d.TextDecoder:window.TextDecoder;b.prototype._MAGIC=2500072158;b.prototype._getEndianness=function(){if(this._dataView.getUint32(0,!0)==this._MAGIC)this._littleEndian=!0;else if(this._dataView.getUint32(0,!1)== this._MAGIC)this._littleEndian=!1;else throw Error("Not a gettext binary message catalog file.");};b.prototype._readTranslationPair=function(a,c){var b=this._dataView.getUint32(a,this._littleEndian);a=this._dataView.getUint32(a+4,this._littleEndian);try{var e=new Uint8Array(this._dataView.buffer,a,b)}catch(g){throw Error("The given ArrayBuffer data is corrupt or incomplete.");}b=this._dataView.getUint32(c,this._littleEndian);a=this._dataView.getUint32(c+4,this._littleEndian);try{var k=new Uint8Array(this._dataView.buffer, a,b)}catch(g){throw Error("The given ArrayBuffer data is corrupt or incomplete.");}return{id:e,str:k}};b.prototype._parseHeader=function(){var a=this._readTranslationPair(this._originalOffset,this._translationOffset);if(0==a.id.byteLength){var c={};(new h).decode(a.str).split("\n").forEach(function(a){var b=a.split(":");a=b.shift().trim();b=b.join(":").trim();c[a]=b});this._encoding||(a=c["Content-Type"].indexOf("charset="),-1!=a&&a+8<c["Content-Type"].length&&(this._encoding=c["Content-Type"].substring(a+ 8).toLowerCase()),this._encoding||(this._encoding="utf-8"));var b=c.Language;var e=c["Plural-Forms"]}return{"":{domain:"",lang:b,plural_forms:e}}};b.prototype._splitPlurals=function(a,c){return{id:a.split("\x00")[0],str:c.split("\x00")}};b.prototype.parse=function(a,c){if(28>a.byteLength)throw Error("The given ArrayBuffer is too small to hold a valid .mo file.");this._dataView=new DataView(a);this._encoding=c;this._getEndianness();a=this._dataView.getUint32(8,this._littleEndian);this._originalOffset= this._dataView.getUint32(12,this._littleEndian);this._translationOffset=this._dataView.getUint32(16,this._littleEndian);c=this._parseHeader();try{var b=new h(this._encoding)}catch(l){throw Error("The encoding label provided ('"+this._encoding+"') is invalid.");}for(var e=this._originalOffset+8,d=this._translationOffset+8,g=1;g<a;++g){var f=this._readTranslationPair(e,d);f=this._splitPlurals(b.decode(f.id),b.decode(f.str));c[f.id]=[].concat(f.str);e+=8;d+=8}return c};return{mo:{parse:function(a,c){c= c||{domain:"messages"};c.domain=c.domain||"messages";if(a&&0==a.byteLength)throw Error("Given ArrayBuffer is empty.");if(!a||"[object ArrayBuffer]"!=Object.prototype.toString.call(a))throw Error("First argument must be an ArrayBuffer.");a=(new b).parse(a,c.encoding);a[""].domain=c.domain;var d={};d[c.domain]=a;return d}}}});