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 图像

Download history 23/week @ 2024-03-25 33/week @ 2024-04-01 25/week @ 2024-04-08 7/week @ 2024-04-15 15/week @ 2024-04-22 12/week @ 2024-04-29 10/week @ 2024-05-06 28/week @ 2024-05-13 14/week @ 2024-05-20 5/week @ 2024-05-27 9/week @ 2024-06-03 10/week @ 2024-06-10 9/week @ 2024-06-17 15/week @ 2024-06-24 60/week @ 2024-07-01 16/week @ 2024-07-08

每月 102 次下载
用于 subweight-web

MIT 许可证

97KB
2K SLoC

徽章生成器

Crates.io MIT licensed

链接由 cargo 生成,请查看 文档 页面

为类似 shields.io 的服务提供快速且准确的徽章生成器。经过验证,与 badge-maker 1:1 匹配,并通过渲染测试进行验证*。

example_flat

example_plastic

example_flat_square

example_badge_maker

example_color

example_badge

*此库不同之处在于它会为 SVG 生成唯一 ID,因此可以直接嵌入网站(例如在此文档中)。因此,输出之间的差异不会匹配。我们只声称视觉输出匹配,这是最重要的。

关于

此库旨在成为 badge-maker 的 Rust 版本。此库的使用场景有两个方面

  • Rusty 徽章生成器,适用于任何基于 Rust 的 shields.io 克隆
  • WASM 基础的 npm 包,比基于 Node 的版本速度更快(优化完成后将提供数字)

当前待办事项

  1. 更好的代码覆盖率
  2. 优化文本格式化器
  3. 修复错误。输出很丑。
  4. 其他徽章样式(需要自定义渲染器)

示例

example_badge_maker

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)

这是一个库,但您也可以使用简单的命令行工具。

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()方法来构造。

example_color

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>(())

样式

支持的。其他样式即将推出。请参阅样式枚举以获取构建时的选择,或者使用字符串字面量。

  • 扁平 example_flat
  • 塑料 example_plastic
  • 扁平方形 example_flat_square
  • 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端点链接)](点击时的链接)

example_link_logo

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