9 个版本
0.3.1 | 2022年6月21日 |
---|---|
0.3.0 | 2022年6月20日 |
0.2.1 | 2022年1月13日 |
0.1.4 | 2021年6月4日 |
0.1.2 | 2021年1月11日 |
#267 in 图像
每月 102 次下载
用于 subweight-web
97KB
2K SLoC
徽章生成器
链接由 cargo 生成,请查看 文档 页面
为类似 shields.io 的服务提供快速且准确的徽章生成器。经过验证,与 badge-maker 1:1 匹配,并通过渲染测试进行验证*。
*此库不同之处在于它会为 SVG 生成唯一 ID,因此可以直接嵌入网站(例如在此文档中)。因此,输出之间的差异不会匹配。我们只声称视觉输出匹配,这是最重要的。
关于
此库旨在成为 badge-maker 的 Rust 版本。此库的使用场景有两个方面
- Rusty 徽章生成器,适用于任何基于 Rust 的 shields.io 克隆
- WASM 基础的 npm 包,比基于 Node 的版本速度更快(优化完成后将提供数字)
当前待办事项
- 更好的代码覆盖率
- 优化文本格式化器
- 修复错误。输出很丑。
- 其他徽章样式(需要自定义渲染器)
示例
use badge_maker::BadgeBuilder;
let svg = BadgeBuilder::new()
.label("badge")
.message("maker")
.color_parse("#33B5E5")
.build()?
.svg();
println!("{}", svg);
# Ok::<(), badge_maker::error::Error>(())
功能
此库仍处于初期阶段。尽可能添加测试和文档。如果您有兴趣贡献,请查看 仓库。API 可能会更改。如果您认为某些内容比我的实现方式更好,请提出问题,我很乐意听取您的建议。
我们支持不同的样式、颜色、徽标和链接。徽标生成器接受所有这些选项以及field()
和另一个方法field_parse()
,后者接受一个字符串并将尝试将其解析为有效字段。
命令行界面(CLI)
这是一个库,但您也可以使用简单的命令行工具。
安装
cargo install badge-maker --features cli
使用
badge-maker example badge -c informational -l #282828 -s flat
在Windows上,需要对#
进行特殊处理
badge-maker example badge -c informational -l "#282828" -s flat
颜色
我们目前支持3和6个字符的十六进制颜色、命名颜色及其别名,以及RGB颜色输入。这些可以用它们的枚举变体或使用...parse()
方法来构造。
use badge_maker::BadgeBuilder;
use badge_maker::color::{Color, AliasColor, NamedColor};
let svg = BadgeBuilder::new()
.label("color")
.message("example")
// by enums
.color(Color::Named(NamedColor::BrightGreen))
.color(Color::Alias(AliasColor::Success))
.color(Color::Rgb(10, 200, 50))
// or parsing
.color_parse("brightgreen")
.color_parse("success")
.color_parse("rgb(10, 200, 50)")
.build()?
.svg();
# Ok::<(), badge_maker::error::Error>(())
样式
支持的。其他样式即将推出。请参阅样式枚举以获取构建时的选择,或者使用字符串字面量。
- 扁平
- 塑料
- 扁平方形
- ForTheBadge
- 社交
use badge_maker::{BadgeBuilder, Style};
let svg = BadgeBuilder::new()
.label("example")
.message("plastic")
.color_parse("#FFB932")
.style(Style::Plastic) // example of using typed input
.style_parse("plastic") // example of parsing to derive
.build()?
.svg();
println!("{}", svg);
# Ok::<(), badge_maker::error::Error>(())
链接和徽标
可以添加到原生渲染的徽标中支持的链接。如果您需要直接嵌入svg,这很好。然而,在像rust文档这样的网站上,它们可能会显示下划线。为了解决这个问题,渲染徽标的第三方api应该用markdown中的代码包裹svg [![name for readers]](api端点链接)](点击时的链接)
。
use badge_maker::BadgeBuilder;
let logo_url = "https://upload.wikimedia.org/wikipedia/commons/\
thumb/d/d5/Rust_programming_language_black_logo.svg/\
1024px-Rust_programming_language_black_logo.svg.png";
let svg = BadgeBuilder::new()
.label("lang")
.message("rust")
.color_parse("#F5F5F5")
.link("https://rust-lang.net.cn/")
.logo_url(logo_url)
.style_parse("flatsquare")
.build()?
.svg();
# Ok::<(), badge_maker::error::Error>(())
依赖关系
约4-6MB
约107K SLoC