github.com/charmbracelet/glamour@v0.7.0/ansi/context.go (about) 1 package ansi 2 3 import ( 4 "html" 5 "strings" 6 7 "github.com/microcosm-cc/bluemonday" 8 ) 9 10 // RenderContext holds the current rendering options and state. 11 type RenderContext struct { 12 options Options 13 14 blockStack *BlockStack 15 table *TableElement 16 17 stripper *bluemonday.Policy 18 } 19 20 // NewRenderContext returns a new RenderContext. 21 func NewRenderContext(options Options) RenderContext { 22 return RenderContext{ 23 options: options, 24 blockStack: &BlockStack{}, 25 table: &TableElement{}, 26 stripper: bluemonday.StrictPolicy(), 27 } 28 } 29 30 // SanitizeHTML sanitizes HTML content. 31 func (ctx RenderContext) SanitizeHTML(s string, trimSpaces bool) string { 32 s = ctx.stripper.Sanitize(s) 33 if trimSpaces { 34 s = strings.TrimSpace(s) 35 } 36 37 return html.UnescapeString(s) 38 }