[Pkg-javascript-commits] [node-nwmatcher] annotated tag v1.2.5 created (now 872cfb9)

Wolfgang Borgert debacle at moszumanska.debian.org
Wed Oct 1 19:28:40 UTC 2014


This is an automated email from the git hooks/post-receive script.

debacle pushed a change to annotated tag v1.2.5
in repository node-nwmatcher.

        at  872cfb9   (tag)
   tagging  490903363d142c0a00bcfd7202e32e5b0bc35745 (commit)
 tagged by  Diego Perini
        on  Thu Feb 21 15:22:55 2013 +0100

- Log -----------------------------------------------------------------
Version 1.2.5

Diego Perini (647):
      first commit
      Fix npseudos
      Replace vars with longer names
      more variable expansion and syntax cleaning
      modified attributes regexp to address more cases
      tentative fixes and typos, changed attribute regexp again
      :empty detection adjusted
      changed indentation to spaces
      changed attributes regexp again, fixed disabled / checked and namespaced attributes
      added missing namespaced attributes to html node
      update and commented list of failing tests
      changed to xhtml doctype
      adjusted :not selector and recursion, compile anonymous function, and attributes test
      changes to reflect passed tests
      changed string concatenation, fixed more selectors in test unit, cleanup
      made IE pass most of the test, disabled cache by default
      fix typo errors during variable names expansion
      removed debug builds and tests
      improved caching system on W3C browsers, disabled by default on IE
      signature versions updated after recent fixes and changes on caching system
      fixed bug in case sensitivity and more cleanups
      fixed bug where multiple/mixed nth selectors would have failed, pointed out by eleith
      more fixes for the nth indexing bug (eleith), tweaked comments and other fixes
      caching disabled on IE by default, revised case sensitivity and URI attributes, cleanup and more comments
      cleanup of comments and changed some tabs, no functional changes
      update version strings to 1.0 for published release
      added DOMAttrModified to the Mutation Events, cache expires too on attribute changes
      changed version strings, added querySelectorAll for the select() method (only available on Safari > 3 currently)
      camelProps converted to an object, shorter and faster way to match attribute names
      more speed improvements, added native Selector API support, reorganized attributesMap and general cleanup
      removed unused match variable, tweaked comment
      update version strings to 1.0.1 for releasing to original Google Code repository
      fixed bug in class name check, missing spaces around match parameter
      prototype selector test unit written by Andrew Dupont, adaptor for prototype written by Samuel Lebeau
      update prototype to version 1.6.0.3 for testing with their selector unit
      jquery selector test unit, converted to standalone for use in NWMatcher testing
      needed helpers and data files for jQuery selector test unit
      complete rewrite of the engine and the caching system, now uses Mutation Events correctly if available
      an adapter/extension example on how to replicate the functionality of jQuery special selector in NWMatcher
      added a revised insensitivity map and related checks suggested by jdalton
      bug fix, forgot to clear an array used recursively
      previous clear array fix was applied at wrong line, moved down
      typo error that prevented DOMNodeRemoved events to flush the cache
      better detection for best children collection, fixes Safari 2.0.x having a different children implementation
      removed elementsCount() method, dangerous as public method, code now compiled inline
      removed expireResults() method, DOMAttrModified events will call expireCache() now
      removed getID() generation method, substituted by faster inline code
      removed unused feature testing methods and constants, fixed typo errors in comments, adjusted descriptions
      removed duplicate :root and :empty cases, were moved to structural peudo-classes
      added a check for Safari 2.0.x in insensitivityMap treatment
      reduced the caching system to get some additional performance
      fixed bug where document would go in a loop it should not enter, the children collection does not exist on document
      in previous caching optimization I forgot to clear the local storage when doing nth child queries in browser not supporting Mutation Events (IE)
      reworked stripTags() method used as replacement of buggy innerText in Safari 2, corrected regular expression and function as for kangax suggestion
      handle Opera bug with gEBCN on utf-8 class names, correctly use tested functionality (BUGGY_GEBCN)
      adjusted regexp to catch more cases of serialization for built-in functions
      added extra spaces to attribute regexp to make matching less strict
      extra check on id attribute for conflicts with name attribute (IE)
      reverted previous fix, it didn't fix anything on IE
      improved checks in selectors with ID, removed unused code
      improved byId() method by checking for conflicting names, now used in #foo selection/optimization
      fixed and improved internal getAttribute() method, now uses getAttributeNode() most of the time to avoid nasty id/name/length conflicts in html source code (especially in forms)
      reduced the number of replace() to handle special escaped chars in identifiers like ID, NAME, CLASS, now centralized in each related method (suggested by jdalton)
      changed internal name to attributesURI, added extra attributes to the list, removed unused attributesXml regexp, cleaned up some syntax, removed not pertinent comment
      reworking byId() method to catch edge cases overwriting of element properties like id/name
      cleaned up and shortened the slicing optimization block
      avoid using length property of HTML collections in byId() method
      avoid lint errors and console warnings in firefox 'strict mode', add better fix for Safari bug with selectedIndex property
      readded internal NATIVE_GEBID and BUGGY_GEBID testings as backup, current tests maybe do not completely cover all aspects of XML documents and/or document created using native implementations
      avoid warnings in firefox 'strict mode'
      commented currently unused Attributes map, now attribute name case mapping should be resolved by using getAttributeNode
      fix unicode range to include charachters 161 and higher (UNICODE 310/ISO 10646)
      changed nwmatcher version to 1.1.0 for release
      improved :not() pseudo class to accept more complex selectors as parameters, fix to avoid ID optimizations inside :not() expressions
      fixed buggy expression missing escapes in :target pseudo class resolver (jddalton)
      increment version to 1.1.1beta, applied pending fixes to previous 1.1.0
      better feature test for functional slice() method (to exclude Opera 9.2x), this let us shorten/improve the toArray() method (jddalton)
      fix inconsistency for the :xxxxx-of-type() pseudo class where it could have failed in mixed lowercase uppercase tags (jddalton), changed strategy to avoid visiting non element nodes in nthElement() and nthOfType() methods
      reduce the number of access to nodeName and className properties (kangax, jddalton), optimize result set augmentation by adding few extra variable names to main loop
      syncronize changes done to nwmatcher, optimized augmentation of the result set
      minor code changes to attributes and :target resolvers
      reduce the number of function calls by calling native getElementsByTag() directly, comment nodes bugs are handled conditionally for IE in the main loop over the result set
      added missing variables to the match() method, changed the :target resolver again to use the hash property, always define a working base document, cleaned up extra parenthesis and obsolete lines
      nwmatcher: release 1.1.1 (bugfix)
      changed all node names checks to use lower case uniformly, fixes HTML/XHTML/XML node names checking, removed ugly optimization on siblings in favor of cleaner/shorter code, adjusted comments/syntax
      revert part of previous change http://github.com/dperini/nwevents/commit/52fac32b0d7d2775339f0d1befa0aaa210e81a51 on nthElement() and nthOfType() methods, the previous variant was slightly faster
      fixed missing variable initialization (kangax)
      added back a better optimization for general siblings combinator removed in previous commits
      moved back to previous in-line code compilation, for 6 types of selectors (first|last|only)-(child|of-type), in place of more expensive function calls to NW.Dom methods
      passing host object (document) and root element (documentElement) to compiled function can improve some selectors
      fixed wrong loop termination in sibling combinator, due to optimization done in http://github.com/dperini/nwevents/commit/8777e3b3dae5ee330578e1e04f38e03267673fea
      fixed sibling loop optimization again, reversing the original strategy has been tricky for this, original loop using previousSibling left in and commented
      fixes for unicode range bugs in Safari 2.0.x using a negated hexadecimal range class instead of a unicode range class
      uniformed the feature tests, cleanup used references to avoid leaks
      fixed/improved testing in pseudo classes :active, :hover, :focus and in ui-states pseudos :enabled, :disable, :checked, :selected
      improved performance on DOM fragments, reorder of prefiltering optimizations
      minor tweaking to internal native replacements byId, byClass and getAttribute
      added new bug detection for when querySelectorAll does not take in cosideration hidden input elements while querying the DOM for :enabled or :disabled pseudos (Safari 3/4)
      fixed prototype test unit for querying enabled/disabled control elements
      expanded variable names to something meaningful in feature testing
      solved browsers bugs in qsa api implementations, reworked bugs detection to account for selecting :link pseudos broken in latest Safari browsers, doesn't handle the mailto: protocol on hyperlinks
      fixed support for UI element states and dynamic pseudo-classes, should now be more compliant to specifications (:target, :active, :focus, :link, :visited)
      fixed bug in match() method when using comma separated group of selectors (jdalton), changed compile() to accept a second 'mode' parameter, this specify compilation for match() or select() operations
      tweaked again qsa bugs detection, adjusted some comments, moved slice declaration at top for reuse and corrected :link pseudo check
      corrected behavior for selector extensions, status of each external selector should be ORed and error check should be moved out of the loop
      minor comments tweaking
      adjustment in bugs detection for querySelector API and IE8, reduced code, improved resolution through fall back client_api() (thanks to kangax for the HTML5 tip and to jdalton for tweaking/reduce the needed code)
      adjustments to CSS3/HTML5 specifications for :enabled/:disabled and :link/:visited pseudos, added small isLink() helper to reduce code size
      improved isLink() method to use hasAttribute() to comply with specs (tip from jdalton), unrolled comparisons are faster than equivalent regexp (tip from kangax)
      reverted Prototype test unit for :link as is in the original, it is correct how it tests :enabled and :disabled pseudos
      added an optional parameter in select() method that allows to pass in an initial array object, in this way libraries can pass their own Array or Array like object (kendsnyder, jdalton)
      changed the add-on to use the push() method, removed a compiler variable
      added traversal file, contain methods from Juriy Zaytsev fork, up/down/previous/next to match Prototype behavior
      improved byTags() method, removed unused variable and duplicate code, reduced two .toLowerCase() calls to an insensitive case .test()
      removed the '_' character from various RegExp, it is already included in the \w class (from comments by kangax)
      minor bug in select_qsa(), forgot to pass the new 'data' parameter to client_api() fall back method (submitted by jdalton)
      corrected and tweaked comments, reorganized/moved some code (non CSS3 standard selector moved as last), no functional changes
      added support for newer Element Traversal properties previousElementSibling/nextElementSibling to improve speed on browser supporting them like FF3.5 (suggestion by kangax)
      improved isNative() to detect methods by matching browsers specific decompilation signatures
      updated table of attributes that must be handled in a case-insensitive way, tweaked comments that turns Safari into the correct implementor in quirks-mode (jdalton)
      corrected testing for faster traversal properties 'nextElementSibling' and 'previousElementSibling' present in newer browser versions (kangax)
      forgot changes to reverse testing code for case sensitivity bugs in quirks mode (jdalton)
      corrected xhtml and html tables for case-insensititvity even for 'class' attribute exception in Quirks mode, added check for XHTML documents to assign correct table
      removed some blocks of comment lines related to attributes mapping between DOM and HTML namespace to avoid further confusion, moved HTML5 case-insensitivity comment near it's related table
      removed unused getChildren() method, leaving that in as public method was a bad idea leading to confusion as for the naming and meaning [GarretS]
      stealing decompiled signature from a more related method, preparing to be forced to accept Opera 10 unconscious way to freely do that differently for different methods even in the same browser context
      added more feature test for a recent Opera bug in QSA with the :checked pseudo-class, modular bug adding for QSA showing it's strength here: no speed penalties and no errors
      removed XHTML self closing tags on input fields since as for current specs are forbidden [jdalton]
      use a more explicit syntax to steal the 'window.open' decompiled signature
      remove dangerous comments between 'else's and 'if's statements, they will confuse the packer while minifying sources
      fixed syntax errors, variables redeclarations, ambiguosity and missing function return values, should always run jslint and not blindly trust :-)
      replaced some UTF-8 chars in the code after being hitten by minifiers, a great improvement to keep the charset range 0-127
      corrected another error in the check for the correct property name [pdanpdan]
      fixed a typo error, some missing chars in the validator expression and an overwritten arguments
      cleaned up syntax/indentation and jslint warnings
      Safari 2 support fixes, missing compatMode property and fails to return named functions
      marked as version 1.2.0, removed an extra comment line
      moved Safari 2 stripTags() near other fixes for the same browser, methods only used internally not exposed as public, added missing comments to the compatMode fix too (I like comments)
      removed all instances of the 'this' keyword, removed the need to use the call() method to adjust context, should make things easier for implementors
      changed a variable name to camel case for consistency in class resolver (kangax), corrected duplicated comments and some wrongly described return values
      replaced mistyped char in the tagName regular expression
      fixed a doctype handling/misbehavior in Safari 3.1, if not set/present or if set to the new HTML5 format document.doctype.systemId will be null (jdalton)
      tweaked the regular expressions for ID, TAG, CLASS and grouping, they are now longer but slightly faster, they will be needed for the upcoming changes to the select() iterator
      better cleanups in the feature testing sections, shortened code and maybe avoid some mem leak on IE, changed a couple of comments and removed unused ascii charset references
      further modifications to the regular expressions and their grouping, optimized the operators and pseudo matching code to better extract parameters and avoid code for repetitive replaces of parenthesis and apices
      reviewed id, tag and class conditionals, choosed the most spec compliant matching, leaved out some speed improvement in favor of less variables declared in the scope of each selection, removed commented alternatives
      improve descendants and children macthers by exiting the loop before stepping up to passed context and as soon as one match is found
      added a new check to avoid caching disconnected nodes and fragments (Mutation Events will not work on those nodes), new isDisconnected() internal method added to resolve this, added a 'from' parameter also to the matcher, it may be useful for future extensions
      added a bit of native elements api for child pseudos just to start with it, could be improved for newer browsers in a later review
      moved docType variable atop the file, removed dangerous '*' fallback in byTag() method to avoid returning inverted selections, cleaned up variable names in byClass reusing the same names for consistency and better file compression
      context handling moved out of conditional block to ensure context is always correctly set, changed to [ ] notation in place of new Array()
      reverted to use array augmentation through the length property in compiled functions
      changed Snapshot object into constructor and made methods reference members of the Snapshot prototype (jdalton, webreflection)
      new timestamp, removing unused methods they are now embedded in the compiled functions, faster and less code
      adding new concatList() and concatCall() methods that will replace toArray() for fast nodeList conversion and concatenation (jdalton)
      make the caching mechanism temporarily pause itself if it detect an abusive caching pattern (jdalton)
      fixed bug with IE where the engine was checking elements against the document using .contains()
      adjustments to the latest caching patch, define private var 'snap' after the Snapshot prototype is defined and create the 'isCacheable' variable for easy access inside 'client_api (jdalton)'
      reverting to older method for id matching in bad html, this is needed to pass Prototype selector unit test
      remove an optimization that seems to break recursion with multiple combined operators
      removed unused code to optimize size and speed, residuals of testing IE caching alternatives (fearphage)
      added an extra fallback method to isDisconnected() for browsers missing both .compareDocumentPosition() and .contains() in case one exists (jdalton)
      added 'documentOrder()' and 'unique()' methods preparing to handle coming iterations method
      change QSA branch to use new concatList() and concatCall() methods to handle the new callback parameter, removed some duplicate validations and checks
      reworked and renamed 'documentOrder' method to 'sortByContextOrder()' (jdalton, kangax)
      fixed bug in non yet used unique() method: data was not returned, use client_api when passed a context, make more extraneous API private to avoid confusing developers with cluttered API
      indentation and white spaces adjustments
      fixed incorrect slice() testing in IE, added Safari 3.2 gEBCN bug testing, simplified mutation events checking, changed isBuggy for isSupported where more meaningful (jdalton)
      added more needed regular expressions, added more new Element API optimizations, improved select_qsa to now fallback to faster client_api engine with simple selectors (jdalton), avoid quirky ways of getting undefined variables
      added callback capabilities, element being added to the result set will be passed to the provided function as parameter
      fixed Safari 3.2 feature test for bug with cached class names, reverted to a previous faster version of the sibling selector optimized for browsers having new Elements API (jdalton)
      improved the catching ability of the simpleSelector regular expression (kangax)
      changed the external jquery extension to synchronize with changes in compiled functions in nwmatcher.js
      invoke provided callbacks also when returning cached results, use a faster resolver for simple selectors in client_api
      avoid creating dynamic regular expressions in while loop, unrolled into an or conditional to check both lowercase/uppercase with the latter having precedence
      regular expressions now to use new character class to match specs whitespace definition, reverted to previous method of normalizing class names and matching using indexOf(), stronger check for className property to detect if it is an usable string (jdalton, kangax)
      added native trim if available and a better fallback, tweaked regular expressions and removed space in className test, renamed a var 'node' to 'element' for better code compression (jdalton)
      improved table lookup access time for Structural and other pseudo classes (jdalton)
      forgot the 'break' statements in the switch, changed variable 'node' to 'element' for consistency/compression, use a lookup table in the isLink() method in place of three conditionals
      rewritten part of the id, tag, class optimimzation block, temporarily removed MULTI TAG optimization, will probably reintroduce it later, removed the byTags() function used to apply this optimization
      split apart the check for disconnected nodes, fixed changes of var 'node' to 'element', avoid one var in isDisconnected() method and removed unneeded double parenthesis
      rewritten the byClass() method optimization to also respect case insensitivity (jdalton)
      moved more regular expressions atop the file as static, added missing isClassNameLowered definition, corrected manual collection of elements, moved the compilation of the ad-hoc functions inside the loop to not build them when not necessary (jdalton)
      short-circuited some duplicated code in ID optimizationi and removed a unnecessary nodeList conversion, added missing className variable, removed unneded parenthesis (jdalton)
      moved trim declaration atop the file and added a feature testing, removed an unnecessary [ ] and tweaked some comments
      indentation changes
      moved the Selectors object down near the companion Operators object (jdalton)
      speed up id matching in compiled functions, shortened code in compileGroup(), added reTrim used to remove leading/trailing spaces from passed selector strings
      speed up optional pseudo extensions by using native DOM methods instead of calling out replacements methods
      replaced variable names to more meaningful ones, formatting changes to improve readability
      added newest jQuery unit tests and external support file
      added newest jQuery unit tests and external support file
      removed unused IS_EMPTY() and toArray() methods
      Merge branch 'master' of github.com:dperini/nwmatcher
      added LICENSE file
      shortened compileGroup() code, improved 'id' resolution in compiled functions maintaining safeguards against IE bugs in getAttribute()
      renamed storage for passed in contexts from Roots to proper Contexts
      cleared probably dirty 'expr' variable in user extensions code (jdalton)
      set DOM results caching to false by default to give the developer the option of enabling it at their own discretion via NW.Dom.setCache(true) (jdalton)
      correction for simple 'id' selectors, avoid returning 'null' value in the results when the element is not found
      fixed bug in Opera 9.25 related with similar IE bug with id/name resolution (jdalton)
      better detection for comma group selectors, saved result in new var 'isSingle', moved down code only needed for single selectors
      improved optimization step before invocation of the resolver, added helpers method getChildren() and getNextSibling()
      improved code size and speed of byClass() method and enabled its use for browsers missing native gEBCN
      improved code size and speed in the resolvers for positional selectors (nth/of-type), do not add expandos on IE browsers to avoid leaks and page reflow (Dean Edwards)
      avoid creating a global 'j' variable, the declaration was incorrectly mangled (jdalton)
      added exclusion patterns to BUGGY_QSA since these are not handled, these pseudos and the '!=' attribute operator will be resolved through client_api, some warnings in the js console will also be avoided
      reduced code size and improved first/last/only/of-type pseudos resolution, added better/faster code for NATIVE_TRAVERSAL_API on browsers supporting it
      avoid repeating tokenization of the selector string if it has not changed (jdalton)
      reordering of code and formatting changes only, renamed some var names to uppercase, removed CHILD_NODES definition, removed unique() and sortByContextOrder() not currenlty used (jdalton)
      renamed some RE moved atop the file and removed unused ones, avoid creating extra variable 'disconnected', changed nth resolver to use a shorter path to indexes now renamed indexesByNodeType and indexesByNodeName
      avoid repeating node list conversions or passing array to concatList() if not necessary, improved last optimization pass to catch and reduce more cases
      changed to preincrement in loops wherever possible, removed unused code/vars, ajusted argument name 'fn' to callback
      added callback invocation when only one element is found since we exit early without calling the compiled function (jdalton)
      added fix to NATIVE_MUTATION_EVENTS feature detection to account for bogus implementations (jdalton)
      added feature testing for lowercase tag names support, tweaked 'id' and 'tag' resolvers for performances
      added case-insensitive match resolver for className in quirks mode (jdalton)
      added a new parameter to resolvers so they accept the 'data' parameter, adjustments to the compiler to reduce unused local variables and changed the iteration to a while loop, shortened code size for returning the reulst set and used 'data' parameter to do concatenation in the lambdas themselves
      made byClass() method always return array for consistency, 'elements' now defined as empty array
      tweaked descendant operators, added a byClass() call to catch more cases in the ending optimization block
      temporarily removed the caching system, will be implemented later as an external add-on
      added rewrite of the caching system as an add-on, this is most of what has been removed from the main engine file in the previous commit, doesn't work yet.
      added a separate native_api resolver for simple selectors id/tag/class used by both engine forks
      added 'data' and 'callback' parameters also to the match() method, fixed not passing correct arguments to lambdas (jdalton)
      changed/moved the definition of the simple selector regular expression, it is now featured tested for speed performances
      opted for a slower but much safer solution in simlpe ID selector resolver (jdalton)
      small adjustments to feature testings, uniformed used names, nullify testee divs and forced to return booleans
      ensures the .style property exists before accessing it in Safari 2 (jdalton)
      changed names of some regular expressions in feature testing (jdalton)
      made optimization on tag name safer, removed unneded '*' from Optimize.(id|tag|class) regular expressions and adjusted optimization blocks accordingly (jdalton)
      reverted sibling resolver to older but safer and shorter code
      fixed 'of-type' queries for when no context is specified
      added 'context' fall back to byClass, avoid double conversions to array
      reworked native_api for simple selectors, reduced code size
      rewritten client_api method to avoid unneeded extra optimizations that are handled better by the dynamic selector compiler
      shortened code in byId method and minor formatting changes
      fix simple selectors 'id' resolver to correctly match passed context with disconnected nodes
      tweaked select_api for performance, short-circuit query to client_api if lambda already compiled (jdalton)
      added missing 'context' fall back to IE fork of byClass since it is exposed as public method
      added '*' processing to simple selectors for non-IE browsers
      added '*' processing to simple selectors for non-IE browsers
      removed forgotten code block in select_qsa from last cleanup
      Merge branch 'master' of github.com:dperini/nwmatcher
      removed currently unused methods: getChildren, getElements, getNextSibling
      fixed GEBCN feature test to use a string instead of a regular expression, formatting changes
      allow browsers missing native GEBCN to take advantages of the forked byClass() mehod, for IE and older browsers
      fixed wrong feature testing for :enabled/:disabled pseudos
      reverted last commit to adhere to latest spec drafts even if not all QSA implementations agree yet
      removed function name from declaration of 'client_api' method since it is not supported cross-browser, removed formatting spaces in other functions for consistency
      revert back a check in child/descendant resolvers to avoid stepping up to document node
      added setQSA() method as a debug helper to enable/disable the use of native QSA (jdalton)
      avoid extracting parenthesis around pseudos parameters and having to remove them later
      corrected and readded complete of-type resolvers, check nodeName instead of nodeType to ensure filtering out non element nodes
      avoid checking for strict true/false booleans on control elements, they are actually strings if set in the source HTML as attribute values
      remove duplicated checks using the 'in' operator on control elements, test 'hasFocus()' method is available before using it
      use an alternate method to find the index/position of the last match to avoid using non standard RegExp.leftContext (jdalton)
      changed variable name from NATIVE_TAG_MATCH to TO_UPPER_CASE for clarity (jdalton)
      completely rewritten structural pseudo class resolver in the compiler to better match QSA behavior and results
      globally changed/tweaked previous checks for element nodes, avoid using a slower '.test()', it now uses charCodeAt(0) to verify that 'nodeName' first character is at least A-Za-z, in IE browsers this filters both comment nodes and fake closed tag elements as in '/video', '/canvas' etc. (jdalton)
      added a feature test for native '.hasFocus()' support, used 'isNative()' since IE6/7/8 have different function representations (jdalton)
      reworked all feature tests to not use '.innerHTML', removed duplicate 'context' variable and used 'base' as replacement
      moved down the indexes resetting just before calling lambdas and only if necessary, removed 'data' assignment in favor of inline conditional return where needed
      change to avoid resetting current element in the first iteration of 'compileGroup()', reordered lambdas var declaration, tweaked some comments
      made reSplitToken and reSplitGroup shorter and added escaped character to the latter, tweaked byClass() to check for className being a string
      forced check for ':enabled' and ':disabled' pseudo resolvers to be case insensitive (jdalton)
      remove unneeded node type checks on child and descendant combinators
      added an optimization for [name=...] attribute resolver
      reverted to previous reSplitGroup and reSplitToken regular expressions, leaved in previously missing escaped character
      added an extra check to verify className is not null and contains a valid string
      missed a '+' character in reEdgeSpaces, renamed to reWhiteSpace to match what it represents
      removed extraneous characters that were added in a previous commit, removed unneded '|| [ ]'
      reverted to using 'in' operator in the resolvers for ':enabled' and ':disabled' dynamic pseudo classes on control elements
      correct a typo error in 'byClass()' and retrieve 'className' using 'getAttribute()' to ensure coverage on more host objects
      changed compiler 'macro' name from SKIP_COMMENTS to SKIP_NON_ELEMENTS to match more precisely what the process in it does (jdalton)
      changed the name of 'base' to 'doc' to avoid confusion, 'doc' variable is updated for each selection so the in-line tests all references the ownerDocument of the scrutinized elements (kangax)
      check for missing left/right context in the query and add it using defaults, added more precise validation cases to reValidator (jdalton)
      improved 'byId' method changed var names for consistency, added fall back loop if GEBID method is missing on the host (jdalton)
      fixed older jQuery test to use the proprietary pseudo extensions ':first' (jdalton)
      changed name of 'isClassNameLowered' to 'isQuirks' which reflect the test we perform, added helper variable 'isXML' to aid in picking up correct methods for different hosts
      added detection for different host objects and choice of methods in className resolvers (jdalton)
      moved persistent parsing declarations atop and initialized 'doc' to current loading context, removed some empty lines
      made the 'isXML' declaration to be refreshed for each selection operation
      removed strict check for (even/odd) in the 'spseudos' RE and changed a closing parenthesis to hex notation to avoid breaking correct highlightning '()' pairs in text editors
      optimized a bit the extraction of 'lastSlice' avoiding repeated access to matched results
      shortened and improved the id, tag and class optimizations blocks
      cleanup jQuery adapters, improve syntax and avoid globals (jdalton)
      added a check for XML hosts to 'select_qsa' fork, avoids using buggy QSA for non HTML/XHTML hosts
      removed 'name' optimization since it opens up a can of worms, compiler handles those bugs perfectly for now
      improved IE id/name conflict detection to cover more cases where GEBID is not usable, without using 'innerHTML' it is hard or impossible to set 'name' and 'type' attributes on controls in IE and expect meaningful results; even if this is just an inference for IE it seems to cover similar bugs also on Opera
      made previous patch test for 'getElementsByName' method before using it in-line, this handles host objects missing 'getElementsByName' which is necessary for the GEBID feature test, shortened declaration for the isQuirks flag (kangax)
      changed using 'uniqueID' instead of 'sourceIndex' in IE as an element indexing source (jdalton)
      toggled setting for the 'class' attribute in Quirks mode, tweaked attributes resolver to do better case-insensitivity matches in those enviroments
      added a feature test for Safari 3.2 (and <= 4.0.2) for a QSA bug with class name case-insensitivity in Quirks Mode (jdalton)
      toggled order of tests to ensure the bug is met (jdalton)
      merged 'isQuirks' / 'compatMode' and removed the latter since both are based on the same detection informations, moved and reordered blocks in feature testing removed commented code, applied adjustment needed to pass jslint
      replaced 'slice()' test for conversion to array support (kangax CFT)
      added a BUGGY_DOM_LENGTH for bugs when an element with 'id=length' is present in the document, not necessarily in a control element for some browsers, not used currently because we already avoid using the '.length' property of DOM objects like HTMLCollections or NodeList
      removed dangerous typo error, replaced semicolon for colon (jlint)
      improved RE_SIMPLE_SELECTOR regular expression by reusing 'encoding' string (jdalton)
      uniformed all remaining loops to use 'element' and 'elements' variables for better compression, added missing comments to conactList and concatCall, bumped datestamp
      reverted to previous insensitive double check on 'nodeName' necessary to cover mixed HTML/XML fragments on the same document, the TO_UPPER_CASE macro is not safe here at the moment since it relies on browser caps instead of document type and namespace (jresig)
      fixed Safari 2 detection of Strict/Quirks mode after merging of 'isQuirks' and 'compatMode' (kangax)
      reformatted the long feature test checking the QSA implementation in various browsers
      moved 'compile' and 'setQSA' methods as internals in debugging utilities, avoid the 'this' keyword to make integration easier, removed non necessary 'toString' conversion of compiled functions, tweaked/added comments
      added regular expression to aid in guessing document type, added missing comment
      changed jQuery & Prototype selector unit tests to avoid using non standard '!=' attribute operator
      refactored attribute resolver to avoid some unneeded replaces and other operations in case of 'hasAttribute', removed the non standard '!=' negation operator, the CSS standard negated pseudo-class (:not) should be used instead
      minor corrections to the last commit for the attribute resolver
      tweaked id optimizations, removed duplicate LTR id optimization, removed commented code
      corrected detection of a buggy state in the DOM, maybe due to an element having id='length', transformed into a callable and left in the BUGGY section while looking for a better method name, not currently used
      converted static isXML detection to a method (accepts elements/documents), tweaked byClass duplicating the loop to maintain the speed and to avoid a check for each node, changed var names to use element/elements in the loop for consistency
      added an alternate method to guess the type of document by parsing prolog/doctype nodes, maybe useful on IE/Opera and/or when needed info are not available, Firefox has 'document.contentType' property to check which type of HTTP headers were sent too but is the only browser having it
      reverted to fixed declaration of empty 'data' array if not passed to reduce the number of times it is done in the code
      added an extra check on 'length' property for className values found in 'byClass', tweaked comments
      improved document detection for class resolution in browsers not supporting document related XML properties
      prepended extra check for element having a 'type' property in enabled/disabled pseudos since it is faster, corrected jlint warnings and tweaked a comment
      added document type detection in TAG resolver for sensitive nodeName match in XML documents
      improved detection of correct insensitivity table to use, catches more cases for the parsed document type like HTML5, should probably be transformed in a method too
      added doctype detection to the ID resolver since properties may not be accessible on some host, use 'getAttribute' on those hosts
      changed variable name from 'element' to 'node' in get/hasAttribute to be consistent with what it contains, removed unneeded 'toLowerCase()' since get/hasAttribute are case-insensitive on attribute names (jdalton)
      added resolver for the CSS3 'lang' pseudo-class, tweaked 'active', 'hover' to avoid XML documents, tweaked 'target' to check 'location' before using it and be more precise on the check for the 'href' property, removed unneeded cast to boolean in 'visited'
      forked version 1.3.0, will remove unused code in master to freeze 1.2.0 for release
      removed currently unused code 'BUGGY_GEBID', 'BUGGY_DOM_LENGTH', 'isDisconnected', 'getDocumentType' and a related regular expression, they will be reintroduced in upcoming versions if necessary
      removed a couple of optimizations on compiled functions that are not strictly necessary for now
      fixed 'lang' resolver to take in account any parent having the 'lang' attribute set (jdalton)
      no need to exclude QSA for XML documents, seems to work well enough for most use cases
      improved granularity of RE_SIMPLE_SELECTOR (jdalton)
      fixed a couple of jslint warnings
      retouched byClass again to avoid having duplicate code and still maintain the speed, renamed variable again for consistency with other methods, removed a space
      made setQSA work again from user space by short-circuiting 'select_qsa', changed 'select_qsa' to use NodeList methods and 'push()' to get element references which is normally faster in newer browsers having QSA, minor shortening in the 'one' element case
      reordered pseudos exclusion in RE_BUGGY_QSAPI regexp, moved ':selected' and ':contains' at the end, removed match for negated attribute values '!=' for consistency with 'client_api' since it is not standard and alternatives exists
      slightly moved blocks of code to avoid checking several times the 'done' flag, 'done' signals that the selection has ended but result conversion may still be needed
      reinserted optimization for IE on 'nodeName' resolver, now XML is checked and the expression adjusted adequately (case sensitive)
      minor improvement in 'match()' method getting 'doc' and 'root' references
      moved 'data' arguments as last parameter for both the 'select()' and the 'match()' public method, changed also in internal calls to 'native_api'
      removed static INSENSITIVE_TABLE in favor of a more dynamic method 'getAttributeCaseMap' to detect the document type
      fixed wrong optimization in returning elements in previous commit
      changed isQuirks and isXML to both be dynamic methods depending on passed host and have related isQuirksMode and isXMLDocument variables to keep state, added an extra check on child/descendants to avoid stepping up to document, do not save compiledSelectors for extraneous document types (XML/SVG)
      added back an optimization (corrected) that was removed previously, fixed a minor problem with the attributeCaseMap, fixed a jslint warning correctly identifing a problem in 'byClass()' about a variable declaration hiding arguments
      avoid querying XML documents by id also if they seems to exposes an usable GEBID method
      added a check to short-circuit 'byId()' for XML documents, shortened and improved check for buggy id/name attribute conflicts to cover various Opera and IE bugs
      ensure the 'from' argument contains a valid node before calling 'native_api' even if caller did not provide one
      tweaked the 'isXML()' method to correctly handle more cases on more browsers
      avoid repeating a statement, should only be executed the first time a selector group is parsed/visited
      removed 'N' variable in compiled functions, instead use 'c[k]' for 'select()' and 'k' for 'match()', changed compiler loops to 'for' since we need to increment 'k' later now
      removed 'N' variable in compiled functions, instead use 'c[k]' for 'select()' and 'k' for 'match()', changed compiler loops to 'for' since we need to increment 'k' later now
      trimmed code size in 'byId' by reusing the same while loop, also avoid a call-out to 'byTag' for perf (jdalton)
      changed the checks for non-elements using alpha comparison of nodeName '@'
      made 'byClass' and 'byTag' always return array, 'byTag' now removes non-elements earlier, removed SKIP_NON_ELEMENTS from compiled function since now only elements are passed to compiled functions
      rescued and reviewed previous optimization for nested general siblings, fixed case non returning converted array as result
      swapped order of CLASS & TAG optimizations, CLASS is now last
      fixed 'byTag' which could severely mess up results with '*' on IE
      fixed a problem with general siblings resolver missing a check for non elements in the non NATIVE_TRAVERSAL_API fork
      slightly improved code for the 'byTag' method on IE browsers
      changed the ID optimization RTL to execute before the LTR one and tweaked to return earlier for not found ids, removed a blank line
      enabled RE_SIMPLE_SELECTOR optimizations that were left disabled for IE, now both 'byTag' and 'byClass' methods are returning converted array
      removed non needed lines to conditionally convert node list to array, now all needed methods already return array
      duplicated code for TAG & CLASS RTL optimizations, one branch for browsers having GEBCN and one for those not having it, the optimizations must be performed in reversed order for performances
      removed unused Safari 2.0 detection using [object AbstractView] uniqueness, added/tweaked comments
      reverted NATIVE_SLICE_PROTO feature test to check first element of the array because Safari 2.0 actually returns an Array with undefined values in it, added check for this feature as safeguard to 'byTag' and 'byClass' methods
      correction to 'lang' pseudo resolver 'en' matches any of 'en', 'en-gb', 'en-us', and if not set on the element itself it is inherited from a parent (jdalton)
      minor tweaking to Prototype unit test description of a changed test, '!=' in attribute operators has been deprecated
      fixed missing 'substr()' on source of comparison too for 'lang' pseudo resolver, added extra safeguard agains XML documents by checking the 'lang' property is not 'undefined', removed a space (jdalton)
      avoid invoking 'getAttributeCaseMap()' for every selection operation, just do it when necessary in the attribute resolver
      changed the way XHTML_TABLE and HTML_TABLE are selected for matching in attribute resolver, XHTML_TABLE will be used only for correctly served XML/XHTML documents, this change was necessary since IE doesn't handle yet the XHTML Media Type and to avoids bugging users/devs about wrongly served XHTML pages
      changed the way XHTML_TABLE and HTML_TABLE are selected for matching in attribute resolver, XHTML_TABLE will be used only for correctly served XML/XHTML documents, this change was necessary since IE doesn't handle yet the XHTML Media Type and to avoids bugging users/devs about wrongly served XHTML pages (jdalton)
      Merge branch 'master' of github.com:dperini/nwmatcher
      removed 'getAttributeCaseMap' method since it is not currenlty in use, removed an extra space
      moved down DEBUGGING block, after NATIVE_QSAPI is defined, since 'setQSA' method uses it to correctly initialize USE_QSA flag
      improved ':focus' pseudo resolution, added 'A' and 'AREA' elements as focussable (jdalton)
      avoid returning elements for wrong pseudo selectors when extending NWMatcher with add-ons
      changed pretty indentation, was breaking my internal *NIX builds, 'else if' were turned to 'elseif' during comments/blanks removal for minimization
      added 'setERR' method to enable/disable internal error notification to console for wrong selectors, slightly changed 'setQSA' method, no need to return the actual state
      removed 'data' parameter (last), if needed it could be easily reintroduced later
      removed a remaining 'data' parameter from previous commit, removed a space
      fixed Opera 9.25 bug with detection of a valid NATIVE_SLICE_PROTO when document contain an element with ID of 'length'
      rewritten 'byId' method for performances and to allow for fragments
      slightly changed 'byTag' method, optimizing performances on IE
      added a more specific RE_SIMPLE_SELECTOR_QSA to speed up some slow 'querySelectorAll' selection on IE8, moved USE_QSA check as first check in the same conditional with others
      removed an unneeded check now that we have move it in the 'byId' method, use 'getElementsByTag' method directly in IE, it is safe since there are no chances to get an universal ('*') selector there
      added curly braces in some places, moved variables declaration down for when they are needed
      maintain different copies of compiled selector resolvers for XML and HTML documents, renamed 'compiledSelectors' to 'HTMLResolvers', 'compiledMatchers' to 'HTMLMatchers' and added 'XMLResolvers', reverted compiler loops to use 'while' and pre-increment, added a couple more missing curly braces
      marking Version 1.2.0 for public release, update release date
      removed copy with a too new version number to avoid confusion
      temporarily fixed bug in 'match()' method for when mixed HTML/XML documents are queried subsequently, the context informations and detections where not updated correctly and previous informations were used (Apostolos Tsakpinis)
      added feature test for non resolvable ':selected' pseudos on Webkit/Chrome browsers and added the check in the related resolver, happens when none of the option elements is set to 'selected' state
      modified most recent external jquery add-on checks in the resolvers for ':hidden' and ':visible' pseudos, needed to pass jquery unit tests in Safari 2.0.x browsers (jdalton)
      added more checks and validations to the 'match()' method, improved HTML/XML handling by saving compiled functions to separate storages (copied from 'select' method), boost performances by not reparsing context information, moved 'isSingle' as external reference to avoid checking again if the selector doesn't change
      added back corrected BUGGY_GEBID feature test to inequivocably catch and avoid old IE/Opera bugs in 'byId()' method
      added a feature test for attributes treated as booleans on IE browsers, excluded them from executing with QSA, adjusted 'getAttribute' and 'hasAttribute' methods to account for the bug (Mike Taylor)
      removed a duplicated declaration of the same variable
      added a 'contains' method to help resolving contextual matches, added forgotten callback parameter to be executed also on the 'match' method
      ensure the check for 'selected' property is only executed on 'option' elements
      Ensure 'getAttribute()' method returns an empty string for null/undefined attributes (jdalton)
      only add to resolver if there is an actual 'hash' in the URL (oniram88)
      fix bug with 'nth-last-child' and 'nth-last-of-type' selectors (Keith Clark)
      allow using the standard :checked pseudo on option elements by checking both checked and selected states (jdalton
      avoid adding code to operator resolvers if empty attribute values are passed, does not apply for the equal '=' operator
      added a check for empty, null and undefined selector values passed to the 'match()' method, bumped release date
      removed non necessary extra checks done in previous change (eb9e64a0335bd9c17c2d41169b1a2519f2a0211b), the code is already checking for empty attribute values and only uses 'hasAttribute()' in those cases
      removed beta status, version to 1.2.1 bumped release date, include fixes for nth-last-child and nth-last-of-type, fixed ':target' resolver to only do checks if an hash is present in the URL, added 'option' elements to the ':checked' resolver, improved speed for context queries and fixed callback parameter in the 'match()' method, added BUGGY_GEBID and BUGGY_SELECTED feature tests
      avoid using same variables names to preserve parsed data in 'match' and 'select' methods, now each method have its own set of parsed data variables, fixes bug where alternated invocation of these methods using the same selector in a selector group may lead to unexpected results (jdalton)
      correction to the ':nth-' pseudo classes when passed '(n)' as parameter (all), not a very useful pseudo selector but still in the specifications (jdalton)
      improvements for :nth- pseudo classes matching, added a variable 'N' in the compiler to cache repeated properties access in compiled resolver functions
      big boost to the negation pseudo class ':not()', instead of calling the 'match()' method I use an inline negated 'compileGroup' function (only created once) to nullify parsing processing time on each element, this yields impressive performance gains
      uniformed testing and removed the slow 'in' operator from ':checked/:enabled/:disabled' resolvers, excluded testing ':focus' pseudo class on XML document
      fixes previous commit related to the neagted pseudo class, the change was still escaping quotes but it was not necessary and produced wrong results (pdanpdan)
      made 'reValidator' regexp more selective/strict in that '.#:' should only be followed by alpha characters, added curly braces to the list of accepted grouping characters to allow using them in add-on/extensions
      fixes previous two commits related to the ':not()' pseudo class, do not pass the 'callback' parameter to the compiled matcher when calling it internally to resolve negated pseudo selectors, moved compiled 'function' out of the conditional expression to make things look a bit less ugly, the boost remains :-)
      cleaned up 'getAttribute' method, reduced parenthesis and extra conversions to string, reordered attributes constants definitions
      modified the 'reValidator' regular expression to accept 'utf-8' characters in the allowed positions
      fix IE overwriting attribute values with dynamic property values, happens when users interact with input form controls, in those case don't use the 'getAttribute' method and instead read the values using defaultValue/defaultChecked/defaultSelected properties (jdalton/davidmark)
      wrapped global initialization of 'NW' and 'NW.Dom' inside the main scope, window does not normally exists in many server side javascript environments also NWMatcher itself is of no use without a DOM layer (needs env.js or similar DOM emulation layer for SpiderMonkey/V8), bumped release date
      made ':lang' pseudo class case insensitive (jdalton)
      tweaked IE 'getAttribute' method, 'option' elements also have a 'value' attribute but do not have a 'defaultValue' property in IE
      add an extra element check in the four combinators resolvers (' >+~'), this avoid the risk of stepping out of the tree in very complex ':not()' selectors and multiple combinators
      added 'backslash' to the range of accepted characters in attribute names, this allow for escaped characters in names
      avoid comparing element properties with undefined values, use a safer 'typeof' check instead, modified 'getAttribute' method and ':checked/:enabled/:disabled' resolvers, removed non necessary undefined argument in global (jdalton)
      let the ':lang()' pseudo resolver inherit from the document in case it is not defined on the element itself, solves inconsistent results and passes CSS3 Selectors tests
      correct wrong interpretation of empty attribute values with operators in IE tests
      removed a typo error in previous 'getAttribute' commit, a space slipped in a 'type of' :-)
      fix for wrong results when 'even' parameter was passed in ':nth-last' and ':nth-last-of-type' cases
      exclude some buggy attribute operator selectors for IE8 when 'querySelectorAll' is used
      exclude some buggy attribute operator selectors for IE8 when 'querySelectorAll' is used
      modified 'isQuirks()' method to use a safer 'typeof' check on the '.compatMode' string property since '.indexOf()' will be used on it, slightly changed related comments (jdalton)
      Merge branch 'master' of github.com:dperini/nwmatcher
      added the ':target' pseudo-class selector to the list of excluded selectors for QSA on all browsers, bumped release date
      fixed a typo error in the commit to 'isQuirks()' method, happens in the nights :-)
      added code to disable complex selectors for ':not()' pseudo-classes in QSA branch but left it commented out, it will break too many tests units, accepting multiple nested complex selectors should not be seen as an error and does not produce as many negative effects as preventing it
      fixed ':empty' resolver to traverse the content instead of just checking first node (jdalton)
      fixed ':target' resolver to remove first character of hash property ('#') and not be restrictive to just links, allow for any element having the matching ID
      added commented code for the ':not()' resolver in the compiler to avoid nested complex selectors (if necessary), fixed regular expression missing escaped parenthesis in previous part of the related fix in 'select_qsa', removed a couple of spaces
      fix attribute resolvers to ensure no expression is built if operators or values are missing, in that case, attribute presence/existence is checked using the 'hasAttribute()' method
      fixed edge case handling of attribute operators matching empty values, removed commented code from 'select_qsa'
      reorganized tests in separate directories, added current Prototype tests and new 'css3-compat' test to compare bug fixing and consistency between selector engines
      ensure compiled resolvers are able to handle complex combinations and nested selectors in ':not()' pseudo classes, bumped release date
      added a 'configure({ })' method to enable/disable features instead of having a specific method for each feature, features that can be specified in the passed object with boolean values are 'USE_QSAPI', 'SIMPLENOT' and 'VERBOSITY'
      modified 'css3-compat' test to better fit engines with different signature, added disabling of complex selectors in ':not()' pseudo-classes for NWMatcher, arranged engines array to allow commenting out frameworks
      modified 'reValidator' expression replacing '?' with '*' to allow selector strings starting with several spaces
      tweaked and removed some comments, removed beta status and bumped release for version 1.2.2
      update the css3-compat test, added version numbers to each framework/library, forced test to use the fall back engine instead of the native 'querySelectorAll()', fixed a problem with double firing events on Opera, relaxed comparison of 'nwmatcher' to properly configure any version >= 1.2.2, removed unneeded comment lines, bumped version
      updated css3-compat.html file to remove the ':root' test since it is not widely supported by selectors engines and it was hiding important parts of the test, modified some bottom description test to reflect this change
      added missing check needed to short-circuit 'className' matching for SVG elements in compiled resolvers (Apostolos Tsakpinis)
      added new 'byTagRaw()' internal method used when querying document fragments or other type of nodes that do not expose the needed DOM API
      added a 'getAttribute()' feature test to catch browsers failing correct boolean attribute handling, avoids using the native DOM API in IE8 and others failing, added forgotten beta state in the code version variable
      completely reviewed QSA feture testing, removed obsolete bug test for Opera10beta3, added feature test for empty attribute values for IE8/Opera10, reordered and corrected various comments
      merged internal methods 'native_api()' and 'select_qsa()' into 'client_api()' and renamed it 'select', reworked a bit the code of both 'select()' and 'match()' for size, added better error handling for cases when passed selector is not valid, added missing declaration of XMLMatchers object
      added 'reSimpleNot' regular expression to improve checking for simple selectors inside ':not()' pseudo-class and adjusted the code in the compiled resolver, added error notification for unsupported attribute operators, added cleanup of saved resolvers when switching the SIMPLENOT feature
      corrected regular expressions to exclude IE/Opera QSA for empty attribute values and tweaked RE_SIMPLE_SELECTOR to ensure id/class names start with a letter
      tweaked reValidator regular expression to accept parenthesis and to discard empty pair of parenthesis, brackets and curly brackets
      changed default behavior to disallow complex selector nested in ':not()' pseudo-class as per specifications, can be changed at start or run-time by using 'NW.Dom.configure({SIMPLENOT:false})' should it be needed
      tweaked some comments and removed a trailing blank
      reviewed error/warning notifications to better simulate current browsers behavior (QSA) of throwing a DOMException.SYNTAX_ERR (12) on invalid selectors, changed default of 'VERBOSITY' to 'true' for throwing errors
      added 'configure({SIMPLENOT:false,VERBOSITY:false})' directive to both jQuery selectors test units to enable extra features in NWMatcher to correctly handle and pass those non standard specific tests
      changed a couple of non-standard tests in Prototype test units and added 'configure({SIMPLENOT:false,VERBOSITY:false})' directive to enable extra features in NWMatcher to correctly handle and pass those non standard specific tests
      added start hook '^' to regular expressions used to optimize by id/tag/classname and simplified the tag name check
      coded in a new configurable feature named 'SHORTCUTS' to allow/disallow adding missing context to selector strings, set to 'false' by default to skip this non-standard handling but can be changed by using 'configure()'
      removed a couple of redundant checks in the 'match()' method
      removed IE only 'number' property from standard browsers branch, replaced 'window' reference with 'global' for code consistency
      reworked 'getAttribute()' and 'hasAttribute()' for better handling of dynamic attributes like 'value', 'checked' and 'selected' on IE and to keep results consistent with other browsers, better code size and hopefully a bit faster too
      modified 'reValidator' regular expression and updated related validation code accordingly to be more strict and execute a validation on the entire selector before trying to process it
      added an optimized Prototype adapter
      tweaked automatic addition of missing context when SHORTCUTS are enabled, removed a comma in comments, updated release date
      fix Safari 2 resolution of ':not()' pseudo-selector
      fix Opera 8 unsupported 'selected' property, needed to resolve the ':selected' pseudo-class
      avoid using non-existant defaultValue/defaultChecked/defaultSelected backup properties when reading attributes
      added back a feature test to avoid using QSA for selectors containing the ':checked' pseudo-class which is broken/buggy in Opera 10+
      replaced wrong semicolon with colon, it would have caused a lot of globals :)
      removed an edge check on arguments consistency and related 'contains()' method
      optimized dynamic default attributes checking in IE getAttribute/hasAttribute methods (jdalton)
      fixed an inconsistency with IE and HTML5 case sensitivity, unknown HTML elements must be matched case insensitive (Keith Clark)
      moved up the SHORTCUTS code to optionally add missing left/right context so it applies also when using QSA
      typo error, changed '&&' operator with '||' in previous commit
      added back 'contains()' helper method to be used in 'match()' and ensure that if context is passed it actually contains the element as descendant, tweaked the arguments checks in 'match()' to only throw in case of syntax errors in the selector string
      added a 'lastError' variable to maintain the last QSA selection error state
      added an extra syntax error checking after each pattern scan in the compiler
      reworked attribute regular expression and related resolver to only accept correctly quoted string values and identifiers (Garret Smith)
      removed grouping parenthesis around some regular expression, added only were requested
      complete rewrite and grouping of the regular expressions used during selector validation
      shorter and better detection for when case insensitive matches are needed to match element names (jdalton)
      reuse 'identifier' regular expression in more places, made two forms of validator regular expression, one for standard compliance with CSS3 rules disallowing complex selectors in ':not()' pseudo-classes and one to allow them unrestricted (also nested and/or comma separated)
      fixed a bug with 'nth-last-child', the comparisons '<=' and '>=' in the resolvers where swapped in those cases (Keith Clark)
      modified the 'configure()' method to use the correct regular expression (standard or extended) for validation depending on user settings, also disable QSA when user select to configure '{ SIMPLENOT: false }' since the native QSA selector engine does not recognize the extended syntax in ':not()' pseudo-classes, bumped the release date
      tweaked the regular expression to determine simple selectors, optimized {0,} and {1,} quantifiers in other regular expressions to '*' and '+' respectively
      small adjustements to formatting, tweaked comment and added a space, no functional changes
      fixed 'reSplitGroup' regular expression, a regression from latest RE optimization, working previously, now made it (a bit) more readable by using more specific 'skipround/skipcurly/skipsquare' strings since 'skipgroup' is too generic/combined and not usable here, moved down 'skipgroup' string near these new related strings, adjusted some comments
      improved 'reSimpleNot' regular expression to correctly discard invalid nested complex selectors in ':not()' pseudo classes
      updated all unit tests to comply with specifcations requirements related with quote/unquoted attribute values and only simple selectors accepted in ':not()' pseudo-classes, for consistency with latest code commits
      removed a couple of misleading comments, tweaked/shortened an other comment
      switched to a safer '{1}' in place of '+' for 'operators' string
      changed tabs to spaces, uniformed comments and console message about ':not()' pseudo-classes limitations requirements
      added Scotch unit tests based on Prototype tests but supporting exceptions testing and other goodness
      updated Scotch testing unit from github repository (@kitgoncharov)
      remove older versions of Scotch files
      added 'W3C-Selector-tests' from John Resig GitHub repository, two files, the original and the one modified by me for NWMatcher, more than 2000 tests, 900 CSS3 fixed tests for IE6-8 browsers
      more formatting/indentation changes, turned more tabs in to spaces
      restricted 'reLeftContext' and 'reRightContext' espressions to only allow one consecutive combinator (only used when SHORTCUTS configuration option is enabled)
      replaced 'encoding' for 'identifier' in class name feature testing for consistence, added missing space and other formatting changes, removed unneeded comment
      removed duplicate comment
      avoid a warnining in Google Closure Compiler (doesn't like a standalone 'true;' statement) and turned a space into '\x20' inside a string used as a regular expression
      fixed 'byTagRaw()' method to not return the containing 'from' element (only affected Fragments as context), removed duplicate 'quotedvalue' from validator string since it is already contained in 'attributes/pseudoclass' strings, replaced two occurence of gEBTN native API with calls to internal 'byTag()' method
      moved up declaration of reference to 'Array.prototype.slice' method, moved 'encoding' and related comments near the 'identifier' string
      improved 'emit()' conformance for error names, uniformed error messages
      fixed NetFront/Playstation 3 (IE engine) bug with 'class' and 'for' attributes needing DOM names mapping to 'className' & 'htmlFor'
      modified Prototype's unit tests to expect 'SYNTAX_ERR' type errors thrown when selector syntax is invalid
      removed support for non standard ':selected' and ':contains()' pseudo-classed selectors and related helpers, functionality will be moved in a separate add-on
      removed remaining references to unsupported ':selected', ':contains()' and ':indeterminate' pseudo-classes, reorganized 'CSS3PseudoClass' object and removed superfluous comments
      added a '+' to the identifier syntax string to resolve unquoted+escaped names like 'brackets\[5\]\[\]' present in several frameworks tests (jdalton), tweaked some comment lines
      consolidated single quote as the preferred string container (wherever possible), no functional changes
      removed beta status, bumped release date, ready for version 1.2.3
      exposed additional 'contains()' method, removed an extra semicolon, added/tweaked some comment lines, released version 1.2.3
      updated jQuery unit to avoid tests for obsoleted/unsupported selectors removed from NWMatcher, ':selected' tests are replaced by ':checked' with no side effects, ':contains()' tests have been removed completely
      updated Prototype unit to correctly test for unquoted identifiers containing multiple (escaped) square brackets (as in brackets\\[5\\]\\[\\]) as for latest bug fix in NWMatcher, previously this unquoted selector was considered invalid syntax (only valid if quoted) it has been fixed to strictly adhere to new Selectors API behavior (jdalton)
      updated Scotch unit to sync latest changes to Error naming, previously 'DOMException SYNTAX_ERR' now shortened to 'SYNTAX_ERR', added three new tests about examples of invalid identifiers missing quotes
      change displayed version number to 1.2.3 in the CSS3-Compat testing which compares the results of various selector engines against the original CSS3 Selectors Test
      an extension for NWMatcher to add new WebForms/HTML5 pseudo-class selectors resolvers, these capabilities are still not available in the majority of current browsers (only Webkit) so not well tested yet, expect changes/fixes in the resolvers soon
      shortened code to fork resolvers for HTML/XML documents, improved compiled functions, skips callback checks if none is passed
      reapplied previous optimizations of compiled selectors by slicing away parsed tokens
      removed '+' quantifier at the end of the 'encoding' string used in regular expressions to ensure it can be applied for different cases (+|*)
      fixed a cut and paste problem in 'match()' method from recent commit (pdanpdan)
      reverted recent optimization about having the callback included in the compiled function only if the 'callback' parameter was really passed. The problem is that if two queries are executed using the same selector string but one of them has been passed the 'callback' parameter, it would require keeping two versions of the resolver for the same selector string, not worth it.
      reverted recent optimization about having the callback included in the compiled function only if the 'callback' parameter was really passed. The problem is that if two queries are executed using the same selector string but one of them has been passed the 'callback' parameter, it would require keeping two versions of the resolver for the same selector string, not worth it.
      fixed inconsistency brought up by the 'W3C Selector API Test Suite' having to do with the ':root' pseudo-selector when combined with querying children/descendants and parent nodes are disconnected, added needed reference to 'contains' method to the object passed to compiled functions, reformatted a couple of code blocks.
      simplified element indexing in pseudo-class resolvers and reduced needed code, this has also allowed to completely avoid expandos on elements on all browsers (hurray), fixed missing a '$' in the class RE which was lost during recent commits.
      added a feature detection test for ':checked' pseudo-class since it behaves differently between Firefox and other browsers, I will probably need to review this and tweak correctness against Firefox or the other current implementations, the fact here is the need to obtain consistent results between different browsers.
      fixed the name of a variable changed in the previous commit.
      small optimization in the ':not' pseudo-class resolver by avoiding an unneeded assignment, added fall back parameter for the 'compileGroup()' calls used in both 'match()' and 'select()' methods.
      added an early exit in the LTR ID optimization if the selector correspond to the token found.
      reformatted and removed extra concatenations in the internal 'compileGroup()' method.
      added support for equivalent (maybe faster) browser QS API 'matchesSelector' if/where available, improved error detection/handling to fix cross-browser inconsistencies with QS API recognizing/throwing errors, full selector validation should still be working and configurable even after this addition :)
      reconsidered adding back the non-standard ':selected' pseudo-class which is necessary for option elements, tweaked incorrect comments about the ':checked' pseudo-class bug in Firefox, synchronized test units.
      reconsidered adding back the non-standard ':selected' pseudo-class which is necessary for option elements, tweaked incorrect comments about the ':checked' pseudo-class bug in Firefox, synchronized test units.
      use 'toString' method instead of 'open' method as the base comparison signature to have a safer detection of native callable methods (jdalton)
      optimized IE 8 regular expressions used to workaround buggy implementation of QSA (jdalton)
      avoid some console warnings by adding parenthesis where needed
      improved 'isNative()' method to avoid console warnings (referencing undefined properties)
      modified 'emit()' method to avoid overwriting the standard Error 'name' property
      bumped release date and update year in copyright message
      simplified and more precise RE matching for CSS3 pseudo-classes, reduced code size and number of operations, exact match improves extension coupling
      synchronized RE for better handling of jQuery extension, removed obsolete comments and unneeded code to normalize the document
      Merge branch 'dperini' of git://github.com/kitgoncharov/nwmatcher
      added new USE_HTML5 boolean switch to '.configure({})', needed to handle parsers difference in matching the ':checked' pseudo-class that also applies to option elements in current HTML5 specifications
      ensure node name is checked case-insensitive in ':selected' pseudo-class resolver
      mangled selector string '> *' or '* >' now also work for element nodes passed as context argument if SHORTCUTS are enabled, added same capability in the '.match()' method
      added 'oMatchesSelector' boost for Opera > 11 to the '.match()' method capabilities for when it will become avaiable in next releases
      changed 'snap' variable name to 'Snapshot' to keep in sync with the naming of methods/objects, exposed references of internal 'Operators' and 'Selectors' descriptor objects as an alternate way to extend NWMatcher
      ensure the entire selector token is matched when resolving extensions
      taken in account possible extension of the unsupported '!=' operator when handling empty values
      avoid simple selectors optimizations for Opera, the standard QSAPI path is faster
      adding '.toString()' shortcut reference that was left out in the last commit
      cleanup '.byId()', '.byTag()' and '.byClass()' methods, avoid duplicated operations, allow intermixed documents queries and correctly handle XML in exposed public methods
      cleaned up a bit the attribute resolver, bumped release version
      tweak to maintain 'byId()' performances with previous (slower) QSA Opera versions, changed the reference method to compare signatures in the 'isNative()' method to use 'document.open' (jdalton)
      swapped underscored names of wrapped internal methods with non-underscored names for consistency (jdalton)
      changed again the base reference method used for the signature comparison in 'isNative()', now using 'document.childNodes.item' since it seems less likely that user code would overwrite that, added missing node tpye check in the 'match()' method for when SHORTCUTS are enabled
      changed variable names for consistency with other boolean flags: isQuirksMode to QUIRKS_MODE and isXMLDocument to XML_DOCUMENT
      avoid namespace overwriting, both 'NW' and 'NW.Dom' may have been already defined
      cleanup to reduce code (jdalton)
      fixed a regular expression, moved SHORTCUTS in an external module, exposed the 'emit()' method so modules can use it, indentation cleanup
      fixed IE bug with 'applet/object' as context, removed unnecessary check for non defined context
      added module for completing selectors missing context, need testing
      substituted remaining instances of '\s' with '[\x20\t\n\r\f] for consistency and correctness
      make regexp tests on nodeName stricter and hopefully more efficient (kitgoncharov)
      exposed the various regexp strings for tokens that could be part of a selector to avoid redefining them in each external module, changed some quotes for consistency and some indentation
      improved handling of optional SHORTCUTS functionality (jdalton)
      ensures prior exit for selectors containing trailing commas (SYNTAX_ERR), removed a forgotten underscore
      reordered public API exports handling to avoid exporting the NW namespace twice in Node (kitgoncharov)
      made sure to split comma groups only once, reduced and simplified code for both the resolver building and the differentiation between single and multi selector strings (comma separated), merged internal 'compile()' and 'compileGroup()' methods
      joined increments of the same value in one place
      fixed QSA testing (mistyped 'removeChild') and improved tests node removal, reduced code by embedding isXML(), isQuirks() and isQuirksBuggy() method calls in the 'switchContext()' method which is called once each time the queried host environment changes
      added check for buggy GEBCN in quirks mode, moved definitions to keep them grouped (jdalton)
      strip quotes from attribute values in the parser to avoid doing a slow replace in the resolver, reordered/separated strings and regular expressions
      improved context checks and reduced code for when the queried context changes
      moved the CommonJS/NodeJS exports handling code atop the file, incremented release date
      cleanup and indentation, enabled errors for unresolvable contexts
      added a separate 'modules' directory that will hold the reduced version of NWMatcher, added base and pseudos modules, added minified version of the two modules named 'nwmatcher-thin.js'
      syncronized modular version with latest changes
      shortened handling of exports to global, detailed comments about bugs with case sensitivity and class names in quirks mode
      synchronized Scotch test unit to handle exceptions through regular expression (@kitgoncharov)
      more adjustments to Scotch browser test unit, fixed wrong path to resources and changed a string into a regexp for the exception test
      optimization in getAttribute()/hasAttribute(), see issue #35
      optimized the resolver compiler by removing unneeded parts
      fixed exports handling and references correct 'Dom' namespace for integration with third party code
      moved all extra functionalities options to a single 'Config' object and made it publicly accessible for addons/extensions
      reworked the 'nwmatcher-shortcuts' extension, more alternatives to add missing context to selector strings like '> p' and '+ p'
      added checks for XML documents to avoid using non existent API/features
      simplified and reduced code to save compiled resolvers in both 'match()' and 'select()' methods, changed internal names of objects holding the references
      simplified and merged returning of result sets in the optimizations block
      reduced code for the ':checked' resolver, test to avoid 'hasAttribute()' on XML documents (fail on IE9), added missing slash to 'reSplitToken', removed unused variable
      partial rewrite of the caching module, added capability to serve multiple documents simultaneously
      revived and added back hooks for external caching modules based on Mutation Events, should work on all new browsers including IE9
      fixed feature test for buggy ':checked' pseudo-class for Webkit/Opera not yet implementing HTML5 rules or for older Firefox browsers not reporting the checked elements correctly
      moved nwmatcher-cache.js module in the proper 'src/modules' directory
      moved nwmatcher-shortcuts.js module in the proper 'src/modules' directory
      moved nwmatcher-webform.js module in the proper 'src/modules' directory
      moved traversal.js module in the proper 'src/modules' directory, renamed to nwmatcher-traversal.js
      removed previous version of the jQuery test unit, only kept the latest, moved nwmatcher-jquery.js module in the proper 'src/modules' directory
      finished the rearrangement of files, all NWMatcher modules are now in /src/modules
      synchronized modular version with main code, finished the rearrangement of files, all NWMatcher modules are now in /src/modules
      Merge branch 'master' of github.com:dperini/nwmatcher
      moved nwmatcher-base.js out of the 'src/module' directory in the main '/src' directory
      update all testing units to follow files rearrangement
      update all testing units to follow files rearrangement
      Merge branch 'master' of github.com:dperini/nwmatcher
      shortcircuited fragments node from passing through native selection API, cleanup of unused variables, reviewed consistency of strict/loose comparisons, fix return value to undefined for some extension stub
      bring latest cleanup and changes to the modular version
      fix mistyped filename in Prototype test unit
      make Javascript Lint happy with some syntax adjustment
      fix passed context in negation pseudo-class resolver ':not()'
      synchronized modular version with latest commits
      added minification/build tool based on Spidermonkey and Dean Edwards Base2/Packer 3.1
      fixed regular expression that prevented correct parsing of comma separated selectors when no whitespace 'div,a' issue #36 (pdanpdan)
      added missing DOM/HTML attribute mapping in IE 'getAttribute()' method to make it consistent with 'hasAttribute()', fix issue #37 (victor homyakov)
      added a small hack to the external caching module to simulate attribute Mutation Events on Chrome/Safari by overwriting the 'setAttribute()' method of elements, extreme but optional :)
      realized I didn't include the 'Makefile' needed to run the minification tool
      replace a wrong semicolon with comma
      added 'dist' directory since it is needed by the 'Makefile' minification & build process
      fixed a missing 'S' in HACKED_MUTATION_EVENTS boolean flag
      added back support for Safari 2.x quirks mode testing
      shortened attribute mapping code in both 'getAttribute()' and 'hasAttribute()' methods (victor homyakov)
      added a comment, removed beta status, bumped release date, ready for 1.2.4 release
      changed current version to 1.2.5beta to include minor fixes and improvements
      improved speed of 'match()' method by avoiding native 'matchesSelector()' and related checks, fixes issue #40 (alpha123)
      removed unused ATTR_MAPPING object and related comments after the fix to getAttribute/hasAttribute
      reuse already declared variable 'i' in 'select' method, fixes issue #39 (victor homyakov)
      fixed release date format to YYYYMMDD
      synchronized release date & version with the modular branch
      removed an extra trailing comma from Scoth 'test.js'
      updated HEADER and VERSION build files
      added minimal test for HTML5 elements selection using 'of-type' pseudo selectors combined with the 'html5shiv' for IE
      Merge pull request #44 from jasondavies/typo
      fixes selection of HTML5 elements in IE < 9 by ensuring case insensitivity nodeName match in HTML documents (Keith Clark)
      ensures the 'compile()' method is passed a string as second parameter when invoked by user code
      removed unused ATTR_MAPPING definition and tweaked some of the comments
      ensure browser supports W3C event model before testing for mutation events, prevents using that path for IE browsers prior to IE9
      synchronized version string with current beta version
      declaration of ACCEPT_NODE 'macro' centralized and made public so add-ons can reference and rely on it, and also change it :)
      added the capability to emulate the 'querySelector' method by returning false in the callback, this stops the engine at the first match and only returns the first element found, enhancements and fixes to the base modular code related to attribute resolution for older IE browsers (getAttr)
      reduced error notification code in 'emit()' method, improved attribute matching in the base modular version
      update year in LICENSE file
      synchronized version string
      tweaked and made easy to switch testing between nwmatcher full version and modular version
      added quotes to object properties names in ATTR_BOOLEAN, added/tweaked comments
      added new wrapper method named 'first()' returning only the first matching element, bumped release date
      Merge pull request #49 from rvagg/ender
      reworked 'Selectors API Test Suite' so it can be adapted to different engines, reimported original due to small differences in UTF8 characters
      bumped copyright years, removed beta status and release version 1.2.5

