diff --git a/src/api.js b/src/api.js index 1c360cbf..86fd9caf 100644 --- a/src/api.js +++ b/src/api.js @@ -28,6 +28,16 @@ var spf = {}; spf.init = function(opt_config) {}; +/** + * Set global configuration without initialization. + * + * @param {string} key The configuration key. + * @param {string} value The configuration value. + * @return {spf.config.Value} The configuration value. + */ +spf.config = function(key, value) {}; + + /** * Disposes SPF. */ diff --git a/src/client/config.js b/src/client/config.js index f30e31d4..723e05a7 100644 --- a/src/client/config.js +++ b/src/client/config.js @@ -55,7 +55,13 @@ spf.config.init = function(opt_config) { var config = opt_config || {}; // Set primary configs; each has a default. for (var key in spf.config.defaults) { - var value = (key in config) ? config[key] : spf.config.defaults[key]; + // config is already define with spf.config, keep define values + if (spf.config.has(key)) { + var value = (key in config) ? config[key] : spf.config.get(key); + } else { + var value = (key in config) ? config[key] : spf.config.defaults[key]; + } + spf.config.set(key, value); } // Set advanced and experimental configs; none have defaults. diff --git a/src/client/main.js b/src/client/main.js index 4c4a39a4..75c63728 100644 --- a/src/client/main.js +++ b/src/client/main.js @@ -39,6 +39,18 @@ spf.main.init = function(opt_config) { }; +/** + * Set global configuration without initialization. + * + * @param {string} key The configuration key. + * @param {string} value The configuration value. + * @return {spf.config.Value} The configuration value. + */ +spf.main.config = function(key, value) { + return spf.config.set(key, value); +}; + + /** * Checks to see if SPF can be initialized. * @@ -101,6 +113,7 @@ spf.main.discover_(); /** @private {!Object} */ spf.main.api_ = { 'init': spf.main.init, + 'config': spf.main.config, 'dispose': spf.main.dispose, 'navigate': spf.nav.navigate, 'load': spf.nav.load,