A library for merging multiple iterators into one iterator, with the optional use of an IMEx, or Iterator-Merging-Expression, for controlling the merge. imex will also be a command line tool for merging files line-by-line in the future.
IMEx is based off of RegEx. A quick reference of IMEx syntax:
* Digits - indicates the index of the iterator to consume an item from
* ()
- defines a group
* *
- repeats the previous digit/group until the relevant iterator(s) are
exhausted
* {x}
- repeats the previous digit/group x
times, or until the relevant
iterator(s) are exhausted.
"0110"
on two iterators: results in a merged iterator that starts
with the first item of the first iterator, then the first two items of the
second iterator, then the second item of the first iterator
"(01)*"
on two iterators: results in a merged iterator whose elements
alternate between the elements of the input iterators until they are both
exhausted.
"(012){4}(122)*"
on three iterators: results in a merged iterator whose
elements rotate through the elements of the input iterators 4 times, then picks
an element of the second iterator followed by two elements of the third
repeatedly until they are both exhausted.
Using the IMEx crate in your code primarily gives you access to some new functions on iterators that merge and return iterators. These can all be used in a typical iterator processing chain. Details on usage and implementation can be read in the crate's documentation.
There are two main features planned for imex:
* CLI tool possibly titled fmex
for merging files line-by-line using an
IMEx. Will follow the UNIX philosophy, and will be able to merge files with
stdin.
* An optional curses TUI for this tool to edit the IMEx and see results in
real time, along with a peek into the upcoming lines of the files being
merged.
Licensed under either of
at your option.