Jason Davies (1):
      Fix typo in comment: "psuedo" -> "pseudo".

John-David Dalton (1):
      nwmatcher: Disable QSA for NWMatcher W3C selector tests. [jddalton]

Kit Goncharov (3):
      Clean up the element traversal methods.
      Implement index-based matching in `NW.Dom.down` and make it compatible with Prototype's `Element#down` method.
      Add CommonJS support.

Rod Vagg (6):
      ender integration
      Merge remote-tracking branch 'dperini/master' into ender
      ender.js rebuild with latest nw
      $.select() and $.first()
      add $.configure(options)
      simple integration test page demonstrating usage

Samuel Lebeau (12):
      start naming variables and trying to enhance readability
      fix obvious typos
      fix obvious typos
      Add SlickSpeed benchmarks
      Add Prototype's Selector unit tests to test NWMatcher
      Plugs NWMatcher in Prototype tests
      Fix stupid bug...
      Add test stylesheets
      Fix few bugs in NWMatcher
      Mark 'compile' helper as testing method
      Fix getAttribute, :empty and :disabled, no cache in tests
      fix id

Victor Homyakov (1):
      Fix of issue #38 - ATTR_MAPPING removed

jdalton (7):
      nwmatcher: Fix bug with :root *, not selecting the proper elements. [jddalton]
      nwmatcher: Avoid throwing an error for non-element contexts and make default context element.ownerDocument in NW.Dom.match(). [jddalton]
      nwmatcher: Remove base2 and duplicate QSA entry from css3-compat tests. [jddalton]
      nwmatcher: Make buggy quirks mode re-check per new document context. [jddalton]
      nwmatcher: Simplify isXML, and add switchContext function to reduce code. [jddalton]
      nwmatcher: Fix package.json syntax errors and add .gitattributes and .gitignore. [jddalton]
      nwmatcher: Fix isNative for IE8. [jddalton]

-----------------------------------------------------------------------

No new revisions were added by this update.

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-nwmatcher.git



More information about the Pkg-javascript-commits mailing list