Search code examples
javascriptnode.jsroku

Variable Dictionary Contents


I'm not sure if this is possible, or if I'm taking the wrong approach, I've tried searching, but I'm not sure about the terms.

I would like to pass a variable into the controller dict, so rather than using 'PLAY', in the lookup I could do something like controller('OPTION','PLAY')

var ip = '192.168.1.5'
var Keys = {
            HOME:          '/keypress/Home',
            REV:           '/keypress/Rev',
            FWD:           '/keypress/Fwd',
            PLAY:          '/keypress/Play',
            SELECT:        '/keypress/Select',
            LEFT:          '/keypress/Left',
            RIGHT:         '/keypress/Right',
            DOWN:          '/keypress/Down',
            UP:            '/keypress/Up',
            BACK:          '/keypress/Back',
            INSTANTREPLAY: '/keypress/InstantReplay',
            INFO:          '/keypress/Info',
            BACKSPACE:     '/keypress/Backspace',
            SEARCH:        '/keypress/Search',
            ENTER:         '/keypress/Enter',
            A:             '/keypress/Lit_a'
     }

from this:

var controller = {
                  PLAY:{
                        hostname: ip,
                        port: 8060,
                        path: Keys['PLAY'],
                        method: 'POST'
                        }
                  }

to this:

var controller = {
                  OPTION:{
                        hostname: ip,
                        port: 8060,
                        path: Keys[Key],
                        method: 'POST'
                        }
                  }

I'm trying to avoid the following

var controller = {
                  PLAY:{
                        hostname: ip,
                        port: 8060,
                        path: Keys['PLAY'],
                        method: 'POST'
                        }
                  FWD :{
                        hostname: ip,
                        port: 8060,
                        path: Keys['FWD'],
                        method: 'POST'
                        }
                  REV :{
                        hostname: ip,
                        port: 8060,
                        path: Keys['REV'],
                        method: 'POST'
                        }
                  ...

                  }

Solution

  • Were you thinking of something like this:

    controller = {
           OPTION : function(key){
                        return {
                        hostname: ip,
                        port: 8060,
                        path: Keys[key],
                        method: 'POST'
                       } 
                       }
                  }
    

    then you could get it with controller.OPTION("PLAY"). It is essentially creating the getOption() method epascerallo suggested just coupled into the controller object.