stripes

package module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: MIT Imports: 16 Imported by: 0

README

stripes CI Go Reference

stripes

Streaming pretty-printer for structured data formats — JSON, YAML, XML, HTML, CSV, Dockerfile, markdown, protobuf, parquet, plain text, source code (via chroma), txtar archives, WebAssembly — usable as a Go library or as a standalone CLI.

Motivation

Pretty-printers in the Unix toolchain are fragmented: jq for JSON, yq for YAML, browsers for HTML, no canonical option for protobuf. They share neither flags nor styling, which makes uniform terminal output hard to assemble inside a single Go program emitting mixed structured payloads (logs, traces, debug dumps, RPC responses).

stripes collapses that surface to a single library and CLI:

  • Renderers stream — bytes are emitted as they arrive, no whole-input load. Works for tail -f, large objects, and HTTP response bodies.
  • Format dispatch is by MIME type, so any program already carrying a content type can pick a renderer without parsing its own input.
  • The same library powers the CLI; no separate process required when a Go program wants colored output.
  • One binary, one set of flags, one styling model across all supported formats.

Library

Format sub-packages

Each format lives in its own sub-package that registers itself with the root stripes package at init. Import the formats you need for their side effects — this keeps your dependency graph free of the parsers you don't use:

import (
    "github.com/firetiger-oss/stripes"
    _ "github.com/firetiger-oss/stripes/json"
    _ "github.com/firetiger-oss/stripes/yaml"
)

Or import everything with the umbrella package:

import _ "github.com/firetiger-oss/stripes/all"
Content type Sub-package Renderer(s)
application/json stripes/json Render
application/yaml stripes/yaml Render
application/xml stripes/xml Render
text/html stripes/html Render
text/csv stripes/csv Render
text/x-dockerfile stripes/dockerfile Render
text/x-go-mod etc. stripes/gomod RenderMod, RenderSum, RenderWork, RenderVendorModules
text/markdown stripes/markdown Render
text/x-source-code stripes/code New (factory; pass chroma lexer name)
application/wasm stripes/code RenderWasm (requires wasm-tools, or wasm2wat from WABT as fallback)
application/protobuf stripes/protobuf New (factory; pass message descriptor)
application/vnd.apache.parquet stripes/parquet Render
text/x-txtar stripes/txtar Render (recursive per-file dispatch)
text/plain stripes (root) Text, Plain

The plain renderers share the Renderer signature: func(io.Writer, io.Reader, *stripes.Styles). The two New factories (stripes/code, stripes/protobuf) take format-specific parameters and return a Renderer.

.wat/.wast text-format WebAssembly is detected automatically and routed through chroma's wat lexer. Binary .wasm rendering shells out to wasm-tools print from wasm-tools, which tracks the current WebAssembly specification (component model, GC, exception handling, …); install via brew install wasm-tools or cargo install wasm-tools. When wasm-tools is not on $PATH, rendering falls back to wasm2wat from WABT (brew install wabt or apt install wabt), which may fail on modules using newer spec features.

Terraform .tf and .hcl files are picked up by chroma's built-in filename match; .tfvars is routed to the same terraform lexer. .tfstate and .tfstate.backup are routed to the JSON renderer.

stripes.Func

Pick a Renderer by MIME type. Returns nil if no imported sub-package handles the content type.

import (
    "github.com/firetiger-oss/stripes"
    _ "github.com/firetiger-oss/stripes/json"
)

renderer := stripes.Func("application/json", "")
renderer(os.Stdout, body, stripes.DefaultStyles)

For application/protobuf, pass the message's full name as the second argument so the dynamic descriptor lookup can resolve fields.

stripes.Detect

Resolve a content type from a filename and/or the leading bytes of a stream, using the filenames, extensions, magic bytes, and heuristics registered by the imported sub-packages.

buf, _ := bufio.NewReader(input).Peek(512)
ct := stripes.Detect("payload.yaml", buf)
renderer := stripes.Func(ct, "")
stripes.Register

Third-party code can register additional formats by calling stripes.Register with a Format from an init function — the same mechanism the built-in sub-packages use.

stripes.Styles

Pass stripes.DefaultStyles for the built-in grayscale theme, a Clone() to customize, or &stripes.Styles{} for unstyled output.

stripes/table

