UNPKG

vox-core

Version:

Runtime de aplicaciones multiplataforma

97 lines (77 loc) 2.42 kB
/*** * @author James Suárez * Este módulo trae la información de cada cultura. **/ var cultureInfoFile= __dirname + "/cultureinfo.vz"; var IO= core.System.IO; //var cultureInfoStream= new IO.FileStream(cultureInfoFile, IO.FileMode.open, IO.FileAccess.readWrite); //core.VW.Vcf; //var cultureInfoVcf= new core.VW.Vcf(cultureInfoStream); //cultureInfoVcf.optimizeForRead() var cultureInfoZip= new core.System.Compression.ZipFile(cultureInfoFile) var SG= core.System.Globalization; var cached={}; var mod= module.exports= function(){} // Obtiene la información mod.getData= function(/* int or string */culture){ if(typeof culture=="number"){ var data= mod.getData("01LCIDs"); if(!data[culture]){ throw new SG.CultureNotFoundException(culture); } return mod.getData(data[culture]); } if(culture.toUpperCase()=="INVARIANT"){ culture=".json"; } else{ culture=culture+".json"; } if(cached[culture]){ return cached[culture]; } try{ //var data= cultureInfoVcf.read(culture); var zipEntries= cultureInfoZip.getEntries(), zipEntry,data, jsonData for(var i=0;i<zipEntries.length;i++){ zipEntry= zipEntries[i] if(zipEntry.entryName==culture){ data= zipEntry.getData() jsonData= JSON.parse(data.toString()); return cached[culture]= jsonData } } } catch(e){ throw new SG.CultureNotFoundException(culture + " " + e.message,e); } throw new SG.CultureNotFoundException(culture + " " + e.message,e); } mod.getDataFromRegion= function(/* int or string */regionId){ var regions= mod.getData("01regions"); var cmp; if(typeof regionId=="number"){ cmp=mod.numCompare; } else{ regionId=regionId.toString().toUpperCase(); cmp= mod.stringCompare; } var data; regions.regions.forEach(function(region){ if(cmp(region,regionId)){ data= region; return false; } }); if(!data){ throw new core.System.ArgumentException("No se pudo obtener una región del ID: " + regionId + ". Esto significa que paso un ID de cultura Neutral o no es válido el argumento regionId"); } return mod.getData(data.cultureName); } mod.numCompare= function(val1, val2){ return (val1.LCID==val2); } mod.stringCompare= function(val1, val2){ return (val2.length==3? (val1.ThreeLetterISORegionName==val2): val1.TwoLetterISORegionName==val2) || val1.cultureName==val2; }