Skip to main content

A minimal DSL for Python

Project description

A minimal DSL for Python

https://travis-ci.org/fcurella/minilanguage.svg

Minilanguage is a minimal DSL for Python written with Ply.

Is it intended to be a starting point for writing more specific DSLs.

Currently, it only implements simple boolean logic and objects/strings evaluation.

Example

from minilanguage.grammar import FeatureParser

context = {
    'country': 'US',
    'user': {
        'username': 'regular_user',
        'data_bag': {
            "payload": 'abc',
        }
    }
}

parser = FeatureParser()
parser.build()

parser.evaluate("2 + 0.5", context)
# 2.5

parser.evaluate("12 + 12", context)
# 24

parser.evaluate("12 == 12", context)
# True

parser.evaluate("12 != 12", context)
# False

parser.evaluate("12 and False", context)
# False

parser.evaluate("12 or False", context)
# 12

parser.evaluate("12 > 10", context)
# True

parser.evaluate("12 < 10", context)
# False

parser.evaluate("12 <= 12", context)
# True

parser.evaluate("12 >= 12", context)
# True

parser.evaluate("country", context)
# 'US'

parser.evaluate("country == 'US'", context)
# True

parser.evaluate("user.username", context)
# 'regular_user'

parser.evaluate("'a', 'b'", context)
# tuple('a', 'b')

parser.evaluate("user.data_bag.payload", context)
# 'abc'

License

This software is 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

minilanguage-0.2.0.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

minilanguage-0.2.0-py2.py3-none-any.whl (6.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file minilanguage-0.2.0.tar.gz.

File metadata

File hashes

Hashes for minilanguage-0.2.0.tar.gz
Algorithm Hash digest
SHA256 0f1bc2215045dc7ef94aaf4708ba317f889f579d8c920418179e5f9259bbd10b
MD5 314f7b6e2e8e193b796f43415dd28860
BLAKE2b-256 0e8aa8d8cd9369a39b712c158550cd3a6f52af6bf288cd43bffbebd3941cf2f8

See more details on using hashes here.

Provenance

File details

Details for the file minilanguage-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for minilanguage-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 6d3b3882717ae105c49a1eb17d45e6d1f22ed72aab3c5fa6aad5b0b0bd45952c
MD5 8682f104a9c7d4f77b6b2d179e38e665
BLAKE2b-256 d4e414e4de724724ca842b042834e9ad976014f8387ec38b6fdb532472bbe775

See more details on using hashes here.

Provenance

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