okami.mom/glamour
git clone https://git.nkp.pet/okami.mom/glamour
d0fd7a3
main
1package ansi 2 3import ( 4"fmt" 5"io" 6) 7 8// A EmphasisElement is used to render emphasis. 9type EmphasisElement struct { 10Children []ElementRenderer 11Level int 12} 13 14// Render renders a EmphasisElement. 15func (e * EmphasisElement )Render (w io.Writer ,ctx RenderContext )error { 16style := ctx .options .Styles .Emph 17if e .Level > 1 { 18style = ctx .options .Styles .Strong 19 } 20 21return e .doRender (w ,ctx ,style ) 22} 23 24// StyleOverrideRender renders a EmphasisElement with a given style. 25func (e * EmphasisElement )StyleOverrideRender (w io.Writer ,ctx RenderContext ,style StylePrimitive )error { 26base := ctx .options .Styles .Emph 27if e .Level > 1 { 28base = ctx .options .Styles .Strong 29 } 30return e .doRender (w ,ctx ,cascadeStylePrimitives (base ,style )) 31} 32 33func (e * EmphasisElement )doRender (w io.Writer ,ctx RenderContext ,style StylePrimitive )error { 34for _ ,child := range e .Children { 35if r ,ok := child .(StyleOverriderElementRenderer );ok { 36if err := r .StyleOverrideRender (w ,ctx ,style );err != nil { 37return fmt .Errorf ("glamour: error rendering with style: %w" ,err ) 38 } 39 }else { 40if err := child .Render (w ,ctx );err != nil { 41return fmt .Errorf ("glamour: error rendering: %w" ,err ) 42 } 43 } 44 } 45 46return nil 47}