/*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
/**\r
- * HTML text parser.\r
- * @constructor\r
+ * Creates a {@link CKEDITOR.htmlParser} class instance.\r
+ * @class Provides an "event like" system to parse strings of HTML data.\r
* @example\r
+ * var parser = new CKEDITOR.htmlParser();\r
+ * parser.onTagOpen = function( tagName, attributes, selfClosing )\r
+ * {\r
+ * alert( tagName );\r
+ * };\r
+ * parser.parse( '<p>Some <b>text</b>.</p>' );\r
*/\r
CKEDITOR.htmlParser = function()\r
{\r
this._ =\r
{\r
- htmlPartsRegex : new RegExp( '<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:[^"\'>]+)|(?:"[^"]*")|(?:\'[^\']*\'))*)\\/?>))', 'g' )\r
+ htmlPartsRegex : new RegExp( '<(?:(?:\\/([^>]+)>)|(?:!--([\\S|\\s]*?)-->)|(?:([^\\s>]+)\\s*((?:(?:"[^"]*")|(?:\'[^\']*\')|[^"\'>])*)\\/?>))', 'g' )\r
};\r
};\r
\r
* @param {String} comment The comment text.\r
* @example\r
* var parser = new CKEDITOR.htmlParser();\r
- * parser.onText = function( comment )\r
+ * parser.onComment = function( comment )\r
* {\r
* alert( comment ); // e.g. " Example "\r
* });\r
if ( ( tagName = parts[ 3 ] ) )\r
{\r
tagName = tagName.toLowerCase();\r
+\r
+ // There are some tag names that can break things, so let's\r
+ // simply ignore them when parsing. (#5224)\r
+ if ( /="/.test( tagName ) )\r
+ continue;\r
+\r
var attribs = {},\r
attribMatch,\r
attribsPart = parts[ 4 ],\r