This is a modified version of Sizzle that we use in our ExtendedCss library.
Run this command to build Sizzle and run tests:
grunt
The version we use in ExtendedCss is dist/sizzle.adguard.js.
In order to test Sizzle performance, do the following:
// Build Sizzle
grunt build
// Run a web server
python -m SimpleHTTPServer
Then open http://localhost:8000/speed/?qsa to run the performance tests.
Global changes
- Added additional parameters to the
Sizzle.tokenizemethod so that it can be used for stylesheets parsing and validation. - Added tokens re-sorting mechanism forcing slow pseudos to be matched last (see
sortTokenGroups). - Fix the
nonnativeSelectorCachecaching -- there was no value corresponding to a key. - Added Sizzle.compile call to the
:haspseudo definition.
Changes that are applied to the ADGUARD_EXTCSS build only
- Do not expose Sizzle to the global scope. Initialize it lazily via
initializeSizzle(). - Removed
:containspseudo declaration -- its syntax is changed and declared outside of Sizzle. - Removed declarations for the following non-standard pseudo classes:
:parent, :header, :input, :button, :text, :first, :last, :eq, :even, :odd, :lt, :gt, :nth, :radio, :checkbox, :file, :password, :image, :submit, :reset - Added es6 module export
A pure-JavaScript CSS selector engine designed to be easily dropped in to a host library.
In the spirit of open source software development, jQuery always encourages community code contribution. To help you get started and before you jump into writing code, be sure to read these important contribution guidelines thoroughly:
In order to build Sizzle, you should have Node.js/npm latest and git 1.7 or later (earlier versions might work OK, but are not tested).
For Windows you have to download and install git and Node.js.
Mac OS users should install Homebrew. Once Homebrew is installed, run brew install git to install git,
and brew install node to install Node.js.
Linux/BSD users should use their appropriate package managers to install git and Node.js, or build from source if you swing that way. Easy-peasy.
Clone a copy of the main Sizzle git repo by running:
git clone git://github.com/jquery/sizzle.gitIn the sizzle/dist folder you will find build version of sizzle along with the minified copy and associated map file.
- Run
npm install, it's also preferable (but not necessarily) to globally installgrunt-clipackage –npm install -g grunt-cli - Open
test/index.htmlin the browser. Or runnpm test/grunt teston the command line, if environment variablesBROWSER_STACK_USERNAMEandBROWSER_STACK_ACCESS_KEYare set up, it will attempt to use Browserstack service (you will need to install java on your machine so browserstack could connect to your local server), otherwise PhantomJS will be used. - The actual unit tests are in the
test/unitdirectory.
Developing with grunt
npm run buildorgruntwill lint, build, test, and compare the sizes of the built files.npm startorgrunt startcan be run to re-lint, re-build, and re-test files as you change them.grunt -helpwill show other available commands.