{"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"keywords":["css","matcher","selector","ender"],"dist-tags":{"latest":"1.4.1"},"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"description":"A CSS3-compliant JavaScript selector engine.","readme":"# [NWMatcher](http://dperini.github.io/nwmatcher/)\n\nA fast CSS selector engine and matcher.\n\n\n## Installation\n\nTo include NWMatcher in a standard web page:\n\n```html\n<script type=\"text/javascript\" src=\"nwmatcher.js\"></script>\n```\n\nTo use it with Node.js:\n\n```\n$ npm install nwmatcher\n```\n\nNWMatcher currently supports browsers (as a global, `NW.Dom`) and headless environments (as a CommonJS module).\n\n\n## Supported Selectors\n\nHere is a list of all the CSS2/CSS3 [Supported selectors](https://github.com/dperini/nwmatcher/wiki/CSS-supported-selectors).\n\n\n## Features and Compliance\n\nYou can read more about NWMatcher [features and compliance](https://github.com/dperini/nwmatcher/wiki/Features-and-compliance) on the wiki.\n\n\n## API\n\n### DOM Selection\n\n#### `first( selector, context )`\n\nReturns a reference to the first element matching `selector`, starting at `context`.\n\n#### `match( element, selector, context )`\n\nReturns `true` if `element` matches `selector`, starting at `context`; returns `false` otherwise.\n\n#### `select( selector, context, callback )`\n\nReturns an array of all the elements matching `selector`, starting at `context`. If `callback` is provided, it is invoked for each matching element.\n\n\n### DOM Helpers\n\n#### `byId( id, from )`\n\nReturns a reference to the first element with ID `id`, optionally filtered to descendants of the element `from`.\n\n#### `byTag( tag, from )`\n\nReturns an array of elements having the specified tag name `tag`, optionally filtered to descendants of the element `from`.\n\n#### `byClass( class, from )`\n\nReturns an array of elements having the specified class name `class`, optionally filtered to descendants of the element `from`.\n\n#### `byName( name, from )`\n\nReturns an array of elements having the specified value `name` for their name attribute, optionally filtered to descendants of the element `from`.\n\n#### `getAttribute( element, attribute )`\n\nReturn the value read from the attribute of `element` with name `attribute`, as a string.\n\n#### `hasAttribute( element, attribute )`\n\nReturns true `element` has an attribute with name `attribute` set; returns `false` otherwise.\n\n\n### Engine Configuration\n\n#### `configure( options )`\n\nThe following is the list of currently available configuration options, their default values and descriptions, they are boolean flags that can be set to `true` or `false`:\n\n* `CACHING`:   false - false to disable caching of result sets, true to enable\n* `ESCAPECHR`: true  - true to allow CSS escaped identifiers, false to disallow\n* `NON_ASCII`: true  - true to allow identifiers containing non-ASCII (utf-8) chars\n* `SELECTOR3`: true  - switch syntax RE, true to use Level 3, false to use Level 2\n* `UNICODE16`: true  - true to allow identifiers containing Unicode (utf-16) chars\n* `SHORTCUTS`: false - false to disable mangled selector strings like \"+div\" or \"ul>\"\n* `SIMPLENOT`: true  - true to disallow complex selectors nested in ':not()' classes\n* `UNIQUE_ID`: true  - true to disallow multiple elements with the same id (strict)\n* `USE_HTML5`: true  - true to use HTML5 specs for \":checked\" and similar UI states\n* `USE_QSAPI`: true  - true to use browsers native Query Selector API if available\n* `VERBOSITY`: true  - true to throw exceptions, false to skip throwing exceptions\n* `LOGERRORS`: true  - true to print console errors or warnings, false to mute them\n\nExample:\n\n```js\nNW.Dom.configure( { USE_QSAPI: false, VERBOSITY: false } );\n```\n\n#### `registerOperator( symbol, resolver )`\n\nRegisters a new symbol and its matching resolver in the operators table. Example:\n\n```js\nNW.Dom.registerOperator( '!=', 'n!=\"%m\"' );\n```\n\n#### `registerSelector( name, rexp, func )`\n\nRegisters a new selector, with the matching regular expression and the appropriate resolver function, in the selectors table.\n","repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"users":{"yanndinendal":true},"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"versions":{"1.2.5":{"name":"nwmatcher","version":"1.2.5","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","_npmUser":{"name":"rvagg","email":"rod@vagg.org"},"_id":"nwmatcher@1.2.5","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"29c97bc6b7ca105a1dbf27a9dc93da1f72bca58a","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.2.5.tgz"},"directories":{}},"1.3.0":{"name":"nwmatcher","version":"1.3.0","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","_id":"nwmatcher@1.3.0","dist":{"shasum":"e944caec970d0e6aad1601390a7cb836ba54b292","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.0.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"directories":{}},"1.3.1":{"name":"nwmatcher","version":"1.3.1","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","_id":"nwmatcher@1.3.1","dist":{"shasum":"ef7d4e2120c9232d0c017b356a1a66dbc1e3b9b3","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.1.tgz"},"_npmVersion":"1.1.65","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"directories":{}},"1.3.2":{"name":"nwmatcher","version":"1.3.2","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","_id":"nwmatcher@1.3.2","dist":{"shasum":"e7e2fad3af731f76fdc14fe9f9c2972b3858197c","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.2.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"directories":{}},"1.3.3":{"name":"nwmatcher","version":"1.3.3","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","_id":"nwmatcher@1.3.3","dist":{"shasum":"2744776283cbff8d4dd31e3cd6f8fd69f738fa54","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.3.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"directories":{}},"1.3.4":{"name":"nwmatcher","version":"1.3.4","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"17f159f0cc068510a098753f538a9dddd537cb9a","_id":"nwmatcher@1.3.4","scripts":{},"_shasum":"965aa05fc3bc9de0a6438c8c07169866092fdaed","_from":".","_npmVersion":"2.1.14","_nodeVersion":"0.10.35","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"965aa05fc3bc9de0a6438c8c07169866092fdaed","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.4.tgz"},"directories":{}},"1.3.5":{"name":"nwmatcher","version":"1.3.5","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"be1fc7f410976e1a921583a039e0daea5d3e7341","_id":"nwmatcher@1.3.5","scripts":{},"_shasum":"dcd32a99d84580f709a02e9181c5268a514b7c58","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"dcd32a99d84580f709a02e9181c5268a514b7c58","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.5.tgz"},"directories":{}},"1.3.6":{"name":"nwmatcher","version":"1.3.6","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"fb8288b8aab9c7191c40475069bd0fdf3c6f99b0","_id":"nwmatcher@1.3.6","scripts":{},"_shasum":"db3bfdb01529af42c6c0162a0a38f6bf3300d3bd","_from":".","_npmVersion":"2.10.1","_nodeVersion":"0.12.4","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"db3bfdb01529af42c6c0162a0a38f6bf3300d3bd","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.6.tgz"},"directories":{}},"1.3.7":{"name":"nwmatcher","version":"1.3.7","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"c35b7d2ef122b300a45e15d9a9133fb27b07531e","_id":"nwmatcher@1.3.7","scripts":{},"_shasum":"fec04ddfb1b07ff37b1e11a02b9c3c274cc131e0","_from":".","_npmVersion":"3.3.9","_nodeVersion":"5.0.0","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"fec04ddfb1b07ff37b1e11a02b9c3c274cc131e0","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.7.tgz"},"directories":{}},"1.3.8":{"name":"nwmatcher","version":"1.3.8","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"c3b4a41db1f1faf080d603b919c4aa485059ff83","_id":"nwmatcher@1.3.8","scripts":{},"_shasum":"34edb93de1aa6cb4448b573c9f2a059300241157","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"34edb93de1aa6cb4448b573c9f2a059300241157","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.8.tgz"},"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/nwmatcher-1.3.8.tgz_1465816031258_0.5114992917515337"},"directories":{}},"1.3.9":{"name":"nwmatcher","version":"1.3.9","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"a3ff759c4ea45a03f1e30e0a8ff59313c98aa134","_id":"nwmatcher@1.3.9","scripts":{},"_shasum":"8bab486ff7fa3dfd086656bbe8b17116d3692d2a","_from":".","_npmVersion":"3.10.8","_nodeVersion":"6.8.1","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"8bab486ff7fa3dfd086656bbe8b17116d3692d2a","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.3.9.tgz"},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/nwmatcher-1.3.9.tgz_1477433034745_0.856502516195178"},"directories":{}},"1.4.0":{"name":"nwmatcher","version":"1.4.0","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"4dcaa779061ce59207c85049bfcfd4895ff8e1db","_id":"nwmatcher@1.4.0","scripts":{},"_shasum":"b4389362170e7ef9798c3c7716d80ebc0106fccf","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"b4389362170e7ef9798c3c7716d80ebc0106fccf","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.4.0.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nwmatcher-1.4.0.tgz_1495401806313_0.16902473289519548"},"directories":{}},"1.4.1":{"name":"nwmatcher","version":"1.4.1","description":"A CSS3-compliant JavaScript selector engine.","homepage":"http://javascript.nwbox.com/NWMatcher/","main":"./src/nwmatcher","keywords":["css","matcher","selector","ender"],"licenses":[{"type":"MIT","url":"http://javascript.nwbox.com/NWMatcher/MIT-LICENSE"}],"author":{"name":"Diego Perini","email":"diego.perini@gmail.com","url":"http://www.iport.it/"},"maintainers":[{"name":"rvagg","email":"rod@vagg.org"},{"name":"diego","email":"diego.perini@gmail.com"}],"bugs":{"url":"http://github.com/dperini/nwmatcher/issues"},"repository":{"type":"git","url":"git://github.com/dperini/nwmatcher.git"},"ender":"./lib/ender/bridge.js","gitHead":"dcc6c3aea60dbe5f3e7876817d556872b37effa9","_id":"nwmatcher@1.4.1","scripts":{},"_shasum":"7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.10.0","_npmUser":{"name":"diego","email":"diego.perini@gmail.com"},"dist":{"shasum":"7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f","tarball":"http://nexus.dui88.com:8081/nexus/content/groups/npm-all/nwmatcher/-/nwmatcher-1.4.1.tgz"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nwmatcher-1.4.1.tgz_1497885256372_0.1587020803708583"},"directories":{}}},"name":"nwmatcher","time":{"modified":"2017-06-19T15:14:17.398Z","created":"2012-01-09T12:43:50.861Z","1.2.5beta":"2012-01-09T12:43:54.333Z","1.2.5":"2012-01-13T10:56:08.862Z","1.3.0":"2013-02-08T23:30:53.256Z","1.3.1":"2013-02-11T23:07:11.970Z","1.3.2":"2014-03-26T12:47:53.537Z","1.3.3":"2014-03-30T13:41:51.055Z","1.3.4":"2015-01-02T15:51:27.711Z","1.3.5":"2015-07-13T09:34:14.210Z","1.3.6":"2015-07-13T15:14:48.687Z","1.3.7":"2015-11-20T09:40:32.839Z","1.3.8":"2016-06-13T11:07:14.250Z","1.3.9":"2016-10-25T22:03:56.761Z","1.4.0":"2017-05-21T21:23:27.416Z","1.4.1":"2017-06-19T15:14:17.398Z"},"readmeFilename":"README.md","homepage":"http://javascript.nwbox.com/NWMatcher/"}