Skip to main content

A TextMate grammar engine in Python.

Project description

tmengine: A TextMate grammar engine in Python.

Installation

python -m pip install tmengine
# or
python -m pip install git+https://github.com/AaravMalani/tmengine

Usage

from tmengine import TextMateEngine
import json

engine = TextMateEngine.load_folder('grammars/') # Load all grammars in the grammars/ folder
print(engine.languages) # Returns a tuple of scopeNames
print(engine.parse('source.akbs', 'compile($FILES)')) # Parse 'compile($FILES)' using language with `scopeName` as `source.akbs` 
# [TextMateExpression(name='punctuation.paren.open', range=(7, 8)), TextMateExpression(name='expression.group', range=(7, 15)), TextMateExpression(name='keyword.function', range=(0, 7)), TextMateExpression(name='expression.inner', range=(8, 14)), TextMateExpression(name='punctuation.paren.close', range=(14, 15)), TextMateExpression(name='variable.other', range=(8, 14))]

with open('grammars/akbs.json', 'r') as f: # Found at https://github.com/akbs-org/akbs-vscode/blob/main/syntaxes/akbs.tmGrammar.json
    engine2 = TextMateEngine(json.load(f)) # or tmengine.TextMateEngine([json.load(f)])

Tasklist

  • Accept YAML
  • Accept XML
  • Make code ignore errors

Changelog

Version 1.0.1

  • Fixed bug which returned indices/a range less than expected when there were multiple match expressions satisfied on separate lines
  • Fixed only a single begin/end expression of a type being selected

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

tmengine-1.0.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

tmengine-1.0.1-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file tmengine-1.0.1.tar.gz.

File metadata

  • Download URL: tmengine-1.0.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for tmengine-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a32539cbf1ffe31212ba3629255d4ceb9e1ca7fc48f16517aa7dfc456a7043e2
MD5 e8202a482baf202fb92d6836bf0b8b4b
BLAKE2b-256 532c4b93074c90dd1869be6142c60abf91a12d3a4ff06a9a3491e172af42c9ef

See more details on using hashes here.

File details

Details for the file tmengine-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: tmengine-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for tmengine-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 846b845e20c591fcef00bc3d909d301add6ffe35bc2a4ef9f27543834d118a48
MD5 33332a90faa607f715c19d4a8acd759f
BLAKE2b-256 30df823fa361c0990aacb3b4ea2bc13e4ac1f9600398f37ea5078c7bf715c8ef

See more details on using hashes here.

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