A simple tokenizer operating on enums with a decent amount of configuration
Project description
Crossandra
Crossandra is a fast and simple tokenization library for Python operating on enums and regular expressions, with a decent amount of configuration.
Installation
Crossandra is available on PyPI and can be installed with pip, or any other Python package manager:
$ pip install crossandra
(Some systems may require you to use pip3
, python -m pip
, or py -m pip
instead)
License
Crossandra is licensed under the MIT License.
Documentation
Examples
from enum import Enum
from crossandra import Crossandra
class Brainfuck(Enum):
ADD = "+"
SUB = "-"
LEFT = "<"
RIGHT = ">"
READ = ","
WRITE = "."
BEGIN_LOOP = "["
END_LOOP = "]"
bf = Crossandra(Brainfuck, suppress_unknown=True)
print(*bf.tokenize("cat program: ,[.,]"), sep="\n")
# Brainfuck.READ
# Brainfuck.BEGIN_LOOP
# Brainfuck.WRITE
# Brainfuck.READ
# Brainfuck.END_LOOP
from crossandra import Crossandra, Rule, common
def hex2rgb(hex_color: str) -> tuple[int, int, int]:
r, g, b = (int(hex_color[i:i+2], 16) for i in range(1, 6, 2))
return r, g, b
t = Crossandra(
ignore_whitespace=True,
rules=[
Rule(r"#[0-9a-fA-F]+", hex2rgb),
common.WORD
]
)
text = "My favorite color is #facade"
print(t.tokenize(text))
# ['My', 'favorite', 'color', 'is', (250, 202, 222)]
# Supporting Samarium's numbers and arithmetic operators
from enum import Enum
from crossandra import Crossandra, Rule
def sm_int(string: str) -> int:
return int(string.replace("/", "1").replace("\\", "0"), 2)
class Op(Enum):
ADD = "+"
SUB = "-"
MUL = "++"
DIV = "--"
POW = "+++"
MOD = "---"
sm = Crossandra(
Op,
ignore_whitespace=True,
rules=[Rule(r"(?:\\|/)+", sm_int)]
)
print(*sm.tokenize(r"//\ ++ /\\/ --- /\/\/ - ///"))
# 6 Op.MUL 9 Op.MOD 21 Op.SUB 7
If you have any questions, or would like to get in touch, join my Discord server!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
crossandra-2.0.0.tar.gz
(8.3 kB
view hashes)
Built Distributions
Close
Hashes for crossandra-2.0.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 020f76818de066808e36e1de7b2e1bfb1a130258dd786971c6ebdc626e7db6cf |
|
MD5 | f8011b0b2e4a6447b84bf7c7f16138b6 |
|
BLAKE2b-256 | ed24d835a15ddaf2e7c76763cae2446ebfee395465d2eaaf115f24a829b63a23 |
Close
Hashes for crossandra-2.0.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98fb46248792c021870c460f4c0f299f4a9e3b7226450d48b9afafda28431ced |
|
MD5 | d6349b01cd1027585f6eb9a761c296b0 |
|
BLAKE2b-256 | ec27af869bb2e02a3d0a88dec6cbcce2630df28251db3d351df3c45a3e44f008 |
Close
Hashes for crossandra-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a71652b4d60d67ae7cb96d1427c32fd8a333f1cd6229fe23ebc9cdd65893b8d8 |
|
MD5 | daa429c25c9c7fc2d64b6bd6d6f41487 |
|
BLAKE2b-256 | 18fca12873ab7607a1305eaf395f2393c6e8aa642471f28a8f9ba5758416093f |
Close
Hashes for crossandra-2.0.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70c641d93f764f8f116f43d61097313a24571309b32ffa7dd3b129ef3ae597cd |
|
MD5 | cd77345494460665257f4f1862e39fe6 |
|
BLAKE2b-256 | 2b76bb6ee8aebfdfc3084128ca96b65cc8cb435797a1f2a4c1d27f9a34a73e68 |
Close
Hashes for crossandra-2.0.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78cf49d89a0441d27b55d1ffd0ba79cc6174d8bd5d44c0aa56ef60c1eaa8ef17 |
|
MD5 | 2498b4cda0f7e9df790d76327a4c6116 |
|
BLAKE2b-256 | 26e28f5b1fbc24dd2f1d2685f8acce72b196d28cfa0b4e15872303ca63bcc34c |
Close
Hashes for crossandra-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ca4c57db815c077f7c97db84e8bf7cddffb7d42e1467430b51754e331d2c325 |
|
MD5 | 9b8aa666ffa54b03ff2b99d0f570b497 |
|
BLAKE2b-256 | 222c84b1a0f7eeebfab215d9668da575aabfbb39712c11f92363f166aabbf83c |
Close
Hashes for crossandra-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaa7392b3cc9be6b9c6c6dffdd7edaef28edb067ca56715560ec9033911b2e1a |
|
MD5 | 6b909c4544ababe95d8bf3ed34da28b5 |
|
BLAKE2b-256 | a911a417e801ec9abcfefe85dab8ef0aad76a1c96f117c708611e1dd40fb8aa7 |
Close
Hashes for crossandra-2.0.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8a81712b971c50c530e1bd658da3ead61ed385f89bd71474b69f992614cd01c |
|
MD5 | 3eec144778a21fe2a81e4b9ffe3f8a8e |
|
BLAKE2b-256 | d1a7552f72e99aadf90e9a8d090a2945a2e6a87bf4365d900a45e32613d1892f |
Close
Hashes for crossandra-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaa1b3cda28a5b2301a2da95efd189d128a336cbfc6f3f3a909f6edad0e63a6a |
|
MD5 | bce3041b3db8f519f1e42ba567479ee3 |
|
BLAKE2b-256 | ffc139afa4bc63164621bdaedc4cea4ba6d21495def2d2361cf1793868889e89 |
Close
Hashes for crossandra-2.0.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc60cd0f49364e72600ee39e001eefcc0c750469c21d3175992a50eda614730b |
|
MD5 | 557a1d30c6c2a51b45c7927feb71c163 |
|
BLAKE2b-256 | 724fdfda87d9eb7d5b41dcb1d26e3005133fd36921a64bef5a8dc8a28576b68e |
Close
Hashes for crossandra-2.0.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0eb00adfff046689e35d681a892ab8bb5c293476b7dcaa87b7655348010d537f |
|
MD5 | e9f8ac62ae5778f646e10efce2d45fd3 |
|
BLAKE2b-256 | 17f69ddf6ab8198b812d17b338b9671ef67c2f830a8bdbb6544055fdafa7b66a |
Close
Hashes for crossandra-2.0.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42d2fb7524cd69f139afdc668c603859495ba66f41c6796a66cdeec1b8d95847 |
|
MD5 | 0599f9822bfbc7583a863c524019d034 |
|
BLAKE2b-256 | f40b4a19f1b107855ce4f9247a9d3253dcddfb59ca54b9a82765b89744e585e4 |
Close
Hashes for crossandra-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e92727ac42385ee5dd85db7e39ea4d492fc80d0a0b7ce20c432ca5fbb57915b7 |
|
MD5 | d536349c5c867613f9d311ac67fce517 |
|
BLAKE2b-256 | fe8ffb2194f492a8be29009b281dc7f54505deb88160033483c0420a5cbc5b20 |
Close
Hashes for crossandra-2.0.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8459a9c924319d0b32d8048fa63cd19d66e43eb0f94509b0feda7cecc423b494 |
|
MD5 | ccd3292e1eda1403cca21f5073b83432 |
|
BLAKE2b-256 | b3ff1529172ee447a976c77b1b466785ed970e9f1bd2bc413df1edc1b92bfefa |
Close
Hashes for crossandra-2.0.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e08dc5652b75fc6a0d2cb1b35fa66b5c3445b146054a1591a24d8b75948b2200 |
|
MD5 | 7d71bb043f8522041e47c03e7d1fa770 |
|
BLAKE2b-256 | 59a4eef461fa54163ffdf89f120b65836969d88f6fecdcefae158802aff39b74 |
Close
Hashes for crossandra-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e959abeb87e43b00b11be962d759ea94191a0d43ee53649cb02dfafca0f85a7e |
|
MD5 | 447b990770f356b1aa6517c231ffe363 |
|
BLAKE2b-256 | 4bfb60e1b66a690219cd97e7c6feef7bf7253946e9493af3da201e6aecc6e3aa |
Close
Hashes for crossandra-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f988b9df5534037137dacfc3abd392a4adb03d4e1d4370b20cb126eb59a1096a |
|
MD5 | 0b018ed9cb47a1ec386f285a82e1f834 |
|
BLAKE2b-256 | ecc116ae0b7e2e6e95015084d1dece23099c564dfa6764660af8e80288cad3ad |
Close
Hashes for crossandra-2.0.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8a5764d08518a6ad3f826ed054853d16fc43650594836427e28f216c2e9b996 |
|
MD5 | 4e71286494b4e076c8eba773cdfe44a5 |
|
BLAKE2b-256 | 3148e9049426c4905a76969448717c8956bf84700d8f77f37e6bf1a1fedce04d |
Close
Hashes for crossandra-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58c4ca95ea56229ea1a65ad00b047c70cb0267ac38c6feaaf961dcdb4a9adcff |
|
MD5 | 7043c05efa1229142f87be43fa915d8f |
|
BLAKE2b-256 | 43d42ab95d8eef4b34ca2624f2977aa007df4cfa23eaa574091526a70e09194a |
Close
Hashes for crossandra-2.0.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7a07bf0b41605daccbd4ea2435b2a0a596e60f475d4c2c976a5975ca8e013ee |
|
MD5 | 429ab5ff93f3e1aff078d3201cadf98f |
|
BLAKE2b-256 | e2dc339e3daf480184d0a583a716702565078c4a20f1d13428d66e900b8c5992 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66643ee65a6c27df93816ce9ea8a877d80d7c02fc0d0ef538c7f431a22b0dc7a |
|
MD5 | 23427267854aad33167c003c88bdc1e7 |
|
BLAKE2b-256 | 60b582f388c50de88fcdbfe22801a829fcb7f822e1882dd98ba2077d822e2113 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2bd9a3ad2fcaa16baa5c7e7d1d2368d334445d0877cf0a2a4278a4568f43ba7 |
|
MD5 | 0eda19a11ee1a7f6bfbd4d5e6c1ee19d |
|
BLAKE2b-256 | 51277cc3c5a126826f021ef6900549e8e97c96ad2601bab2517da0a1c53d8b70 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 16dbfb87d5dd48718ae3275dd5dc81bb8c4f05f26c6b9e92ad0493f13eda2b75 |
|
MD5 | 82b476e95590a14eb0e74939315a2430 |
|
BLAKE2b-256 | 9795652c20cde7d7f1c99e51f31a9df2f1a3e8cd99c2ffb0546ed3b5b5b1e522 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5cb8c1b373641b6e726d8415d9eb2ddc9bc1a3abfa4687081aaab53f8c796a0 |
|
MD5 | 001b2905cc4564f3ef4a793efb60598d |
|
BLAKE2b-256 | d848b0f486bc10e93f58c49e2af2f4f8b827524a64ef6778ae24a122833bbed9 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 361479bfae35055f104bbacc67cdf30bd1fbe1cd03afd29427afb5ae20339998 |
|
MD5 | 779c6470348c5ee5055df8476ee19e08 |
|
BLAKE2b-256 | a6bfa870e0e2f468e19013d09d2c0c201cf62481e0cc37bb6f0703ad753cdef3 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29b0f03bee111129eb2096528935f3d52de6225a85c57d3af38ea2be4d58bb6c |
|
MD5 | 5668c545116625270316798cbf0a9f51 |
|
BLAKE2b-256 | f8ba48556cce556031a61eca2865e6975afc62f1631a829baf97ac376bd789f8 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 901d67f3f05b84e6b01db85f755173b6eacec3f56e2603a65ca02c1dc2bde206 |
|
MD5 | ea28c848b72b45ca27d7c302ae506b6a |
|
BLAKE2b-256 | 5dead729b745a4aa1401ccc6e9820dd4dfa1bcc81f46d61d16919a5f2ee1d290 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7bc6aada63d2b01eae7b3af0d84a08c43dcc9ae05621756c881bb7f69df24f0e |
|
MD5 | 62f27e5db666831da79a70c711c59ab8 |
|
BLAKE2b-256 | 0ccd30619a87513074988fda6c03646466aa1e2db6a6f60109c6776714ce59e6 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a067e653259777bc5ddeb36ec9ba1dba0e50e53b083f34264dc698b6c1359547 |
|
MD5 | a60e213306c3db6bf2c62727c2fd9dc1 |
|
BLAKE2b-256 | 6fa2545fbddeee321392210249986b6d8ff2fd5f4c4dcdfdfee4acb8f57c4966 |
Close
Hashes for crossandra-2.0.0-cp39-cp39-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55ec40d752df445a133476514aa0b1e3ee601d43cfaff63260d1716742001b98 |
|
MD5 | 5b6da71d73414d87fa241950463f454b |
|
BLAKE2b-256 | d252fcbb22a9b559c8cde6d2eedcda21933a8bce73c32e8ef395e8d386239264 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11f91f586bca22b831bce9e91ac2fad601a49398add29e8bdc919d7d895e54ba |
|
MD5 | 3763b4d4061ca13d714a28e5687d5b26 |
|
BLAKE2b-256 | 03c673a7da45017e5d68e81ffc990167749634e4716cdabf53ce0b5b901a3315 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d91e3d173aaeefc4f5fcee34c528525f0ca92af2c8d48a539584d27742073406 |
|
MD5 | 1abd5f7cabc5e2b689547cabbf40ac9e |
|
BLAKE2b-256 | 9b55a7a826f17680d6780c3f7fd264c880d11fd38491ed1bf4be7b0bb6d7573b |
Close
Hashes for crossandra-2.0.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c49fa01e1eadab04fe03e913669b87e77151852c0bf49691133b0af3eeebdff4 |
|
MD5 | 1fda9555b96a6bdee87aaeb0631427fd |
|
BLAKE2b-256 | 34cb17b4e7e475fe0bae03caf567c30c5aaade7008c6e408b71c6ca07500fbd5 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28881c83cf55861442f44e1cb71fcda7a5918d4b7d432ee0420c2060376641fc |
|
MD5 | 9ac2a14d8da30ebd93fbf276163b519d |
|
BLAKE2b-256 | 278289eca3d0a13253847e4dde76913343cc31e316adde67d8d499ef461e3ff0 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2910b4778a338e27c1049f9ae4e582ce0e5f4a19189f40877a81fde24729b9a1 |
|
MD5 | 71ed3da6e69e975daf5363095efcdd20 |
|
BLAKE2b-256 | 2b3ae0e6a33663db1207bbd280b2e7a9c6b182a0a5dfc1a911d225d0a86a31ae |
Close
Hashes for crossandra-2.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6c65a93e78959296fc73c579f2c7f8bdd577640fde90cfbf39ea34d54827861 |
|
MD5 | 89a96b5a45c118193bfd2eddbd31066c |
|
BLAKE2b-256 | 96575e87e6adc300ef896d1e6c8840b7825c5bf3fa907469f39f75bcb3a2b81e |
Close
Hashes for crossandra-2.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d16c6289042e2e1d0e137d3bd6576a4b696bc55a2f1b84b1571f7be22431d824 |
|
MD5 | aeddb1ff5cf79ef77d73daec46e85c3b |
|
BLAKE2b-256 | 4b46fd1286712c35c2a925116fd2eed9756a9af68979673986959ae88023b7a1 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a61540971c7e30f1d0e33133e58e05c242ae44364e9e3a63f799c24cb9490d6 |
|
MD5 | 66a70393ab0bba2fb78a34f76c1afba1 |
|
BLAKE2b-256 | 5b63e17d501536b27cc561b09f00f3a632b54183536f79dcf74e7e791da5fdf2 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a47d87b880cc0d0a60112ee7433e1dd0a6d2e0963a317946e128454079eb33a |
|
MD5 | a630f68d80fdfce08f0324412c45375e |
|
BLAKE2b-256 | 2c4c0ccc50fdce8ce74764144bef9be5785ba9f920bc46d1e931056ed1cfd873 |
Close
Hashes for crossandra-2.0.0-cp38-cp38-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca39b4f7e8901cb7de7a99c1d04f32cc7ccc0ebd4d8c9bf39a0984fa367f2c5f |
|
MD5 | 77faf8f494db5d796cd1463f56a77739 |
|
BLAKE2b-256 | e23e0fc2d03bae8e3eefd95dfd802a99062d04474b6f93327fd1f653f76bd767 |