#minecraft #ping #server #code #specification #color

无std mc-legacy-formatting

为Minecraft的旧版格式化系统设计的非分配式解析器

6个版本

0.3.1 2020年11月20日
0.3.0 2020年11月20日
0.2.0 2020年10月20日
0.1.2 2020年10月20日

2044解析器实现 中排名

每月下载量 27
2 crates 中使用

MIT/Apache

28KB
438

mc-legacy-formatting

Docs.rs docs Crates.io version Crates.io downloads CI

一个解析Minecraft 旧版格式化系统 的解析器,它仔细考虑了原版客户端实现的细节。

功能

  • 基于迭代器的非分配式解析器
  • 支持#![no_std]用法(将default-features设置为false
  • 实现了整个规范以及原版客户端的细节(如处理带有STRIKETHROUGH样式的空白字符)
  • 用于将解析后的Span以美观格式打印到终端的帮助器
  • 支持解析格式代码的任何起始字符(原版使用§,而许多社区工具使用&

示例

使用SpanIter

use mc_legacy_formatting::{SpanExt, Span, Color, Styles};

let s = "§4This will be dark red §oand italic";
let mut span_iter = s.span_iter();

assert_eq!(span_iter.next().unwrap(), Span::new_styled("This will be dark red ", Color::DarkRed, Styles::empty()));
assert_eq!(span_iter.next().unwrap(), Span::new_styled("and italic", Color::DarkRed, Styles::ITALIC));
assert!(span_iter.next().is_none());

使用自定义起始字符

use mc_legacy_formatting::{SpanExt, Span, Color, Styles};

let s = "&6It's a lot easier to type &b& &6than &b§";
let mut span_iter = s.span_iter().with_start_char('&');

assert_eq!(span_iter.next().unwrap(), Span::new_styled("It's a lot easier to type ", Color::Gold, Styles::empty()));
assert_eq!(span_iter.next().unwrap(), Span::new_styled("& ", Color::Aqua, Styles::empty()));
assert_eq!(span_iter.next().unwrap(), Span::new_styled("than ", Color::Gold, Styles::empty()));
assert_eq!(span_iter.next().unwrap(), Span::new_styled("§", Color::Aqua, Styles::empty()));
assert!(span_iter.next().is_none());

MSRV

当前最低支持的Rust版本为1.48.0。在需要时,这将升级到最新的稳定版本。

许可证

根据您的选择,受Apache许可证第2版MIT许可证约束。
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献都应按上述方式双重许可,不得附加任何额外条款或条件。

依赖关系

~0–9.5MB
~52K SLoC