aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/tweak/registry.js
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/tweak/registry.js')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/tweak/registry.js310
1 files changed, 0 insertions, 310 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/tweak/registry.js b/contexts/data/lib/closure-library/closure/goog/tweak/registry.js
deleted file mode 100644
index 83dd68e..0000000
--- a/contexts/data/lib/closure-library/closure/goog/tweak/registry.js
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2009 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Definition for goog.tweak.Registry.
- * Most clients should not use this class directly, but instead use the API
- * defined in tweak.js. One possible use case for directly using TweakRegistry
- * is to register tweaks that are not known at compile time.
- *
- * @author agrieve@google.com (Andrew Grieve)
- */
-
-goog.provide('goog.tweak.Registry');
-
-goog.require('goog.asserts');
-goog.require('goog.debug.Logger');
-goog.require('goog.object');
-goog.require('goog.string');
-goog.require('goog.tweak.BaseEntry');
-goog.require('goog.uri.utils');
-
-
-
-/**
- * Singleton that manages all tweaks. This should be instantiated only from
- * goog.tweak.getRegistry().
- * @param {string} queryParams Value of window.location.search.
- * @param {!Object.<string|number|boolean>} compilerOverrides Default value
- * overrides set by the compiler.
- * @constructor
- */
-goog.tweak.Registry = function(queryParams, compilerOverrides) {
- /**
- * A map of entry id -> entry object
- * @type {!Object.<!goog.tweak.BaseEntry>}
- * @private
- */
- this.entryMap_ = {};
-
- /**
- * The map of query params to use when initializing entry settings.
- * @type {!Object.<string>}
- * @private
- */
- this.parsedQueryParams_ = goog.tweak.Registry.parseQueryParams(queryParams);
-
- /**
- * List of callbacks to call when a new entry is registered.
- * @type {!Array.<!Function>}
- * @private
- */
- this.onRegisterListeners_ = [];
-
- /**
- * A map of entry ID -> default value override for overrides set by the
- * compiler.
- * @type {!Object.<string|number|boolean>}
- * @private
- */
- this.compilerDefaultValueOverrides_ = compilerOverrides;
-
- /**
- * A map of entry ID -> default value override for overrides set by
- * goog.tweak.overrideDefaultValue().
- * @type {!Object.<string|number|boolean>}
- * @private
- */
- this.defaultValueOverrides_ = {};
-};
-
-
-/**
- * The logger for this class.
- * @type {!goog.debug.Logger}
- * @private
- */
-goog.tweak.Registry.prototype.logger_ =
- goog.debug.Logger.getLogger('goog.tweak.Registry');
-
-
-/**
- * Simple parser for query params. Makes all keys lower-case.
- * @param {string} queryParams The part of the url between the ? and the #.
- * @return {!Object.<string>} map of key->value.
- */
-goog.tweak.Registry.parseQueryParams = function(queryParams) {
- // Strip off the leading ? and split on &.
- var parts = queryParams.substr(1).split('&');
- var ret = {};
-
- for (var i = 0, il = parts.length; i < il; ++i) {
- var entry = parts[i].split('=');
- if (entry[0]) {
- ret[goog.string.urlDecode(entry[0]).toLowerCase()] =
- goog.string.urlDecode(entry[1] || '');
- }
- }
- return ret;
-};
-
-
-/**
- * Registers the given tweak setting/action.
- * @param {goog.tweak.BaseEntry} entry The entry.
- */
-goog.tweak.Registry.prototype.register = function(entry) {
- var id = entry.getId();
- var oldBaseEntry = this.entryMap_[id];
- if (oldBaseEntry) {
- if (oldBaseEntry == entry) {
- this.logger_.warning('Tweak entry registered twice: ' + id);
- return;
- }
- goog.asserts.fail(
- 'Tweak entry registered twice and with different types: ' + id);
- }
-
- // Check for a default value override, either from compiler flags or from a
- // call to overrideDefaultValue().
- var defaultValueOverride = (id in this.compilerDefaultValueOverrides_) ?
- this.compilerDefaultValueOverrides_[id] : this.defaultValueOverrides_[id];
- if (goog.isDef(defaultValueOverride)) {
- goog.asserts.assertInstanceof(entry, goog.tweak.BasePrimitiveSetting,
- 'Cannot set the default value of non-primitive setting %s',
- entry.label);
- entry.setDefaultValue(defaultValueOverride);
- }
-
- // Set its value from the query params.
- if (entry instanceof goog.tweak.BaseSetting) {
- if (entry.getParamName()) {
- entry.setInitialQueryParamValue(
- this.parsedQueryParams_[entry.getParamName()]);
- }
- }
-
- this.entryMap_[id] = entry;
- // Call all listeners.
- for (var i = 0, callback; callback = this.onRegisterListeners_[i]; ++i) {
- callback(entry);
- }
-};
-
-
-/**
- * Adds a callback to be called whenever a new tweak is added.
- * @param {!Function} func The callback.
- */
-goog.tweak.Registry.prototype.addOnRegisterListener = function(func) {
- this.onRegisterListeners_.push(func);
-};
-
-
-/**
- * @param {string} id The unique string that identifies this entry.
- * @return {boolean} Whether a tweak with the given ID is registered.
- */
-goog.tweak.Registry.prototype.hasEntry = function(id) {
- return id in this.entryMap_;
-};
-
-
-/**
- * Returns the BaseEntry with the given ID. Asserts if it does not exists.
- * @param {string} id The unique string that identifies this entry.
- * @return {!goog.tweak.BaseEntry} The entry.
- */
-goog.tweak.Registry.prototype.getEntry = function(id) {
- var ret = this.entryMap_[id];
- goog.asserts.assert(ret, 'Tweak not registered: %s', id);
- return ret;
-};
-
-
-/**
- * Returns the boolean setting with the given ID. Asserts if the ID does not
- * refer to a registered entry or if it refers to one of the wrong type.
- * @param {string} id The unique string that identifies this entry.
- * @return {!goog.tweak.BooleanSetting} The entry.
- */
-goog.tweak.Registry.prototype.getBooleanSetting = function(id) {
- var entry = this.getEntry(id);
- goog.asserts.assertInstanceof(entry, goog.tweak.BooleanSetting,
- 'getBooleanSetting called on wrong type of BaseSetting');
- return /** @type {!goog.tweak.BooleanSetting} */ (entry);
-};
-
-
-/**
- * Returns the string setting with the given ID. Asserts if the ID does not
- * refer to a registered entry or if it refers to one of the wrong type.
- * @param {string} id The unique string that identifies this entry.
- * @return {!goog.tweak.StringSetting} The entry.
- */
-goog.tweak.Registry.prototype.getStringSetting = function(id) {
- var entry = this.getEntry(id);
- goog.asserts.assertInstanceof(entry, goog.tweak.StringSetting,
- 'getStringSetting called on wrong type of BaseSetting');
- return /** @type {!goog.tweak.StringSetting} */ (entry);
-};
-
-
-/**
- * Returns the numeric setting with the given ID. Asserts if the ID does not
- * refer to a registered entry or if it refers to one of the wrong type.
- * @param {string} id The unique string that identifies this entry.
- * @return {!goog.tweak.NumericSetting} The entry.
- */
-goog.tweak.Registry.prototype.getNumericSetting = function(id) {
- var entry = this.getEntry(id);
- goog.asserts.assertInstanceof(entry, goog.tweak.NumericSetting,
- 'getNumericSetting called on wrong type of BaseSetting');
- return /** @type {!goog.tweak.NumericSetting} */ (entry);
-};
-
-
-/**
- * Creates and returns an array of all BaseSetting objects with an associted
- * query parameter.
- * @param {boolean} excludeChildEntries Exclude BooleanInGroupSettings.
- * @param {boolean} excludeNonSettings Exclude entries that are not subclasses
- * of BaseSetting.
- * @return {!Array.<!goog.tweak.BaseSetting>} The settings.
- */
-goog.tweak.Registry.prototype.extractEntries =
- function(excludeChildEntries, excludeNonSettings) {
- var entries = [];
- for (var id in this.entryMap_) {
- var entry = this.entryMap_[id];
- if (entry instanceof goog.tweak.BaseSetting) {
- if (excludeChildEntries && !entry.getParamName()) {
- continue;
- }
- } else if (excludeNonSettings) {
- continue;
- }
- entries.push(entry);
- }
- return entries;
-};
-
-
-/**
- * Returns the query part of the URL that will apply all set tweaks.
- * @param {string=} opt_existingSearchStr The part of the url between the ? and
- * the #. Uses window.location.search if not given.
- * @return {string} The query string.
- */
-goog.tweak.Registry.prototype.makeUrlQuery =
- function(opt_existingSearchStr) {
- var existingParams = opt_existingSearchStr == undefined ?
- window.location.search : opt_existingSearchStr;
-
- var sortedEntries = this.extractEntries(true /* excludeChildEntries */,
- true /* excludeNonSettings */);
- // Sort the params so that the urlQuery has stable ordering.
- sortedEntries.sort(function(a, b) {
- return goog.array.defaultCompare(a.getParamName(), b.getParamName());
- });
-
- // Add all values that are not set to their defaults.
- var keysAndValues = [];
- for (var i = 0, entry; entry = sortedEntries[i]; ++i) {
- var encodedValue = entry.getNewValueEncoded();
- if (encodedValue != null) {
- keysAndValues.push(entry.getParamName(), encodedValue);
- }
- // Strip all tweak query params from the existing query string. This will
- // make the final query string contain only the tweak settings that are set
- // to their non-default values and also maintain non-tweak related query
- // parameters.
- existingParams = goog.uri.utils.removeParam(existingParams,
- encodeURIComponent(/** @type {string} */ (entry.getParamName())));
- }
-
- var tweakParams = goog.uri.utils.buildQueryData(keysAndValues);
- // Decode spaces and commas in order to make the URL more readable.
- tweakParams = tweakParams.replace(/%2C/g, ',').replace(/%20/g, '+');
- return !tweakParams ? existingParams :
- existingParams ? existingParams + '&' + tweakParams :
- '?' + tweakParams;
-};
-
-
-/**
- * Sets a default value to use for the given tweak instead of the one passed
- * to the register* function. This function must be called before the tweak is
- * registered.
- * @param {string} id The unique string that identifies the entry.
- * @param {string|number|boolean} value The replacement value to be used as the
- * default value for the setting.
- */
-goog.tweak.Registry.prototype.overrideDefaultValue = function(id, value) {
- goog.asserts.assert(!this.hasEntry(id),
- 'goog.tweak.overrideDefaultValue must be called before the tweak is ' +
- 'registered. Tweak: %s', id);
- this.defaultValueOverrides_[id] = value;
-};
-