#macro #rad #template #processor #modern #ext

进程宏 rad_ext_template

Rad扩展宏模板宏

3个版本 (重大更改)

0.3.0 2022年7月8日
0.2.0 2022年7月2日
0.1.0 2022年3月11日

#1789 in 进程宏


用于r4d

MIT/Apache

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

安装

安装rust工具链以进行构建

我建议在准备合适的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

简单用法

二进制文件

每个radrado都有两个二进制文件。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()?;

文档

索引

已知问题

问题

无运行时依赖项

功能