mirror of
https://github.com/rwinkhart/glamour-temp-MUTN.git
synced 2026-09-05 16:37:19 -04:00
Fix cascading style attributes from BlockElements
This commit is contained in:
+1
-1
@@ -91,5 +91,5 @@ func (s BlockStack) Current() BlockElement {
|
||||
func (s BlockStack) With(child StylePrimitive) StylePrimitive {
|
||||
sb := StyleBlock{}
|
||||
sb.StylePrimitive = child
|
||||
return cascadeStyle(s.Current().Style, sb, true).StylePrimitive
|
||||
return cascadeStyle(s.Current().Style, sb, false).StylePrimitive
|
||||
}
|
||||
|
||||
+4
-4
@@ -78,7 +78,7 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element {
|
||||
case ast.KindBlockquote:
|
||||
e := &BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.BlockQuote, true),
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.BlockQuote, false),
|
||||
Margin: true,
|
||||
Newline: true,
|
||||
}
|
||||
@@ -107,7 +107,7 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element {
|
||||
|
||||
e := &BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, s, true),
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, s, false),
|
||||
Margin: true,
|
||||
Newline: true,
|
||||
}
|
||||
@@ -281,7 +281,7 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element {
|
||||
// n := node.(*ast.CodeSpan)
|
||||
e := &BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.Code, true),
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.Code, false),
|
||||
}
|
||||
return Element{
|
||||
Renderer: e,
|
||||
@@ -344,7 +344,7 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element {
|
||||
case astext.KindDefinitionList:
|
||||
e := &BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.DefinitionList, true),
|
||||
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.options.Styles.DefinitionList, false),
|
||||
Margin: true,
|
||||
Newline: true,
|
||||
}
|
||||
|
||||
+7
-7
@@ -21,17 +21,17 @@ func (e *HeadingElement) Render(w io.Writer, ctx RenderContext) error {
|
||||
|
||||
switch e.Level {
|
||||
case 1:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H1)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H1)
|
||||
case 2:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H2)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H2)
|
||||
case 3:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H3)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H3)
|
||||
case 4:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H4)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H4)
|
||||
case 5:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H5)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H5)
|
||||
case 6:
|
||||
rules = cascadeStyles(false, rules, ctx.options.Styles.H6)
|
||||
rules = cascadeStyles(true, rules, ctx.options.Styles.H6)
|
||||
}
|
||||
|
||||
if !e.First {
|
||||
@@ -40,7 +40,7 @@ func (e *HeadingElement) Render(w io.Writer, ctx RenderContext) error {
|
||||
|
||||
be := BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(bs.Current().Style, rules, true),
|
||||
Style: cascadeStyle(bs.Current().Style, rules, false),
|
||||
}
|
||||
bs.Push(be)
|
||||
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ func (e *ParagraphElement) Render(w io.Writer, ctx RenderContext) error {
|
||||
}
|
||||
be := BlockElement{
|
||||
Block: &bytes.Buffer{},
|
||||
Style: cascadeStyle(bs.Current().Style, rules, true),
|
||||
Style: cascadeStyle(bs.Current().Style, rules, false),
|
||||
}
|
||||
bs.Push(be)
|
||||
|
||||
|
||||
+13
-14
@@ -136,38 +136,37 @@ type StyleConfig struct {
|
||||
HTMLSpan StyleBlock `json:"html_span"`
|
||||
}
|
||||
|
||||
func cascadeStyles(onlyColors bool, s ...StyleBlock) StyleBlock {
|
||||
func cascadeStyles(toBlock bool, s ...StyleBlock) StyleBlock {
|
||||
var r StyleBlock
|
||||
|
||||
for _, v := range s {
|
||||
r = cascadeStyle(r, v, onlyColors)
|
||||
r = cascadeStyle(r, v, toBlock)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func cascadeStyle(parent StyleBlock, child StyleBlock, onlyColors bool) StyleBlock {
|
||||
func cascadeStyle(parent StyleBlock, child StyleBlock, toBlock bool) StyleBlock {
|
||||
s := child
|
||||
|
||||
s.Color = parent.Color
|
||||
s.BackgroundColor = parent.BackgroundColor
|
||||
s.Underline = parent.Underline
|
||||
s.Bold = parent.Bold
|
||||
s.Italic = parent.Italic
|
||||
s.CrossedOut = parent.CrossedOut
|
||||
s.Faint = parent.Faint
|
||||
s.Conceal = parent.Conceal
|
||||
s.Overlined = parent.Overlined
|
||||
s.Inverse = parent.Inverse
|
||||
s.Blink = parent.Blink
|
||||
|
||||
if !onlyColors {
|
||||
if toBlock {
|
||||
s.Indent = parent.Indent
|
||||
s.Margin = parent.Margin
|
||||
s.Underline = parent.Underline
|
||||
s.Bold = parent.Bold
|
||||
s.Italic = parent.Italic
|
||||
s.CrossedOut = parent.CrossedOut
|
||||
s.Faint = parent.Faint
|
||||
s.Conceal = parent.Conceal
|
||||
s.Overlined = parent.Overlined
|
||||
s.Inverse = parent.Inverse
|
||||
s.Blink = parent.Blink
|
||||
s.BlockPrefix = parent.BlockPrefix
|
||||
s.BlockSuffix = parent.BlockSuffix
|
||||
s.Prefix = parent.Prefix
|
||||
s.Suffix = parent.Suffix
|
||||
s.Format = parent.Format
|
||||
}
|
||||
|
||||
if child.Color != nil {
|
||||
|
||||
Reference in New Issue
Block a user