autocomplete-sources.js revision 5b968bdd0754c385548517248b8d1e1f51c336ec
// Add prototype properties and methods to AutoCompleteBase. * Regular expression used to determine whether a String source is a YQL * @property _YQL_SOURCE_REGEX * Runs before AutoCompleteBase's <code>_createObjectSource()</code> method * and augments it to support additional object-based source types. * @method _beforeCreateObjectSource // If the object is a JSONPRequest instance, try to use it as a JSONP // Fall back to a basic object source. * Creates a DataSource-like object that uses <code>Y.io</code> as a source. * See the <code>source</code> attribute for more details. * @method _createIOSource * @param {String} source URL. * @return {Object} DataSource-like object. // Private internal _sendRequest method that will be assigned to // ioSource.sendRequest once io-base and json-parse are available. // Return immediately on a cached response. // Cancel any outstanding requests. // Keep track of the most recent request in case there are multiple // requests while we're waiting for the IO module to load. Only the // most recent request will be sent. // Lazy-load the io-base and json-parse modules if necessary, // then overwrite the sendRequest method to bypass this check in Y.
use(
'io-base',
'json-parse',
function () {
* Creates a DataSource-like object that uses the specified JSONPRequest * instance as a source. See the <code>source</code> attribute for more * @method _createJSONPSource * @param {JSONPRequest|String} source URL string or JSONPRequest instance. * @return {Object} DataSource-like object. // Hack alert: JSONPRequest currently doesn't support // per-request callbacks, so we're reaching into the protected // _config object to make it happen. // This limitation is mentioned in the following JSONP // Keep track of the most recent request in case there are multiple // requests while we're waiting for the JSONP module to load. Only // the most recent request will be sent. // Lazy-load the JSONP module if necessary, then overwrite the // sendRequest method to bypass this check in the future. Y.
use(
'jsonp',
function () {
// Turn the source into a JSONPRequest instance if it isn't * Creates a DataSource-like object that calls the specified URL or * executes the specified YQL query for results. If the string starts * with "select ", "use ", or "set " (case-insensitive), it's assumed to be * a YQL query; otherwise, it's assumed to be a URL (which may be absolute * or relative). URLs containing a "{callback}" placeholder are assumed to * be JSONP URLs; all others will use XHR. See the <code>source</code> * attribute for more details. * @method _createStringSource * @param {String} source URL or YQL query. * @return {Object} DataSource-like object. // Looks like a YQL query. // Contains a {callback} param and isn't a YQL query, so it must be // Not a YQL query or JSONP, so we'll assume it's an XHR URL. * Creates a DataSource-like object that uses the specified YQL query string * to create a YQL-based source. See the <code>source</code> attribute for * details. If no <code>resultListLocator</code> is defined, this method * will set a best-guess locator that might work for many typical YQL * @method _createYQLSource * @param {String} source YQL query. * @return {Object} DataSource-like object. // Only create a new YQLRequest instance if this is the // first request. For subsequent requests, we'll reuse the allowCache:
false // temp workaround until JSONP has per-URL callback proxies // Keep track of the most recent request in case there are multiple // requests while we're waiting for the YQL module to load. Only the // most recent request will be sent. // Lazy-load the YQL module if necessary, then overwrite the // sendRequest method to bypass this check in the future. Y.
use(
'yql',
function () {
* Default resultListLocator used when a string-based YQL source is set and * the implementer hasn't already specified one. * @method _defaultYQLLocator * @param {Object} response YQL response object. // If there's only a single value on YQL's results object, that // value almost certainly contains the array of results we want. If // there are 0 or 2+ values, then the values themselves are most // likely the results we want. * Returns a formatted XHR URL based on the specified base <i>url</i>, * <i>query</i>, and the current <i>requestTemplate</i> if any. * @param {String} url Base URL. * @param {String} query AutoComplete query. * @return {String} Formatted URL. * URL formatter passed to <code>JSONPRequest</code> instances. * @method _jsonpFormatter * @return {String} Formatted URL // Add attributes to AutoCompleteBase. * YQL environment file URL to load when the <code>source</code> is set to * a YQL query. Set this to <code>null</code> to use the default Open Data * URL protocol to use when the <code>source</code> is set to a YQL query. // Tell AutoCompleteBase about the new source types it can now support. jsonp :
'_createJSONPSource',
object:
'_beforeCreateObjectSource',
// Run our version before the base version. string:
'_createStringSource',