76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Adds HTML Parser support to the base Widget class
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module widget
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule widget-htmlparser
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @for Widget
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Object hash, defining how attribute values are to be parsed from
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * markup contained in the widget's content box. e.g.:
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // Set single Node references using selector syntax
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // (selector is run through node.one)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * titleNode: "span.yui-title",
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // Set NodeList references using selector syntax
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // (array indicates selector is to be run through node.all)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * listNodes: ["li.yui-item"],
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // Set other attribute types, using a parse function.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * // Context is set to the widget instance.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * label: function(contentBox) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * return contentBox.one("span.title").get("innerHTML");
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property HTML_PARSER
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The build configuration for the Widget class.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Defines the static fields which need to be aggregated,
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * when this class is used as the main class passed to
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * the <a href="Base.html#method_build">Base.build</a> method.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _buildCfg
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * The DOM node to parse for configuration values, passed to the Widget's HTML_PARSER definition
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute srcNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type String | Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @writeOnce
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _getSrcNode
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {Node} The Node to apply HTML_PARSER to
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _applyParsedConfig
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {Object} The merged configuration literal
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _applyParsedConfig : function(node, cfg, parsedCfg) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return (parsedCfg) ? Y.mix(cfg, parsedCfg, false) : cfg;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Utilitity method used to apply the <code>HTML_PARSER</code> configuration for the
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * instance, to retrieve config data values.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _applyParser
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param config {Object} User configuration object (will be populated with values from Node)
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass config = widget._applyParsedConfig(srcNode, config, parsedConfig);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Gets the HTML_PARSER definition for this instance, by merging HTML_PARSER
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * definitions across the class hierarchy.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _getHtmlParser
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @return {Object} HTML_PARSER definition for this instance
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _getHtmlParser : function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // Removed caching for kweight. This is a private method
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass // and only called once so don't need to cache HTML_PARSER