aleo-core

Crates.ioaleo-core
lib.rsaleo-core
version0.4.0
created_at2025-12-06 20:19:11.530233+00
updated_at2025-12-23 15:16:33.781423+00
descriptionData model for Leo documents (DAG=Directed - Acylic - Graph)
homepagehttps://repo.computingart.net/aleo-core/
repositoryhttps://repo.computingart.net/aleo-core
max_upload_size
id1970700
size1,615,415
Виталије Милошевић (vitalije)

documentation

README

ALeo core library

This crate contains definitions of traits and structs for representing DAG (Directed Acyclic Graphs) and transforming those graphs in text files as well as parsing text back to original graphs. Similar data structures implemented in Python are used by Leo editor which was my inspiration to start this project.

My current plan is as follows:

  1. finish this crate

  2. using this crate as a fondation, implement Python binary extension using PyO3

  3. implement Tcl binary extension using tcl crate

  4. if possible implement Lua binary extension

  5. (maybe) implement NodeJs binary extension

  6. using Iced GUI write ALeo editor or

  7. using Lua extension, write a neovim plugin and embed it in neovide editor. This would allow me to use nvim as editor for body text. The only problem, I've never wrote a plugin for neovim and I've never used Lua. Though It doesn't seem too hard.

Road map

A road towards 1.0 version of this crate:

  • basic support for outline item fields (key:&str, headline:&str, flags:u16)

  • basic support for links (methods: children, parents)

  • basic support for creating and breaking links between nodes (methods: LeoData::link and LeoData::unlink)

  • basic support for traversing tree

  • parsing .leo xml files

  • parsing at-file files

  • creating at-file files from tree

  • creating at-clean files from tree

  • get test data from Leo source. Using following command: curl --location -o ../../target/leo-source-v6.8.7.zip https://github.com/leo-editor/leo-editor/archive/refs/tags/v6.8.7.zip cd ../../target unzip leo-source-v6.8.7.zip This will provide a lot of test files.

  • line numbering node bodies

  • converting cursor position from body to external file and vice versa

  • syncing at-clean files

  • loading .leo documents containing

    • at-file files
    • at-clean files
    • at-edit files
    • at-auto files
  • saving leo documents to .leo files

  • saving leo documents to sqlite3 db

  • supporting undo/redo

  • supporting tree edit commands

    • insert node
    • delete node
    • move node up
    • move node down
    • move node left
    • move node right
    • clone node
    • cut/copy/paste node
    • cut/copy/paste node retaining clones
    • promote node
    • demote node
Commit count: 0

cargo fmt