3个版本 (重大更改)
0.3.0 | 2022年7月8日 |
---|---|
0.2.0 | 2022年7月2日 |
0.1.0 | 2022年3月11日 |
#1789 in 进程宏
用于r4d
4KB
60 行
R4d (Rad)
R4d是一种现代的、易于使用的文本宏处理器。
3.2即将推出
当前主分支尚未经过充分测试。请考虑使用经过充分测试的crates.io版本。
目录
演示
原始文本
$define(author=Simon Creek)
$define(title=R4d demo)
---
title : $title()
author : $author()
---
My name is $author() and I made r4d to make macros can be used within various
forms of texts. This article was written in $date() $time().
$ifdef(test, This should be only printed when I'm testing not in release)$dnl()
This is some important table automatically formatted according to environment
variable.
$regcsv(addr,$include(addr.csv))$dnl()
$static(
queried,
$query(
SELECT id,first_name,address
FROM addr where first_name = John
)
)$dnl()
% Comments are disabled by default for better compatibility
% TABLE_FORM == github
$table($env(TABLE_FORM),$queried())
$wrap(40,$lipsum(15))
Evaluation : $prec($eval( $num(0.1second) + $num(0.2sekunde)),2)
Evaluation : $evalk( 1 + 2 )
处理后的文本
使用以下命令运行:TABLE_FORM=github rad file_name.md -a env+fin --comment
---
title : R4d demo
author : Simon Creek
---
My name is Simon Creek and I made r4d to make macros can be used within various
forms of texts. This article was written in 2022-01-18 16:38:07.
This is some important table automatically formatted according to environment
variable.
|id|first_name|address|
|-|-|-|
|1|John|111-2222|
|2|John|222-3333|
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore.
Evaluation : 0.30
Evaluation : 1 + 2 = 3
安装
我建议在准备合适的CD管道之前使用cargo install
。
# Binary with full macros support
cargo install r4d --features binary --locked
# Only include macros that doesnt't require external crates
cargo install r4d --features basic --locked
# Refer docs.rs or usage section for detailed feature usage
简单用法
二进制文件
每个rad
和rado
都有两个二进制文件。Rad是主要处理器,rado是包装二进制文件。
# rad
# Read from a file and print to stdout
rad input_file.txt
# Read from standard input and print to a file
printf '...text...' | rad -o out_file.txt
# Get a simple manual for a macro
rad --man ifdef
# rado
# Edit a source file
rado edit file_name.txt
# Read a processed file
rado read file_name.txt
# Print environment variables
rado env
库
use r4d::RadError;
use r4d::Processor;
let processor = Processor::new()
.write_to_file(PathBuf::from("cache.txt"))?;
processor.process_file(Path::new("input.txt"))?;
processor.print_result()?;