I'm watching out for a shortcut way to use values from a dictionary as an internal reference inside the dictionary. The code shows what I mean:
var dict = {
    'entrance':{
        'rate1': 5,
        'rate2':10,
        'rate3':20,
    },
    'movies':{
        'theDarkKnight':{
            '00:00':<entrance.rate1>,
            '18:00':<entrance.rate2>,
            '21:00':<entrance.rate3>
        },
        ...
    };
is there a sneaky way to do this?
No. The best you can do is:
var dict = {
    'entrance' : {
        'rate1' : 5,
        'rate2' : 10,
        'rate3' : 20,
    }
};
dict.movies = {
    'theDarkKnight' : {
        '00:00' : dict.entrance.rate1,
        '18:00' : dict.entrance.rate2,
        '21:00' : dict.entrance.rate3
    },
    ...
};
                        You could use mustache and define your json as a "mustache template", then run mustache to render the template. Take into account you would need to run (n) times if you have nested dependencies. In this case you have 3 dependencies ABC --> AB --> A.
var mustache = require('mustache');
var obj = {
  A : 'A',
  AB : '{{A}}' + 'B',
  ABC : '{{AB}}' + 'C'
}
function render(stringTemplate){
  while(thereAreStillMustacheTags(stringTemplate)){
    stringTemplate = mustache.render(stringTemplate, JSON.parse(stringTemplate));
  }
  return stringTemplate;
}
function thereAreStillMustacheTags(stringTemplate){
  if(stringTemplate.indexOf('{{')!=-1)
    return true;
  return false;
}
console.log(render(JSON.stringify(obj)));
And the output is:
{"A":"A","AB":"AB","ABC":"ABC"}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With