#iri #uri #specification #parser #fork #temporary #rdftk

field33_rdftk_iri_temporary_fork

该软件包提供了 IRI 和 URI 规范的实现

1 个不稳定版本

0.1.9 2022年8月23日

#2156网页编程

Download history 31/week @ 2024-03-12 27/week @ 2024-03-19 46/week @ 2024-03-26 60/week @ 2024-04-02 22/week @ 2024-04-09 16/week @ 2024-04-16 27/week @ 2024-04-23 23/week @ 2024-04-30 21/week @ 2024-05-07 20/week @ 2024-05-14 23/week @ 2024-05-21 16/week @ 2024-05-28 16/week @ 2024-06-04 18/week @ 2024-06-11 20/week @ 2024-06-18 18/week @ 2024-06-25

75 每月下载量
7 个软件包中使用 (6 直接)

MIT 许可证

140KB
2K SLoC

Rust 2K SLoC // 0.2% comments Pest 261 SLoC // 0.4% comments

RDFtk: IRI

iri本软件包提供了 IRIURI 规范的实现。

crates.io docs.rs

与RDFtk项目的其余部分一样,这个crate的目标是在可用性和优化之间寻求平衡,因此它可能比必要的克隆更多,并且解析速度可能比预期慢。对于大多数情况,客户端应使用IRIRef类型,它是一个Arc引用,因此可以在不克隆整个IRI值的情况下重复使用。

示例

最常见的用法是从字符串解析IRI值。

use field33_rdftk_iri_temporary_fork::IRI;
use std::convert::from_str;

let result = IRI::from_str(
    "https://[email protected]:123/forum/questions/?tag=networking&order=newest#top",
);

builder模块允许更程序化地构建IRI

use field33_rdftk_iri_temporary_fork::{IRI, Scheme};
use field33_rdftk_iri_temporary_fork::builder::IriBuilder;

let mut builder = IriBuilder::default();
let result: IriResult<IRI> = builder
    .scheme(&Scheme::https())
    .user_name("john.doe")
    .host("www.example.com")?
    .port(123.into())
    .path_str("/forum/questions/")?
    .query_str("tag=networking&order=newest")?
    .fragment_str("top")?
    .try_into();

注意使用Scheme::https()SchemePort类型都包含用于构建已知值的相关函数。

特性

以下特性存在于此crate中。

  • builder [默认] -- 包含builder模块,它反过来又包含IriBuilder类型。
  • genid [默认] -- 包含一个构造函数,用于创建"genid"已知IRI值。
  • path_iri [默认] -- 为IRI提供TryFrom<&PathBuf>TryFrom<PathBuf>的实现。
  • uuid_iri [默认] -- 为IRI提供TryFrom<&Uuid>TryFrom<Uuid>的实现。

变更

版本 0.1.9

  • 添加了一个特性,以启用genid创建。
  • 使IRI支持PartialOrd + Ord,现在可以排序。
  • 添加了PercentEncoding trait用于百分比编码组件。

版本 0.1.8

  • 对解析器进行了小的修复,以修复一些优先级规则。
  • 一些文档修复。

版本 0.1.7

  • 为Path和IRI类型添加了对已知IRI的支持。

版本 0.1.6

  • 在lib.rs中应用了更多的警告。
  • 应用了更多的Clippy建议。

版本 0.1.5

  • 应用了所有Clippy建议。

版本 0.1.4

  • 进行了更多的测试,并报告了本地覆盖率。
  • 修复了在UserInfo::to_string中分隔符缺失的错误。
  • 修复了解析错误IpvFuture::from_str
  • IriBuilder添加了hostpath_rootpath方法。
  • IRI上更改了with_new_querywith_new_fragment,不再接受Option
  • Scheme添加了blob已知值。

版本 0.1.3

  • 主要是测试。
    1. 如果测试仅使用公共API,则将任何测试移动到主代码之外。
    2. 添加了一组用于收集整个IRI示例的文件。
    3. Scheme添加了proptest,将为更多添加。
  • 修复了IRI::is_absolute中的错误,忽略权限并考虑片段。
  • 添加了 IRI::is_relative_reference

版本 0.1.2

  • 主要是文档的补充。
  • 尽可能添加测试用例。
  • 添加了有用的函数和API快捷方式。
  • 添加了 path_iriuuid_iri 功能。

版本 0.1.1

  • 添加了 IRIRef 类型。

版本 0.1.0

  • 首次发布。

待办事项

  1. 完成 IRI 规范化
  2. 完成 IRI 解析器
  3. 完成 IRI 相对化器

RDF

依赖

~4.5–7MB
~129K SLoC