8 个版本 (5 个稳定版)
2.1.0 | 2023年11月14日 |
---|---|
2.0.1 | 2023年11月12日 |
1.0.1 | 2023年11月7日 |
0.1.2 | 2023年11月7日 |
#12 in #compose
每月56 次下载
11KB
181 代码行
Jetpack Compose Rust 解析器
链接: https://crates.io/crates/compose_parser 文档: https://docs.rs/compose_parser/latest/compose_parser/
简介
- 创建用于解析 Jetpack Compose 文本/图像视图并获取所有文本字段和图像的 Rust 解析器
- 函数必须以 @Composable 开头,并且具有任何名称
- 此外,使用 Kotlin 语法
语法
compose_function = { function_declaration }
function_declaration = { "@Composable\nfun " ~ function_name ~ "() " ~ block }
function_name = { identifier }
block = { "{\n" ~ statement* ~ "}" }
statement = { text_function | image_function }
text_function = { " Text(text = " ~ string ~ ")\n" }
image_function = { " Image(image = " ~ string_image ~ ")\n" }
string = { "\"" ~ (ASCII_ALPHANUMERIC | " ")* ~ "\"" }
string_image = { "\"" ~ ASCII_ALPHANUMERIC* ~ ".png\"" }
identifier = { ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "_")* }
- compose_function - 包含所有函数的主要函数
- function_declaration - 包含名称和块的函数声明
- function_name - 函数名称
- block - 包含语句的块,包含文本或图像
- statement - 文本或图像
- text_function - 包含字符串的文本函数
- image_function - 包含字符串和 png 前缀的图像函数
- string - 包含文本的字符串
- string_image - 包含 png 的字符串
- identifier - 函数名称
技术
- Rust 和 pest
- composable.pest 文件包含语法规则
- 创建包含解析器的 lib.rs 文件
- 创建包含测试语法规则的 tests.rs 文件
- 创建包含 CLI 的 cli.rs 文件
通过 CLI 使用
./compose_parser -h or --help # show help
./compose_parser --file <path> # parse file (example.txt)
./compose_parser --author # show author
./compose_parser without any arguments # show help
示例
./compose_parser --file example.kt
@Composable
fun Example() {
Text(text = "World")
Image(image = "url.png")
Image(image = "image.png")
}
// In result you have function name and text and image fields
Function: Example
Text: World
Image: url.png
Image: image.png
作者
- Dzhos Oleksii [email protected]
依赖项
~4MB
~85K SLoC