6 releases
0.1.5 | Jan 11, 2023 |
---|---|
0.1.4 | Jun 25, 2022 |
0.1.3 | May 21, 2022 |
0.1.2 | Feb 7, 2022 |
0.1.0 | Apr 26, 2021 |
#1735 in Text processing
11KB
71 lines
aki-txpr-macro
aki-txpr-macro is the more easy to use libaki-*.
Features
- old style rust macro
- multi-threaded libaki-*
- minimum support rustc 1.56.1 (59eed8a2a 2021-11-01)
Examples
Example:
The pipe line text processing.
shell command:
aki-xcat -n -f "fixtures/target-list.txt" |\
aki-mline -e "gnu" |\
aki-stats -a --locale "en"
convert this to rust code:
let (next_in, handles) = pipe_line! {
(next_in, handles);
libaki_xcat "xcat" "-n" "-f" "fixtures/target-list.txt";
libaki_mline "mline" "-e" "gnu";
libaki_stats "stats" "-a" "--locale" "en";
};
the full rust example:
fn test_02() -> anyhow::Result<String> {
use aki_txpr_macro::*;
use std::io::BufRead;
//
let next_in = runnel::medium::stdio::StdIn::default();
let handles = Vec::new();
let (next_in, handles) = pipe_line! {
(next_in, handles);
libaki_xcat "xcat" "-n" "-f" "fixtures/target-list.txt";
libaki_mline "mline" "-e" "gnu";
libaki_stats "stats" "-a" "--locale" "en";
};
// main thread
let string = {
let sout = runnel::medium::stringio::StringOut::default();
#[rustfmt::skip]
let sioe = runnel::RunnelIoeBuilder::new().pin(next_in).pout(sout).build();
for line in sioe.pin().lock().lines() {
let line_s = line?;
let line_ss = line_s.as_str();
#[rustfmt::skip]
sioe.pout().lock().write_fmt(format_args!("{}\n", line_ss))?;
}
#[rustfmt::skip]
let x = sioe.pout().lock().buffer_str().to_string();
x
};
//
for handle in handles {
let _ = handle.join();
}
//
Ok(string)
}
libaki-*
command | description |
---|---|
aki-gsub | substitude text command, replace via regex. |
aki-mcolor | mark up text with color |
aki-mcycle | mark up text with cycling color |
aki-mline | match line, regex text filter like a grep of linux command. |
aki-resort | sort lines of text. You can use regex to specify the KEY. |
aki-stats | output the statistics of text, like a wc of linux command. |
aki-unbody | output first or last n lines, like a head and tail of linux command. |
aki-xcat | concatenate files that are plain, gzip, xz and zstd. |
aki-xtee | copy standard input to each files and standard output. |
Changelogs
License
This project is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Dependencies
~180KB