From 49f2da7feda65ff4f68578b7f8d4eb2fb72e07ee Mon Sep 17 00:00:00 2001 From: "R. Aidan Campbell" Date: Wed, 11 Aug 2021 18:45:29 -0700 Subject: [PATCH] fix issue where lists that didn't start at 1 were not respected (#116) --- ansi/elements.go | 4 ++++ ansi/listitem.go | 3 ++- styles/examples/ordered_list.md | 3 +++ styles/examples/ordered_list.style | 8 ++++++++ testdata/ordered_list.test | 4 ++++ 5 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 styles/examples/ordered_list.md create mode 100644 styles/examples/ordered_list.style create mode 100644 testdata/ordered_list.test diff --git a/ansi/elements.go b/ansi/elements.go index c09ed7f..cd253cf 100644 --- a/ansi/elements.go +++ b/ansi/elements.go @@ -129,6 +129,9 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element { } if node.Parent().(*ast.List).IsOrdered() { e = l + if node.Parent().(*ast.List).Start != 1 { + e += uint(node.Parent().(*ast.List).Start) - 1 + } } post := "\n" @@ -153,6 +156,7 @@ func (tr *ANSIRenderer) NewElement(node ast.Node, source []byte) Element { return Element{ Exiting: post, Renderer: &ItemElement{ + IsOrdered: node.Parent().(*ast.List).IsOrdered(), Enumeration: e, }, } diff --git a/ansi/listitem.go b/ansi/listitem.go index a64b10d..4e47af8 100644 --- a/ansi/listitem.go +++ b/ansi/listitem.go @@ -7,12 +7,13 @@ import ( // An ItemElement is used to render items inside a list. type ItemElement struct { + IsOrdered bool Enumeration uint } func (e *ItemElement) Render(w io.Writer, ctx RenderContext) error { var el *BaseElement - if e.Enumeration > 0 { + if e.IsOrdered { el = &BaseElement{ Style: ctx.options.Styles.Enumeration, Prefix: strconv.FormatInt(int64(e.Enumeration), 10), diff --git a/styles/examples/ordered_list.md b/styles/examples/ordered_list.md new file mode 100644 index 0000000..228396c --- /dev/null +++ b/styles/examples/ordered_list.md @@ -0,0 +1,3 @@ +3. 3 is first and numbered 3 +4. 4 is second and numbered 4 +10. ten is third and numbered 5 diff --git a/styles/examples/ordered_list.style b/styles/examples/ordered_list.style new file mode 100644 index 0000000..e1a3991 --- /dev/null +++ b/styles/examples/ordered_list.style @@ -0,0 +1,8 @@ +{ + "list": { + "level_indent": 1 + }, + "enumeration": { + "block_prefix": ". " + } +} diff --git a/testdata/ordered_list.test b/testdata/ordered_list.test new file mode 100644 index 0000000..c262de6 --- /dev/null +++ b/testdata/ordered_list.test @@ -0,0 +1,4 @@ + +3. 3 is first and numbered 3 +4. 4 is second and numbered 4 +5. ten is third and numbered 5