Support list items with empty first line
also dismiss implementing ordered list bullet overrides for now, e.g. 1. [@10] foo add it once someone needs it - for now it seems like needless complexity
This commit is contained in:
parent
4e536f44bd
commit
724cf6c23e
5 changed files with 29 additions and 7 deletions
|
@ -7,9 +7,6 @@ Take a look at [[https://niklasfasching.github.io/go-org/][github pages]] for so
|
||||||
- more keywords: https://orgmode.org/manual/In_002dbuffer-settings.html
|
- more keywords: https://orgmode.org/manual/In_002dbuffer-settings.html
|
||||||
- headlines
|
- headlines
|
||||||
- unique ids: see [[https://github.com/kaushalmodi/ox-hugo/blob/8472cf2d8667754c9da3728255634e8001a1da6d/ox-hugo.el#L1785-L1850][ox-hugo]] for auto generation
|
- unique ids: see [[https://github.com/kaushalmodi/ox-hugo/blob/8472cf2d8667754c9da3728255634e8001a1da6d/ox-hugo.el#L1785-L1850][ox-hugo]] for auto generation
|
||||||
- improve list parsing
|
|
||||||
- handle list items with empty first line
|
|
||||||
- handle ordered list overrides [@10]
|
|
||||||
** links
|
** links
|
||||||
https://orgmode.org/manual/External-links.html
|
https://orgmode.org/manual/External-links.html
|
||||||
https://orgmode.org/manual/Internal-links.html
|
https://orgmode.org/manual/Internal-links.html
|
||||||
|
|
|
@ -25,16 +25,16 @@ type DescriptiveListItem struct {
|
||||||
Details []Node
|
Details []Node
|
||||||
}
|
}
|
||||||
|
|
||||||
var unorderedListRegexp = regexp.MustCompile(`^(\s*)([+*-])\s(.*)`)
|
var unorderedListRegexp = regexp.MustCompile(`^(\s*)([+*-])(\s+(.*)|\s*$)`)
|
||||||
var orderedListRegexp = regexp.MustCompile(`^(\s*)(([0-9]+|[a-zA-Z])[.)])\s+(.*)`)
|
var orderedListRegexp = regexp.MustCompile(`^(\s*)(([0-9]+|[a-zA-Z])[.)])(\s+(.*)|\s*$)`)
|
||||||
var descriptiveListItemRegexp = regexp.MustCompile(`\s::(\s|$)`)
|
var descriptiveListItemRegexp = regexp.MustCompile(`\s::(\s|$)`)
|
||||||
var listItemStatusRegexp = regexp.MustCompile(`\[( |X|-)\]\s`)
|
var listItemStatusRegexp = regexp.MustCompile(`\[( |X|-)\]\s`)
|
||||||
|
|
||||||
func lexList(line string) (token, bool) {
|
func lexList(line string) (token, bool) {
|
||||||
if m := unorderedListRegexp.FindStringSubmatch(line); m != nil {
|
if m := unorderedListRegexp.FindStringSubmatch(line); m != nil {
|
||||||
return token{"unorderedList", len(m[1]), m[3], m}, true
|
return token{"unorderedList", len(m[1]), m[4], m}, true
|
||||||
} else if m := orderedListRegexp.FindStringSubmatch(line); m != nil {
|
} else if m := orderedListRegexp.FindStringSubmatch(line); m != nil {
|
||||||
return token{"orderedList", len(m[1]), m[4], m}, true
|
return token{"orderedList", len(m[1]), m[5], m}, true
|
||||||
}
|
}
|
||||||
return nilToken, false
|
return nilToken, false
|
||||||
}
|
}
|
||||||
|
|
11
org/testdata/lists.html
vendored
11
org/testdata/lists.html
vendored
|
@ -6,6 +6,12 @@ unordered list item 1
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p>
|
<p>
|
||||||
|
list item with empty first and second line <br>
|
||||||
|
normally an empty line breaks the list item - but we make an exception for the first line and don't count it towards that limit
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
unordered list item 2 - with <code>inline</code> <em>markup</em>
|
unordered list item 2 - with <code>inline</code> <em>markup</em>
|
||||||
</p>
|
</p>
|
||||||
<ol>
|
<ol>
|
||||||
|
@ -36,6 +42,11 @@ ordered sublist item 3
|
||||||
ordered sublist item 2
|
ordered sublist item 2
|
||||||
</p>
|
</p>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<p>
|
||||||
|
list item with empty first and second line - see above
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
</li>
|
</li>
|
||||||
<li class="checked">
|
<li class="checked">
|
||||||
|
|
7
org/testdata/lists.org
vendored
7
org/testdata/lists.org
vendored
|
@ -1,10 +1,17 @@
|
||||||
- [ ] unordered list item 1
|
- [ ] unordered list item 1
|
||||||
|
-
|
||||||
|
|
||||||
|
list item with empty first and second line \\
|
||||||
|
normally an empty line breaks the list item - but we make an exception for the first line and don't count it towards that limit
|
||||||
- unordered list item 2 - with ~inline~ /markup/
|
- unordered list item 2 - with ~inline~ /markup/
|
||||||
1. [-] ordered sublist item 1
|
1. [-] ordered sublist item 1
|
||||||
a) [X] ordered sublist item 1
|
a) [X] ordered sublist item 1
|
||||||
b) [ ] ordered sublist item 2
|
b) [ ] ordered sublist item 2
|
||||||
c) [X] ordered sublist item 3
|
c) [X] ordered sublist item 3
|
||||||
2. ordered sublist item 2
|
2. ordered sublist item 2
|
||||||
|
3.
|
||||||
|
|
||||||
|
list item with empty first and second line - see above
|
||||||
- [X] unordered list item 3 - and a [[https://example.com][link]]
|
- [X] unordered list item 3 - and a [[https://example.com][link]]
|
||||||
and some lines of text
|
and some lines of text
|
||||||
1. and another subitem
|
1. and another subitem
|
||||||
|
|
7
org/testdata/lists.pretty_org
vendored
7
org/testdata/lists.pretty_org
vendored
|
@ -1,10 +1,17 @@
|
||||||
- [ ] unordered list item 1
|
- [ ] unordered list item 1
|
||||||
|
-
|
||||||
|
|
||||||
|
list item with empty first and second line \\
|
||||||
|
normally an empty line breaks the list item - but we make an exception for the first line and don't count it towards that limit
|
||||||
- unordered list item 2 - with ~inline~ /markup/
|
- unordered list item 2 - with ~inline~ /markup/
|
||||||
1. [-] ordered sublist item 1
|
1. [-] ordered sublist item 1
|
||||||
a) [X] ordered sublist item 1
|
a) [X] ordered sublist item 1
|
||||||
b) [ ] ordered sublist item 2
|
b) [ ] ordered sublist item 2
|
||||||
c) [X] ordered sublist item 3
|
c) [X] ordered sublist item 3
|
||||||
2. ordered sublist item 2
|
2. ordered sublist item 2
|
||||||
|
3.
|
||||||
|
|
||||||
|
list item with empty first and second line - see above
|
||||||
- [X] unordered list item 3 - and a [[https://example.com][link]]
|
- [X] unordered list item 3 - and a [[https://example.com][link]]
|
||||||
and some lines of text
|
and some lines of text
|
||||||
1. and another subitem
|
1. and another subitem
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue