mirror of
https://github.com/HeyPuter/firefox.git
synced 2026-11-13 20:14:57 -10:00
This patch adds support for tests metadata. A test script parser is added as well as a new "doc" flavor that can be used to display the script info in the command line. This parser will be the basis for building automated docs and scripts verifications if we want to do this. Differential Revision: https://phabricator.services.mozilla.com/D72800
118 lines
4.0 KiB
Plaintext
118 lines
4.0 KiB
Plaintext
|Donate| |PyPI Version| |PyPI License| |PyPI Format| |PyPI Status|
|
|
|
|
**Esprima** (`esprima.org <http://esprima.org>`__, BSD license) is a
|
|
high performance, standard-compliant
|
|
`ECMAScript <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__
|
|
parser officially written in ECMAScript (also popularly known as
|
|
`JavaScript <https://en.wikipedia.org/wiki/JavaScript>`__) and ported to
|
|
Python. Esprima is created and maintained by `Ariya
|
|
Hidayat <https://twitter.com/ariyahidayat>`__, with the help of `many
|
|
contributors <https://github.com/jquery/esprima/contributors>`__.
|
|
|
|
Python port is a line-by-line manual translation and was created and is
|
|
maintained by `German Mendez Bravo
|
|
(Kronuz) <https://twitter.com/germbravo>`__.
|
|
|
|
Features
|
|
~~~~~~~~
|
|
|
|
- Full support for ECMAScript 2017 (`ECMA-262 8th
|
|
Edition <http://www.ecma-international.org/publications/standards/Ecma-262.htm>`__)
|
|
- Sensible `syntax tree
|
|
format <https://github.com/estree/estree/blob/master/es5.md>`__ as
|
|
standardized by `ESTree project <https://github.com/estree/estree>`__
|
|
- Experimental support for `JSX <https://facebook.github.io/jsx/>`__, a
|
|
syntax extension for `React <https://facebook.github.io/react/>`__
|
|
- Optional tracking of syntax node location (index-based and
|
|
line-column)
|
|
- `Heavily tested <http://esprima.org/test/ci.html>`__ (~1500 `unit
|
|
tests <https://github.com/jquery/esprima/tree/master/test/fixtures>`__
|
|
with `full code
|
|
coverage <https://codecov.io/github/jquery/esprima>`__)
|
|
|
|
Installation
|
|
~~~~~~~~~~~~
|
|
|
|
.. code:: shell
|
|
|
|
pip install esprima
|
|
|
|
API
|
|
~~~
|
|
|
|
Esprima can be used to perform `lexical
|
|
analysis <https://en.wikipedia.org/wiki/Lexical_analysis>`__
|
|
(tokenization) or `syntactic
|
|
analysis <https://en.wikipedia.org/wiki/Parsing>`__ (parsing) of a
|
|
JavaScript program.
|
|
|
|
A simple example:
|
|
|
|
.. code:: javascript
|
|
|
|
>>> import esprima
|
|
>>> program = 'const answer = 42'
|
|
|
|
>>> esprima.tokenize(program)
|
|
[{
|
|
type: "Keyword",
|
|
value: "const"
|
|
}, {
|
|
type: "Identifier",
|
|
value: "answer"
|
|
}, {
|
|
type: "Punctuator",
|
|
value: "="
|
|
}, {
|
|
type: "Numeric",
|
|
value: "42"
|
|
}]
|
|
|
|
>>> esprima.parseScript(program)
|
|
{
|
|
body: [
|
|
{
|
|
kind: "const",
|
|
declarations: [
|
|
{
|
|
init: {
|
|
raw: "42",
|
|
type: "Literal",
|
|
value: 42
|
|
},
|
|
type: "VariableDeclarator",
|
|
id: {
|
|
type: "Identifier",
|
|
name: "answer"
|
|
}
|
|
}
|
|
],
|
|
type: "VariableDeclaration"
|
|
}
|
|
],
|
|
type: "Program",
|
|
sourceType: "script"
|
|
}
|
|
|
|
For more information, please read the `complete
|
|
documentation <http://esprima.org/doc>`__.
|
|
|
|
.. |Donate| image:: https://img.shields.io/badge/Donate-PayPal-green.svg
|
|
:target: https://www.paypal.me/Kronuz/25
|
|
.. |PyPI Version| image:: https://img.shields.io/pypi/v/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI License| image:: https://img.shields.io/pypi/l/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Wheel| image:: https://img.shields.io/pypi/wheel/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Format| image:: https://img.shields.io/pypi/format/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Python Version| image:: https://img.shields.io/pypi/pyversions/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Implementation| image:: https://img.shields.io/pypi/implementation/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Status| image:: https://img.shields.io/pypi/status/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|
|
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/esprima.svg
|
|
:target: https://pypi.python.org/pypi/esprima
|