Skip to main content

Run JavaScript Code in Python through the Microsoft Chakra engine

Project description

PyEvalJS

PyEvalJS is a python wrapper for Microsoft Chakra engine, it act as a bridge between the Python and JavaScript objects, and with this module you can easily run JavaScript Code in Python without having to install nodejs.

Installation

pip install PyEvalJS

Usage

Execute a script

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.eval("'red yellow blue'.split(' ')")
['red', 'yellow', 'blue']

Call a function

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.compile("""
...     function add(x, y) {
...         return x + y;
...     }
... """)
>>> runtime.call("add",1,2)
3

or just put args into the script

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.eval("""
...     function add2(num) {
...         return num+2;
...     } add2(8);""")
10

or by passing parameters

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.set_variable("a",8)
True
>>> runtime.eval("""
...     function add2(num) {
...         return num+2;
...     } add2(a);""")
10

Passing parameters

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.set_variable("name", ['Jim','Bob','Tour'])
True
>>> runtime.get_variable("name")
['Jim', 'Bob', 'Tour']

Use a JavaScript module

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.require("./js/crypto-js.js")  #import CryptoJS
>>> runtime.compile("""
...     function encryptByDESModeCBC(key,message) {
...         var keyHex = CryptoJS.enc.Utf8.parse(key);
...         var ivHex = CryptoJS.enc.Utf8.parse(key);
...         encrypted = CryptoJS.DES.encrypt(message, keyHex, {
...                 iv:ivHex,
...                 mode: CryptoJS.mode.CBC,
...                 padding:CryptoJS.pad.Pkcs7
...             }
...         );
...         return encrypted.ciphertext.toString();
...     }""")
>>> runtime.call("encryptByDESModeCBC",'1234','this is a test')
'94b7b0cc2b71165ea067868f595fc03a'

Call the same function for each item in the list

>>> from PyEvalJS import Runtime
>>> runtime = Runtime()
>>> runtime.compile("""
...     function add2(num) {
...         return num+2;
... }""")
>>> runtime.call_for_each("add2",[1,2,4,6,5])
[3, 4, 6, 8, 7]

Supports

  • Python2 >= 2.7
  • Python3 >= 3.4

Platform

  • macOS x64
  • Linux x64
  • Windows x86/x64 (tested on Windows 10 x64, Python 3.7)

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Licence

Code released under the MIT license

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyEvalJS-1.0.0.tar.gz (38.5 MB view hashes)

Uploaded Source

Built Distribution

PyEvalJS-1.0.0-py3-none-any.whl (38.7 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page