Skip to main content

Execute arbitrary command from a Python dictionary

Project description

plover-python-dictionary-cmd

PyPI

Execute arbitrary command from a Python dictionary.

Warning: While this plugin can do everything what a command plugin can, this should only be used for personal usage. If the usage is sufficiently general, it's recommended to make a Plover command plugin instead.

See also: plover-run-shell, plover-run-py, plover-open-url.

What problem does this plugin solve?

First, this assumes you know what a Python dictionary is.

Maybe you want to write a dictionary that looks like this:

LONGEST_KEY = 1

def lookup(key):
    if key == ("SKWR-F",):
        return "{PLOVER:OPEN_URL:https://www.openstenoproject.org/}"

The {PLOVER:OPEN_URL:…} obviously opens the said URL, using Plover Open URL plugin.

Problem: what if the task you want to do is not already covered by some command plugin?

While you can certainly write a new command plugin, that is rather time-consuming.

The following will not work:

import webbrowser

LONGEST_KEY = 1

def lookup(key):
    if key == ("SKWR-F",):
        webbrowser.open("https://www.openstenoproject.org/")

It's because the dictionary may be looked up multiple times.

The solution

Write the plugin like the following.

import webbrowser
import plover_python_dictionary_cmd

LONGEST_KEY = 1

@plover_python_dictionary_cmd.register
def f(engine):
    webbrowser.open("https://www.openstenoproject.org/")

def lookup(key):
    if key == ("SKWR-F",):
        return str(f)

As an extra bonus, you get access to the engine object inside the function f above.

Internal implementation detail

It uses a global lookup table to store the reference to the function f. Then str(f) as above returns something like {plover:python_dictionary_cmd:123456} where 123456 is some unique ID.

Don't rely on this implementation detail.

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

plover_python_dictionary_cmd-0.0.0.tar.gz (15.1 kB view hashes)

Uploaded Source

Built Distribution

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