2 个版本
0.1.3 | 2023年11月14日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 | 2023年10月18日 |
#8 in #url-scheme
每月 25 下载
9KB
90 代码行
URL解析器项目
概述
本项目使用 pest
解析器生成器在 Rust 中实现了 URL 解析器。解析器旨在处理 URL 的各种组件,包括方案、主机、端口、路径、查询参数和片段。
安装
要在您的 Rust 项目中使用解析器,请将其添加到您的 Cargo.toml 文件中的依赖项
[dependencies]
parser_on_rust = "0.1.3"
在 crates.io 上选择当前版本: parser_on_rust
使用
作为库
首先,在您的 Rust 代码中导入库
use parser_on_rust::parse_url;
然后,您可以使用 parse_markdown 函数将 Markdown 文本转换为 HTML
fn main() {
let url_string = "https://www.example.com/path?query=some";
match parse_url(url_string) {
Ok(parsed_url) => println!("Successfully parsed URL: {:?}", parsed_url),
Err(err) => eprintln!("Error parsing URL: {}", err),
}
}
功能
-
灵活的 URL 解析:解析器支持广泛的 URL 格式,允许在提供的 URL 结构中具有灵活性。
-
可选组件:路径、查询参数和片段等组件是可选的,提供了处理带有或不带有这些元素的 URL 的多功能性。
-
错误处理:使用
Result
类型实现了适当的错误处理,确保了解析错误的优雅处理。
项目结构
项目结构如下
-
src/lib.rs
: 包含 URL 解析器的实现,包括语法规则和解析逻辑。 -
src/main.rs
: 一个简单的可执行文件,通过解析示例 URL 来演示解析器的使用。 -
tests/tests.rs
: 对各种场景的单元测试,确保 URL 解析逻辑的正确性。 -
Cargo.toml
: 项目配置文件,指定依赖项和其他元数据。
如何运行
要运行项目,执行以下命令
cargo run
这将执行 main.rs 文件,演示示例 URL 的解析。
单元测试
项目在 tests.rs 文件中包含了一套完整的单元测试。要运行测试,请使用以下命令
cargo test
依赖项
项目依赖于 pest crate 进行解析和 pest_derive 进行过程宏支持。请确保在 Cargo.toml 文件中正确指定这些依赖项。
[dependencies]
pest = "2.7.5"
pest_derive = "2.7.5"
URL 语法
url = { scheme ~ "://" ~ host ~ (":" ~ port)? ~ (path ~ ("/" ~ file)? ~ ("?" ~ query)? ~ ("#" ~ fragment)?)? }
scheme = { identifier_with_optional_dot }
host = { identifier_with_optional_dot }
port = { number }
path = { "/" ~ identifier ~ ("/" ~ identifier)* }
query = { identifier ~ ("=" ~ identifier)* }
fragment = { identifier }
file = { identifier ~ ("." ~ identifier)* }
identifier = { ASCII_ALPHANUMERIC+ }
identifier_with_optional_dot = { identifier ~ ( "." ~ ASCII_ALPHANUMERIC+)* }
number = { DIGIT+ }
WHITESPACE = _{ " " | "\n" | "\t" }
ASCII_ALPHANUMERIC = _{ ASCII_ALPHABET | DIGIT }
ASCII_ALPHABET = _{ 'a'..'z' | 'A'..'Z' }
DIGIT = _{ '0'..'9' }
未来改进
-
其他 URL 组件:根据需要扩展解析器以支持其他 URL 组件。
-
用户输入处理:实现更健壮的用户输入处理机制,允许用户交互式地输入 URL。
-
错误消息:增强错误消息,提供有关解析失败更详细的信息。
-
命令行界面 (CLI): 该项目包含一个简单的命令行界面,允许用户输入要解析的 URL。
依赖项
~2.2–3MB
~59K SLoC