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