Render typed iterators of struct values as styled CLI tables. Columns are derived by reflection from exported fields: headers come from field names (or a table:"NAME" tag), cell formatters from field types (time.Time/time.Duration get dedicated formats, numerics are right-aligned). Tag modifiers like table:",bytes", table:",count", and table:",0-100%" pin specific formatters and suffixes.

import (
    "iter"
    "os"
    "time"

    "github.com/firetiger-oss/stripes/table"
)

type Pod struct {
    Name     string
    Status   string
    Restarts int
    Memory   int64 `table:"MEM,bytes"`
    Age      time.Time
}

func render(seq iter.Seq2[Pod, error]) error {
    return table.Write(os.Stdout, seq, table.WithNow(time.Now))
}

Write / Format are one-shot helpers; NewWriter[T] / NewFormatter[T] precompute the schema and are appropriate for hot loops. For non-struct rows ([]string, []any, …) pass WithColumns or WithHeaders. Borders, viewports/scrollbars, row selectors, and per-cell or per-row style callbacks are available via the Option constructors.

stripes/cobra

Drop-in styled help, usage, and error output for CLIs built with spf13/cobra. The palette is sourced from stripes.DefaultStyles so help text matches the rest of the project's output. ANSI is downgraded or stripped automatically when stdout/stderr is not a terminal.

import (
    "context"
    "errors"
    "os"

    "github.com/spf13/cobra"

    stripescobra "github.com/firetiger-oss/stripes/cobra"
)

func main() {
    root := &cobra.Command{
        Use:   "mytool",
        Short: "A demo CLI",
    }
    root.PersistentFlags().StringP("config", "c", "/etc/mytool.cfg", "config `file` path")

    root.AddCommand(&cobra.Command{
        Use:   "serve",
        Short: "Start the server",
        RunE: func(*cobra.Command, []string) error {
            return errors.New("not implemented")
        },
    })

    if err := stripescobra.Execute(context.Background(), root); err != nil {
        os.Exit(1)
    }
}

Execute installs styled help/usage/error rendering on root and every subcommand before calling root.ExecuteContext. Use Apply to install the renderers without running the command. The palette, output writers, and error handler are overridable via WithStyles, WithOutput, WithErrorOutput, and WithErrorHandler.

CLI

go install github.com/firetiger-oss/stripes/cmd/stripes@latest
$ stripes --help
Usage: stripes [flags] [file...]

Pretty-print structured data (JSON, YAML, XML, HTML, CSV, Dockerfile, markdown,
protobuf, parquet, text, source code, txtar, wasm) with ANSI colors and optional paging.

When multiple files are given, each is preceded by a centered rule
(───── filename ─────) so the source is visible inline. --format,
--content-type, and --schema apply to all of them.

Flags:
  -f, --format string         json|yaml|xml|html|csv|dockerfile|markdown|text|code|protobuf|parquet|txtar|wasm|table|auto (default auto)
                              "table" routes CSV/TSV/JSONL/parquet through the
                              new typed-table renderer with width-fitting,
                              JSON-cell colorization, and (for parquet) schema-
                              driven column formatting.
      --content-type string   Override MIME type (e.g. application/vnd.foo+json)
      --schema string         Schema URL (protobuf full name)
      --color string          always|never|auto (default auto)
      --paging string         always|never|auto (default auto). In "auto",
                              the pager is spawned only when the rendered
                              output is wider or taller than the terminal,
                              or when more than one file is rendered.
      --profile string        Color profile name or path. Bare names resolve
                              against $XDG_CONFIG_HOME/stripes/profiles
                              (~/.config/stripes/profiles) and the built-in
                              set. A value containing "/" or ending in
                              .yaml/.yml is loaded as a file directly.
  -w, --width int             Output width in columns. 0 (default) =
                              auto-detect from the terminal; falls back
                              to no wrap when stdout is not a TTY.
  -p, --pager string          Pager command (e.g. "less -R", "bat --plain").
                              Use --paging=never to bypass paging.
  -n, --line-numbers          Show line numbers in a left-aligned gutter.

Pager resolution: -p flag > $PAGER > "less -R"
Profile resolution: --profile flag > $STRIPES_PROFILE > built-in default
Color is auto-disabled when NO_COLOR is set or stdout is not a terminal.
Shell aliases
alias scat='stripes'                 # auto-paging: pages only when content overflows
alias spcat='stripes --paging=never' # always-stream, never page

