From 419fda75c99079947e4e90b88d460740e8703363 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 4 Dec 2019 06:58:28 +0100 Subject: [PATCH] Support margin style flag --- document.go | 14 +++++++++++--- style.go | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/document.go b/document.go index 959304d..d5a7cd7 100644 --- a/document.go +++ b/document.go @@ -26,21 +26,29 @@ func (e *DocumentElement) Finish(w io.Writer, node *bf.Node, tr *TermRenderer) e indent = rules.Indent suffix = rules.Suffix } - + pw := &PaddingWriter{ + Padding: uint(tr.WordWrap + int(indent*2)), + PadFunc: func(wr io.Writer) { + renderText(w, rules, " ") + }, + Forward: &AnsiWriter{ + Forward: w, + }, + } iw := &IndentWriter{ Indent: indent, Forward: &AnsiWriter{ - Forward: w, + Forward: pw, }, } _, err := iw.Write(tr.document.Bytes()) if err != nil { return err } + renderText(iw, rules, suffix) tr.document.Reset() tr.blockStyle.Pop() - renderText(w, rules, suffix) return nil } diff --git a/style.go b/style.go index 46a1189..f43a618 100644 --- a/style.go +++ b/style.go @@ -49,6 +49,7 @@ type ElementStyle struct { Inverse bool `json:"inverse"` Blink bool `json:"blink"` Indent uint `json:"indent"` + Margin uint `json:"margin"` Theme string `json:"theme"` Prefix string `json:"prefix"` Suffix string `json:"suffix"` @@ -83,6 +84,19 @@ func (s StyleStack) Indent() uint { return i } +func (s StyleStack) Margin() uint { + var i uint + + for _, v := range s { + if v == nil { + continue + } + i += v.Margin + } + + return i +} + func (s StyleStack) Parent() *ElementStyle { if len(s) < 2 { return s.Current()