Serbian street-slang text transformations: satrovacki, utrovacki and leetrovacki.
Project description
Skrit
Skrit is a Python toolkit for Serbian slang-style text transforms:
satrovacki(base split/swap transform)utrovacki(derived from satro:u + second + za + first + nje)leetrovacki(leet layer over satro/utro logic)
The main entry point is skrit.py (router + CLI).
Project Story
Skrit is a recreation of an older idea.
The original concept existed much earlier, around 2000, as a personal experiment written in the mIRC scripting language (mIRC script/basic style). It was my first and only attempt to turn street talk and slang patterns into a kind of playful "encryption" system.
That early script was likely published on a paste site that no longer exists, so the original implementation was lost.
This repository brings that same core idea back, now rebuilt in Python after a long time.
Future direction may include:
- a TypeScript module version
- and later, a possible integration into the AndroidIRCx app
Requirements
- Python 3.10+
Install from PyPI
python -m pip install --upgrade skrit
Quick Start (installed CLI)
skrit --mode auto "Zemun zakon matori"
Output:
Munze konza matori
You also get direct command entry points:
satrovacki "Zemun zakon matori"
utrovacki "Zemun zakon matori"
leetrovacki --mode satro "Zemun zakon matori"
Quick Start (local repo script)
py skrit.py --mode auto "Zemun zakon matori"
Output:
Munze konza matori
Python API Example
from skrit import encode_text
encoded, mode = encode_text("Zemun zakon matori", mode="auto")
print(mode)
print(encoded)
Output:
satro
Munze konza matori
Modes
--mode auto- detect and choose module automatically (satro,utro, orleet)--mode satro- force satrovacki--mode utro- force utrovacki--mode leet- force leetrovacki
Examples (with output)
Auto
py skrit.py --mode auto "Zemun zakon matori"
Munze konza matori
Satro
py skrit.py --mode satro "Zemun zakon matori"
Munze konza matori
Utro
py skrit.py --mode utro "Zemun zakon matori"
Umunzazenje ukonzazanje utorizamanje
py skrit.py --mode utro "Zemun Pistolj Bazen"
Umunzazenje Ustoljzapinje Uzenzabanje
Leet (default leet base = auto)
py skrit.py --mode leet "Zemun zakon matori"
M00n23 k0n24 70r1m4
Leet over Utro base
py skrit.py --mode leet --leet-base utro "Zemun zakon matori"
00mun24zen73 00kon24zan73 00tori24man73
Keep the same encryption style as reference text
py skrit.py --mode auto --detect-from "M00n23 k0n24 70r1m4" "Zemun zakon matori"
M00n23 k0n24 70r1m4
Show detected mode
py skrit.py --mode auto --show-mode "Zemun zakon matori"
[mode=satro]
Munze konza matori
Full leet profile
py skrit.py --mode leet --leet-profile full "Zemun zakon matori"
/\/\(_)^/23 >|0^/24 70ri21/\/\4
full uses the full per-letter variant table from leet.py (LEET_TABLE).
You can choose deeper variants with --leet-complexity.
py skrit.py --mode leet --leet-profile full --leet-complexity 2 "Zemun zakon matori"
[v]v/\/-/_[- 1<oh/\/-/_@ -|-oh|`][[v]@
Readable full leet with density control
py skrit.py --mode leet --leet-profile readable --leet-density 0.5 "Zemun zakon matori"
Munze k0nz4 70ri21^^4
Cyrillic option examples
py skrit.py --mode utro --plain-c-target "ч" "ацб"
учбзаање
py skrit.py --mode utro --soft-tj "атјб"
ућбзаање
Longer Cyrillic sentence examples
py skrit.py --mode auto "Земун закон матори пиштољ базен значка ђаво"
Мунзе конза матори штољпи зенба чказна вођа
py skrit.py --mode utro "Земун закон матори пиштољ базен значка ђаво"
Умунзазење уконзазање уторизамање уштољзапиње узензабање учказазнање увозађање
py skrit.py --mode leet --leet-base utro "Земун закон матори пиштољ базен значка ђаво"
00мун24зен73 00кон24зан73 00тори24ман73 00штољ24пин73 00зен24бан73 00чка24знан73 00во24ђан73
CLI Help
py skrit.py --help
The CLI supports:
--mode {auto,satro,utro,leet}--show-mode--detect-from--min-word-length--plain-c-target {ц,ч,ћ}--soft-tj--leet-base {auto,satro,utro}--leet-profile {basic,readable,full}--leet-complexity--leet-density(default:0.86)--za-style {24,z4}--nje-style {n73,nj3,њ}--utro-prefix--utro-infix--utro-suffix
Command Examples For All Flags
--show-mode
py skrit.py --mode auto --show-mode "M00n23 k0n24"
[mode=leet]
M00n23 k0n24
--detect-from
py skrit.py --mode auto --detect-from "M00n23 k0n24 70r1m4" "Zemun zakon matori"
M00n23 k0n24 70r1m4
--min-word-length
py skrit.py --mode satro --min-word-length 5 "riba rep"
riba rep
--plain-c-target
py skrit.py --mode utro --plain-c-target "ч" "ацб"
учбзаање
--soft-tj
py skrit.py --mode utro --soft-tj "атјб"
ућбзаање
--leet-base
py skrit.py --mode leet --leet-base utro "Zemun zakon matori"
00mun24zen73 00kon24zan73 00tori24man73
--leet-profile
py skrit.py --mode leet --leet-profile full "Zemun zakon matori"
/\/\(_)^/23 >|0^/24 70ri21/\/\4
--leet-complexity
py skrit.py --mode leet --leet-profile full --leet-complexity 2 "Zemun zakon matori"
[v]v/\/-/_[- 1<oh/\/-/_@ -|-oh|`][[v]@
--leet-density
py skrit.py --mode leet --leet-profile readable --leet-density 0.5 "Zemun zakon matori"
Munze k0nz4 70ri21^^4
--za-style
py skrit.py --mode leet --leet-base utro --za-style z4 "Zemun zakon matori"
00munz4zen73 00konz4zan73 00toriz4man73
--nje-style
py skrit.py --mode leet --leet-base utro --nje-style nj3 "Zemun zakon matori"
00mun24zenj3 00kon24zanj3 00tori24manj3
--utro-prefix --utro-infix --utro-suffix
py skrit.py --mode utro --utro-prefix x --utro-infix yy --utro-suffix zz "bazen"
xzenyybazz
Project Modules
skrit.py- unified router/CLIsatrovacki.py- satro transformerutrovacki.py- utro transformerleet.py- leet table + profiles + helper APIleetrovacki.py- leet transformer on top of satro/utro
License
This project is licensed under the GNU General Public License v3.0.
See LICENSE for the full text.
Tests
python -m unittest discover -s tests -p "test_*.py" -v
PyPI Packaging
Package metadata is defined in pyproject.toml (distribution name: skrit).
Build locally:
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
Install locally from built wheel:
python -m pip install dist/skrit-0.3.1-py3-none-any.whl
Publish:
- Manual:
python -m twine upload dist/*(withTWINE_USERNAME=__token__andTWINE_PASSWORD=<pypi-token>) - GitHub Actions: release publish workflow in
.github/workflows/publish.yml(Trusted Publishing)
Local Commit Gate (Coverage 100%)
Enable repo hooks:
git config core.hooksPath .githooks
With this enabled, pre-commit runs tests under coverage and blocks commit unless coverage stays at 100% (from .coveragerc).
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skrit-0.3.1.tar.gz.
File metadata
- Download URL: skrit-0.3.1.tar.gz
- Upload date:
- Size: 32.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c50bacdca0c032264bec6a078f6dd7d6aa4362b5591205110ad96c7a1ab669d
|
|
| MD5 |
80b508eb5acd9fdf03dadf2c3e1306cc
|
|
| BLAKE2b-256 |
a3bf09835ff911879adffa94b9d2dcc2982c9bf05aa14501eb4dc0b6b9f536de
|
File details
Details for the file skrit-0.3.1-py3-none-any.whl.
File metadata
- Download URL: skrit-0.3.1-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0b214d2633cb9521800e32951bade6187f74f13ba2129e30d9eedd18eb42c20
|
|
| MD5 |
f5f5139c00798d983d406612e871d9db
|
|
| BLAKE2b-256 |
ddc10784a9eb06ce4188fb3ff9a59ab6e9b5e0adcc13eaabe4b83e165f5078e2
|