simple-text-editor

Crates.iosimple-text-editor
lib.rssimple-text-editor
version0.2.3
sourcesrc
created_at2020-12-29 20:53:57.405459
updated_at2021-02-01 18:25:54.213317
descriptionBasic implementation of a simple text editor, as a Rust library and CLI.
homepage
repository
max_upload_size
id328957
size19,901
Steve Manuel (nilslice)

documentation

README

Simple Text Editor

crates.io docs.rs CI

This program implements a basic text editing protocol in which the following commands can be executed:

  • 1 x, where 1 is the command to append text to a buffer, and x is the arbitrary-length set of characters to append.
  • 2 n, where 2 is the command to delete text from a buffer, and n is the number of characters from the back of the buffer to delete.
  • 3 i, where 3 is the command to print a character from the buffer, and i is the 1-based index position of the character to print.
  • 4, where 4 is the command to undo a previously executed command (only affectinf commands 1 or 2).

Note: The protocol specifies that the first line of the input read by the program is interpreted as the number of commands that follow.

Usage

To test this, build the code using the cargo toolchain, invoking the Rust compiler. To install cargo and Rust, see: https://www.rust-lang.org/tools/install

$ cargo build --bin editor

Then, use the provided test input file input.txt, or create your own.

$ cat input.txt | ./target/debug/editor

This should print both the characters (one per line, per "print" command, e.g. 3) as well as the final buffer after all commands have exectuted.

Contributions

This is just for fun! However, as someone who is always trying to improve their programming skills, I would be grateful to know where optimizations could be made. PRs are welcome. Or if a bug is encountered, file an issue and I'll take a look!

Commit count: 0

cargo fmt