Skip to content

Text-formatter-with-style-tags

Return a copy of a TextFormatter with a specific local StyleTagRegistry attached. This method is the direct way to make one formatter use custom or overridden tag definitions without changing shared global registry state.

Interface

moonbit
pub fn TextFormatter::with_style_tags(self : TextFormatter, style_tags : StyleTagRegistry) -> TextFormatter {

input

  • self : TextFormatter - Base formatter to copy.
  • style_tags : StyleTagRegistry - Local registry to attach to the returned formatter.

output

  • TextFormatter - A new formatter value whose style_tags field is set to Some(style_tags).

Explanation

Detailed rules explaining key parameters and behaviors

  • This method only changes the formatter's local style_tags attachment.
  • The returned formatter preserves timestamp, level, target, field, template, color, and markup settings from self.
  • Local style tags take precedence over global registry lookup, which in turn takes precedence over builtin tags.
  • The original formatter value is not mutated.

How to Use

Here are some specific examples provided.

When Need Custom Tags For One Formatter Only

When one formatter should understand project-specific tag names without touching global state:

moonbit
let tags = style_tag_registry().set_tag("accent", fg=Some("#4cc9f0"), bold=true)
let formatter = text_formatter(color_mode=ColorMode::Always).with_style_tags(tags)

In this example, the custom registry only affects the returned formatter value.

When Need To Override A Built-in Tag Locally

When a formatter should keep the standard tag vocabulary but change one entry:

moonbit
let tags = default_style_tag_registry().set_tag("success", fg=Some("#22cc88"), underline=true)
let formatter = text_formatter(color_mode=ColorMode::Always).with_style_tags(tags)

In this example, the local registry shadows the built-in or global success definition for that formatter.

Error Case

e.g.:

  • If the relevant markup scopes are disabled, attaching local tags does not produce a visible effect.

  • If callers actually want to change shared process-wide tag resolution, set_global_style_tag_registry(...) is the better API.

Notes

  1. This is the local, formatter-scoped alternative to editing the global style tag registry.

  2. It is the natural companion to style_tag_registry() and default_style_tag_registry().

Published from the repository docs folder with VitePress.