stripes CLI screenshot

Contributing

Contributions are welcome! To get started:

  1. Ensure you have Go 1.25+ installed
  2. Run go test ./... to verify tests pass

Please report bugs and feature requests via GitHub Issues.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

Overview

Package stripes is a streaming, ANSI-colored pretty-printer for structured data formats: JSON, YAML, XML, HTML, CSV, protobuf, parquet, Dockerfiles, the Go toolchain's flat files, markdown, source code, txtar archives, WebAssembly, and plain text.

All renderers share a common shape:

renderer(w, r, stripes.DefaultStyles)

where w is the styled output sink, r is the raw input stream, and the Styles value selects colors and layout.

Format registry

The root package holds only the registry and shared primitives; each format lives in its own sub-package that registers itself at init. Import the sub-packages for the formats you need:

import (
    "github.com/firetiger-oss/stripes"
    _ "github.com/firetiger-oss/stripes/json"
    _ "github.com/firetiger-oss/stripes/yaml"
)

or import github.com/firetiger-oss/stripes/all for the full set. Func dispatches by MIME type against the registered formats, and Detect sniffs an unknown stream into a content-type string using their registered filenames, extensions, magic bytes, and heuristics. A format whose sub-package has not been imported is simply absent: Func returns nil and Detect falls through to the next candidate.

Third-party code can register additional formats with Register.

The companion command github.com/firetiger-oss/stripes/cmd/stripes is a file viewer that wraps these primitives with format auto-detection, TTY-aware coloring, and built-in paging.

Index

Constants

This section is empty.

Variables

View Source
var DefaultStyles = &Styles{
	Name:       lipgloss.NewStyle().Foreground(lipgloss.Color("12")).Bold(true),
	Text:       lipgloss.NewStyle().Foreground(lipgloss.Color("7")),
	String:     lipgloss.NewStyle().Foreground(lipgloss.Color("2")),
	Number:     lipgloss.NewStyle().Foreground(lipgloss.Color("7")),
	Boolean:    lipgloss.NewStyle().Foreground(lipgloss.Color("13")),
	Null:       lipgloss.NewStyle().Foreground(lipgloss.Color("8")),
	Syntax:     lipgloss.NewStyle().Foreground(lipgloss.Color("7")).Bold(true),
	Code:       lipgloss.NewStyle().Foreground(lipgloss.Color("183")),
	Anchor:     lipgloss.NewStyle().Foreground(lipgloss.Color("12")),
	Comment:    lipgloss.NewStyle().Foreground(lipgloss.Color("8")).Faint(true),
	Title:      lipgloss.NewStyle().Foreground(lipgloss.Color("7")).Bold(true),
	LineNumber: lipgloss.NewStyle().Foreground(lipgloss.Color("244")),
	Insertion:  lipgloss.NewStyle().Foreground(lipgloss.Color("2")),
	Deletion:   lipgloss.NewStyle().Foreground(lipgloss.Color("1")),
	Heading: [6]lipgloss.Style{
		lipgloss.NewStyle().Foreground(lipgloss.Color("12")).Bold(true),
		lipgloss.NewStyle().Foreground(lipgloss.Color("12")).Bold(true),
		lipgloss.NewStyle().Foreground(lipgloss.Color("12")).Bold(true),
		lipgloss.NewStyle().Foreground(lipgloss.Color("4")).Bold(true),
		lipgloss.NewStyle().Foreground(lipgloss.Color("4")),
		lipgloss.NewStyle().Foreground(lipgloss.Color("4")).Faint(true),
	},
	Columns: lipgloss.NewStyle().Bold(true),
	Rows:    lipgloss.NewStyle(),
	Border:  lipgloss.NormalBorder(),
	Indent:  "  ",
	Width:   80,
}

DefaultStyles provides a grayscale styling theme using shades of grey, dimming, and bold

View Source
var ErrProfileNotFound = errors.New("profile not found")

ErrProfileNotFound is returned by LoadProfile when no profile with the given name exists in either the user config dir or the bundled set.

Functions

func Detect

func Detect(name string, peek []byte) string

Detect resolves a content type for a stream.

