Pure python implementation of the BiDi layout algorithm
Project description
Bi-directional (BiDi) layout implementation in pure python
API
The algorithm starts with a single entry point bidi.algorithm.get_display.
Required arguments:
- unicode_or_str: The original unicode or string (i.e.: storage). If it’s a string use the optional argument encoding to specify it’s encoding.
Optional arguments:
- encoding: If unicode_or_str is a string, specifies the encoding. The algorithm uses unicodedata which requires unicode. This encoding will be used to decode and encode back to string before returning (default: “utf-8”).
- upper_is_rtl: True to treat upper case chars as strong ‘R’ for debugging (default: False).
- base_dir: ‘L’ or ‘R’, override the calculated base_level.
- debug: True to display (using sys.stderr) the steps taken with the algorithm (default: False).
Returns the display layout, either as unicode or encoding encoded string (depending on the type of unicode_or_str').
Example:
>>> from bidi.algorithm import get_display >>> get_display(u'car is THE CAR in arabic', upper_is_rtl=True) u'car is RAC EHT in arabic'
CLI
pybidi is a command line utility (calling bidi.main) for running the bidi algorithm. the script can get a string as a parameter or read text from stdin. Usage:
$ pybidi -h
Usage: pybidi [options]
Options:
-h, --help show this help message and exit
-e ENCODING, --encoding=ENCODING
Text encoding (default: utf-8)
-u, --upper-is-rtl treat upper case chars as strong 'R' for debugging
(default: False).
-d, --debug Output to stderr steps taken with the algorithm
-b BASE_DIR, --base-dir=BASE_DIR
Override base direction [L|R]
Examples:
$ pybidi -u 'car is THE CAR in arabic' car is RAC EHT in arabic $ cat ~/Documents/example.txt | pybidi ...
Installation
See docs/INSTALL.rst
Running tests
To run the tests:
python setup.py test
Some explicit tests are failing right now (see TODO)
0.4.2
- Type Fixes, thanks jwilk
History
0.4.1
- Merged Fix for mixed RTL and numbers, Thanks Just van Rossum
0.4.0
- Move to cookiecutter template
- Python 3 support (py2.6, 2.7, 3.3, 3.4 and pypy)
- Better docs
- Travis integration
- Tox tests
- PEP8 cleanup
0.3.4
- Remove extra newline in console script output
0.3.3
- Implement overriding base paragraph direction
- Allow overriding base direction in pybidi console script
- Fix returning display in same encoding
0.3.2
- Test for surrogate pairs
- Fix indentation in documentations
- Specify license in setup.py
0.3.1
- Added missing description
- docs/INSTALL.rst
0.3
- Apply bidi mirroring
- Move to back function based implementation
0.2
- Move the algorithm to a class based implementation
0.1
- Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
| Filename, size | File type | Python version | Upload date | Hashes |
|---|---|---|---|---|
| Filename, size python_bidi-0.4.2-py2.py3-none-any.whl (30.8 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
| Filename, size python-bidi-0.4.2.tar.gz (40.4 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for python_bidi-0.4.2-py2.py3-none-any.whl
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | 50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 |
|
| MD5 | d0deb6f98cc5aee35e996ccbe20b25d7 |
|
| BLAKE2-256 | 33b0f942d146a2f457233baaafd6bdf624eba8e0f665045b4abd69d1b62d097d |