WARNING: this repo is not maintained anymore
Status: WIP/Proof of concept
This library relies on the ideas presentend in Logoot and LSEQ.
See examples/mqtt_gui.py
for an Etherpad-like clone realized with PyQt's QPlainTextEdit
widget, MQTT as broadcast channel and Fernet for encryption.
Download or clone the repository using git
:
$ git clone https://github.com/0ip/mahitahi.git
from mahitahi import Doc
init_doc = Doc()
init_doc.insert(0, "A")
init_doc.insert(1, "B")
init_doc.insert(2, "C")
init_doc.insert(3, "\n")
a_doc = deepcopy(init_doc)
a_doc.site = 1
patch_from_a = a_doc.insert(1, "x")
b_doc = deepcopy(init_doc)
b_doc.site = 2
patch_from_b = b_doc.delete(2)
a_doc.apply_patch(patch_from_b)
assert a_doc.text == "AxB\n"
b_doc.apply_patch(patch_from_a)
assert b_doc.text == "AxB\n"
Starting examples/mqtt_gui.py
prompts the user for a "Portal ID". This ID contains the MQTT host, the pad name and the encryption token. It is intented to share this ID with someone you want to edit this pad with, without the need to manually enter these connection details.
In order to run tests, make sure to have PyTests installed, then run
$ PYTHONPATH=. pytest
This repository has been released under the MIT License.