vox-core
Version:
Runtime de aplicaciones multiplataforma
97 lines (77 loc) • 2.42 kB
JavaScript
/***
* @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;
}