Metadata-Version: 2.4
Name: plover-python-dictionary
Version: 1.2.1
Summary: Python dictionaries support for Plover
Home-page: https://github.com/benoit-pierre/plover_python_dictionary
Author: Benoit Pierre
Author-email: benoit.pierre@gmail.com
License: GNU General Public License v2 or later (GPLv2+)
Keywords: plover plover_plugin
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Plugins
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: plover>=4.0.0.dev5
Provides-Extra: test
Requires-Dist: plover>=4.0.0.dev10; extra == "test"
Requires-Dist: pytest>=3.0.1; extra == "test"

# Plover Python dictionary

Add support for Python dictionaries to Plover.


## Usage

A Python dictionary is simply a single UTF-8 source file with the following API:

``` python
# Length of the longest supported key (number of strokes).
LONGEST_KEY = 1

# Lookup function: return the translation for <key> (a tuple of strokes)
# or raise KeyError if no translation is available/possible.
def lookup(key):
    assert len(key) <= LONGEST_KEY
    raise KeyError

# Optional: return an array of stroke tuples that would translate back
# to <text> (an empty array if not possible).
def reverse_lookup(text):
    return []
```

For example save the following code to `show_stroke.py`:

> **Note**: make sure the file encoding is UTF-8!

``` python
LONGEST_KEY = 2

SHOW_STROKE_STENO = 'STR*'

def lookup(key):
    assert len(key) <= LONGEST_KEY, '%d/%d' % (len(key), LONGEST_KEY)
    if SHOW_STROKE_STENO != key[0]:
        raise KeyError
    if len(key) == 1:
        return ' '
    return key[1]
```

Then add it to your dictionaries stack as you would a normal dictionary.

Now, if you stroke `STR*`, then the next stroke will be shown verbatim
(untranslated), e.g. `-T STROEBG TP-R KW-GS STROEBG KR-GS S STR* STROEBG`
outputs: `the stroke for "stroke" is STROEBG`.


## Release history

### 1.2.0

* use importlib instead of exec ([#12](https://github.com/openstenoproject/plover_python_dictionary/pull/12))

### 1.1.0

* fix type checks for `lookup` and `reverse_lookup`:
  allow bound methods and functors
* fix `reverse_lookup` implementation: return a set.
* fix `__getitem__` / `get` implementations:
  when the key length is out of bounds
* fix `__contains__` implementation
* fix `__delitem__` / `__setitem__` implementations:
  raise the correct exception type

### 1.0.0

* fix possible encoding issue when loading a dictionary:
  from now on, assume and force UTF-8

### 0.5.12

* update changelog...

### 0.5.11

* drop support for Python < 3.6
* fix use of deprecated `imp` module
* rework tests to use `plover_build_utils.testing`
* use PEP 517/518

### 0.5.10

* fix `./setup.py test` handling
* fix default implementation of `reverse_lookup` to return a list (not a tuple)

### 0.5.9

* update to Plover's latest API
