all repos — searchix @ 2430f46a9948b38b06880606a95dec357d01f619

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: render markdown in option descriptions

Alan Pearce
commit

2430f46a9948b38b06880606a95dec357d01f619

parent

158904f480e558ca00f680e7c577bb6329605eff

1 file changed, 57 insertions(+), 0 deletions(-)

changed files
A internal/options/option.go
@@ -0,0 +1,57 @@
+package options + +import ( + "encoding/json" + "strings" + + "github.com/pkg/errors" + "github.com/yuin/goldmark" +) + +type NixValue struct { + Type string `json:"_type" mapstructure:"_type"` + Text string `json:"text"` +} + +type HTML struct { + HTML string +} + +func (html *HTML) UnmarshalText(text []byte) error { + var out strings.Builder + err := goldmark.Convert(text, &out) + if err != nil { + return errors.WithMessage(err, "failed to convert markdown to HTML") + } + + html.HTML = out.String() + + return nil +} + +func (html *HTML) UnmarshalJSON(raw []byte) error { + var v struct { + HTML string + } + err := json.Unmarshal(raw, &v) + if err != nil { + return errors.WithMessage(err, "error unmarshaling json") + } + html.HTML = v.HTML + + return nil +} + +type NixOption struct { + Option string + Declarations []string + Default NixValue + Description HTML + Example NixValue + ReadOnly bool + Type string + Loc []string + RelatedPackages HTML +} + +type NixOptions []NixOption