From f3efe9c7b176e3eff95c5049f12030fad3db66c7 Mon Sep 17 00:00:00 2001 From: Arpad Ryszka Date: Sun, 2 Nov 2025 01:11:59 +0100 Subject: [PATCH] update indentation to be used from textedit --- go.mod | 2 +- go.sum | 4 ++-- indent.go | 48 +----------------------------------------------- render.go | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 50 deletions(-) diff --git a/go.mod b/go.mod index f694716..e6968d8 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,4 @@ go 1.25.3 require code.squareroundforest.org/arpio/notation v0.0.0-20250826181910-5140794b16b2 -require code.squareroundforest.org/arpio/textedit v0.0.0-20251101195945-0569369ef5a7 +require code.squareroundforest.org/arpio/textedit v0.0.0-20251102000454-f8e59c1465b4 diff --git a/go.sum b/go.sum index a0dbdb6..d531e15 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,4 @@ code.squareroundforest.org/arpio/notation v0.0.0-20250826181910-5140794b16b2 h1:S4mjQHL70CuzFg1AGkr0o0d+4M+ZWM0sbnlYq6f0b3I= code.squareroundforest.org/arpio/notation v0.0.0-20250826181910-5140794b16b2/go.mod h1:ait4Fvg9o0+bq5hlxi9dAcPL5a+/sr33qsZPNpToMLY= -code.squareroundforest.org/arpio/textedit v0.0.0-20251101195945-0569369ef5a7 h1:+pvm8bXYg7hn7ATyC1REYTeFWvrp5Ky7tFgyscB0KWo= -code.squareroundforest.org/arpio/textedit v0.0.0-20251101195945-0569369ef5a7/go.mod h1:nXdFdxdI69JrkIT97f+AEE4OgplmxbgNFZC5j7gsdqs= +code.squareroundforest.org/arpio/textedit v0.0.0-20251102000454-f8e59c1465b4 h1:/9Mq7Z64nRIm1rVRF3RWMG5STQB31tO9HjXm+bL8k/0= +code.squareroundforest.org/arpio/textedit v0.0.0-20251102000454-f8e59c1465b4/go.mod h1:nXdFdxdI69JrkIT97f+AEE4OgplmxbgNFZC5j7gsdqs= diff --git a/indent.go b/indent.go index 6b95407..8c08024 100644 --- a/indent.go +++ b/indent.go @@ -5,52 +5,6 @@ import ( "io" ) -type indentState struct { - started, lineStarted bool -} - -func indentLen(indent string) int { - var l int - r := []rune(indent) - for _, ri := range r { - if ri == '\t' { - l += 8 - continue - } - - l++ - } - - return l -} - -func indentEdit(indent []rune) func(rune, indentState) ([]rune, indentState) { - return func(r rune, s indentState) ([]rune, indentState) { - var ret []rune - if r == '\n' { - s.started = true - s.lineStarted = false - ret = append(ret, '\n') - return ret, s - } - - if s.started && !s.lineStarted { - ret = append(ret, indent...) - } - - ret = append(ret, r) - s.started = true - s.lineStarted = true - return ret, s - } -} - func newIndentWriter(out io.Writer, indent string) *textedit.Writer { - return textedit.New( - out, - textedit.Func( - indentEdit([]rune(indent)), - func(indentState) []rune { return nil }, - ), - ) + return textedit.New(out, textedit.Indent("", indent)) } diff --git a/render.go b/render.go index 8e22154..a5e746a 100644 --- a/render.go +++ b/render.go @@ -216,6 +216,21 @@ func (r *renderer) renderUnindented(name string, rg renderGuide, a []Attributes, printf("", name) } +func indentLen(indent string) int { + var l int + r := []rune(indent) + for _, ri := range r { + if ri == '\t' { + l += 8 + continue + } + + l++ + } + + return l +} + func (r *renderer) renderChildTag(tagName string, rg renderGuide, lastBlock bool, ct Tag) (bool, bool) { printf := r.getPrintf(tagName) if rg.preformatted {