The lookup order is:

  1. Exact filename match against registered [Format.Filenames].
  2. Registered [Format.MatchPath] callbacks (path-aware rules); these run before the extension match so e.g. vendor/modules.txt is not swallowed by a ".txt" registration.
  3. File-extension match against registered [Format.Extensions].
  4. Registered filename fallbacks (see RegisterFilenameFallback).
  5. Magic-byte prefixes from registered [Format.MagicBytes].
  6. Registered [Format.Detect] content-shape heuristics.
  7. net/http.DetectContentType fallback.
  8. "text/plain" if nothing else matched.

The returned string is a MIME media type compatible with Func. Only formats whose sub-packages have been imported participate; an empty registry resolves everything to "text/plain" (or the http fallback). Empty name and nil peek both return "text/plain".

func IsANSIEnabled added in v0.3.0

func IsANSIEnabled(s *Styles) bool

IsANSIEnabled reports whether styles emit ANSI escape codes. It samples a few styles that all renderers exercise; if any of them produces an escape byte, color output is considered enabled. Used by renderers that switch between styled and plain output paths (notably markdown's fenced-code blocks and source-code highlighting).

func IsNumeric added in v0.3.0

func IsNumeric(s string) bool

IsNumeric reports whether s looks like a number — optionally signed, with `.` or `,` as decimals, scientific notation, and a recognised unit suffix (`%`, time units, byte sizes, SI prefixes, `kg`). Empty strings are treated as numeric (a placeholder for missing values), so callers that care about presence must check separately.

func ListProfiles added in v0.3.0

func ListProfiles() []string

ListProfiles returns the sorted union of profile names available in the user config directory and the bundled set.

func NewPrefixWriter

func NewPrefixWriter(writer io.Writer, prefix string) io.Writer

func Plain

func Plain(w io.Writer, r io.Reader, _ *Styles)

Plain renders content without any formatting or styling

func Register added in v0.3.0

func Register(f Format)

Register adds f to the global format registry. It panics on a missing Name, ContentType, or RendererFor; on a duplicate Name or ContentType; or on duplicate Filenames/Extensions. Safe to call from init().

func RegisterFilenameFallback added in v0.3.0

func RegisterFilenameFallback(fn func(name string) (contentType string, ok bool))

RegisterFilenameFallback installs a name-based content-type resolver consulted by Detect after registered Filenames, Extensions, and MatchPath rules miss but before any MagicBytes or Detect callbacks fire. Used by stripes/code to plug chroma's filename-based language detection in without pulling chroma into the root package.

func Simple added in v0.3.0

func Simple(r Renderer) func(map[string]string, string) Renderer

Simple wraps a parameter-less Renderer as a RendererFor function. Use in the common case where a format's renderer ignores both MIME parameters and the schema URL:

stripes.Format{..., RendererFor: stripes.Simple(Render)}

func Text

func Text(w io.Writer, r io.Reader, styles *Styles)

Text renders a stream as plain styled text, word-wrapping to [Styles.Width] when it is positive.

Types

type Format added in v0.3.0

type Format struct {
	// Name is a short identifier, e.g. "json". Must be unique across
	// registered formats. The stripes CLI accepts Name as a --format
	// alias.
	Name string

	// ContentType is the canonical MIME media type, e.g. "application/json".
	// Must be unique.
	ContentType string

	// Filenames are exact basenames that imply this format
	// (e.g. "Dockerfile", "go.mod"). Optional.
	Filenames []string

	// Extensions are lowercase file extensions including the dot
	// (e.g. ".json"). Optional.
	Extensions []string

	// MagicBytes are exact byte prefixes that identify this format on
	// content sniffing (e.g. {0x00, 'a', 's', 'm'} for WebAssembly).
	// Optional.
	MagicBytes [][]byte

	// MatchPath is consulted by [Detect] after Filenames and Extensions
	// miss but before MagicBytes and Detect. Used for path-aware rules
	// such as vendor/modules.txt that need the parent directory name.
	// Optional.
	MatchPath func(path string) bool

	// Detect inspects up to ~512 bytes of stream content and returns true
	// when the bytes match this format. Runs after all MagicBytes checks
	// across every registered format. Optional.
	Detect func(peek []byte) bool

	// RendererFor returns the [Renderer] for a parsed content type.
	// params are the MIME parameters from contentType (e.g.
	// map[string]string{"lang": "go"} for "text/x-source-code; lang=go").
	// schemaURL is the optional schema reference passed to [Func]
	// (used by protobuf for descriptor lookup; ignored elsewhere).
	// Formats that ignore both arguments should wrap a static Renderer
	// with [Simple]. Required.
	RendererFor func(params map[string]string, schemaURL string) Renderer
}

Format describes one renderable content type. Sub-packages register at init time so that Func and Detect resolve them. The zero value is not valid; Name, ContentType, and RendererFor are required.

func Formats added in v0.3.0

func Formats() []Format

Formats returns a snapshot of every registered format, in registration order. The returned values share storage with the registry; callers should not mutate them.

type Profile added in v0.3.0

type Profile struct {
	Description string        `yaml:"description,omitempty"`
	CodeStyle   string        `yaml:"code-style,omitempty"`
	Styles      ProfileStyles `yaml:"styles"`
	Border      string        `yaml:"border,omitempty"`
	Indent      string        `yaml:"indent,omitempty"`
}

Profile is the on-disk schema for a stripes color profile.

func LoadProfile added in v0.3.0

func LoadProfile(ref string) (*Profile, error)

LoadProfile resolves a profile reference. The reference may be:

  • A bare name (e.g. "iterm-default") — searched first in $XDG_CONFIG_HOME/stripes/profiles (defaulting to ~/.config/stripes/profiles), then in the bundled set.
  • A file path (anything containing a separator, starting with ~, absolute, or ending in .yaml/.yml) — loaded directly. Tilde expansion is applied.

ErrProfileNotFound wraps the underlying error when the reference resolves to nothing.

func (*Profile) ToStyles added in v0.3.0

func (p *Profile) ToStyles() *Styles

ToStyles converts a Profile into a runtime *Styles. Width is left at 0; callers are expected to populate it from terminal/CLI context.

type ProfileStyles added in v0.3.0

type ProfileStyles struct {
	Name       StyleSpec   `yaml:"name"`
	Text       StyleSpec   `yaml:"text"`
	String     StyleSpec   `yaml:"string"`
	Number     StyleSpec   `yaml:"number"`
	Boolean    StyleSpec   `yaml:"boolean"`
	Null       StyleSpec   `yaml:"null"`
	Syntax     StyleSpec   `yaml:"syntax"`
	Code       StyleSpec   `yaml:"code"`
	Anchor     StyleSpec   `yaml:"anchor"`
	Comment    StyleSpec   `yaml:"comment"`
	Title      StyleSpec   `yaml:"title"`
	LineNumber StyleSpec   `yaml:"line-number"`
	Columns    StyleSpec   `yaml:"columns"`
	Rows       StyleSpec   `yaml:"rows"`
	Headings   []StyleSpec `yaml:"headings"`
}

ProfileStyles is the per-element style table within a Profile.

type Renderer

type Renderer func(io.Writer, io.Reader, *Styles)

Renderer writes styled output for a single input format. All format functions in this package (JSON, YAML, XML, ...) match this signature.

func Func

func Func(contentType, schemaURL string) Renderer

Func returns the Renderer matching contentType (a MIME media type), or nil if the content type is unsupported by the formats currently registered. For application/protobuf, schemaURL is interpreted as the full message name used to look up the descriptor in [protoregistry.GlobalTypes] / [protoregistry.GlobalFiles]; for other formats it is ignored.

To populate the registry, import the per-format sub-packages whose renderers you need (e.g. `_ "github.com/firetiger-oss/stripes/json"`), or `_ "github.com/firetiger-oss/stripes/all"` for the full set.

func WithLineNumbers added in v0.3.0

func WithLineNumbers(r Renderer) Renderer

WithLineNumbers returns a Renderer that wraps r and prepends a right-aligned, styled line number to every output line. Each rendered line is prefixed with the styled gutter "<digits>│" followed by a single unstyled space before the content, e.g. " 12│ content". The column width is sized to fit the largest line number, so all numbers align in a single fixed column. Styling is taken from styles.LineNumber.

For renderers whose output preserves a 1:1 line correspondence with the input (Code, Text, Plain, Dockerfile, Markdown, HTML, XML, YAML), the numbers correspond to source input lines. For reformatting renderers (JSON pretty-print, CSV table) the numbers run sequentially over the rendered output.

The inner renderer's output is buffered in memory to determine the column width before any bytes are written to w. This is consistent with how stripes typically renders human-viewed files.

type StyleSpec added in v0.3.0

type StyleSpec struct {
	Color      string `yaml:"color,omitempty"`
	Background string `yaml:"background,omitempty"`
	Bold       bool   `yaml:"bold,omitempty"`
	Faint      bool   `yaml:"faint,omitempty"`
	Italic     bool   `yaml:"italic,omitempty"`
	Underline  bool   `yaml:"underline,omitempty"`
}

StyleSpec describes one styled element. Color may be a hex value (#rrggbb), an ANSI palette index ("0".."255"), or any color name recognised by lipgloss.

type Styles

type Styles struct {
	Name       lipgloss.Style
	Text       lipgloss.Style
	String     lipgloss.Style
	Number     lipgloss.Style
	Boolean    lipgloss.Style
	Null       lipgloss.Style
	Syntax     lipgloss.Style
	Code       lipgloss.Style
	Anchor     lipgloss.Style
	Comment    lipgloss.Style
	Title      lipgloss.Style
	LineNumber lipgloss.Style
	Insertion  lipgloss.Style
	Deletion   lipgloss.Style
	Heading    [6]lipgloss.Style
	Columns    lipgloss.Style
	Rows       lipgloss.Style
	Border     lipgloss.Border
	Indent     string
	Width      int

	// CodeStyle names the chroma style used for syntax highlighting in
	// code blocks (see github.com/alecthomas/chroma/v2/styles). Empty
	// falls back to "github-dark".
	CodeStyle string
}

Styles defines the styling configuration for rendering various data types

func (*Styles) Clone

func (s *Styles) Clone() *Styles

Clone creates a copy of the Styles struct

Directories

Path Synopsis
Package all imports every built-in stripes format sub-package for side-effect registration.
Package all imports every built-in stripes format sub-package for side-effect registration.
cmd
stripes command
Command stripes pretty-prints structured data with ANSI styling and optional paging.
Command stripes pretty-prints structured data with ANSI styling and optional paging.
Package cobra applies a restrained ANSI palette — aligned with github.com/firetiger-oss/stripes — to help, usage, and error output of commands built with github.com/spf13/cobra.
Package cobra applies a restrained ANSI palette — aligned with github.com/firetiger-oss/stripes — to help, usage, and error output of commands built with github.com/spf13/cobra.
Package code registers the source-code renderer with the stripes registry.
Package code registers the source-code renderer with the stripes registry.
Package csv registers the CSV renderer with the stripes registry.
Package csv registers the CSV renderer with the stripes registry.
Package diff registers the unified / git diff renderer with the stripes registry.
Package diff registers the unified / git diff renderer with the stripes registry.
Package dockerfile registers the Dockerfile renderer with the stripes registry.
Package dockerfile registers the Dockerfile renderer with the stripes registry.
Package gomod registers stripes renderers for the Go toolchain's flat-file formats: go.mod, go.sum, go.work, and vendor/modules.txt.
Package gomod registers stripes renderers for the Go toolchain's flat-file formats: go.mod, go.sum, go.work, and vendor/modules.txt.
Package html registers the HTML renderer with the stripes registry.
Package html registers the HTML renderer with the stripes registry.
Package json registers the JSON renderer with the stripes registry.
Package json registers the JSON renderer with the stripes registry.
Package markdown registers the Markdown renderer with the stripes registry.
Package markdown registers the Markdown renderer with the stripes registry.
Package parquet registers the Parquet renderer with the stripes registry.
Package parquet registers the Parquet renderer with the stripes registry.
Package protobuf registers the Protobuf renderer with the stripes registry.
Package protobuf registers the Protobuf renderer with the stripes registry.
Package table renders typed iterators of struct values as styled CLI tables.
Package table renders typed iterators of struct values as styled CLI tables.
Package txtar registers the txtar archive renderer with the stripes registry.
Package txtar registers the txtar archive renderer with the stripes registry.
Package xml registers the XML renderer with the stripes registry.
Package xml registers the XML renderer with the stripes registry.
Package yaml registers the YAML renderer with the stripes registry.
Package yaml registers the YAML renderer with the stripes registry.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL