highlight: support highlighting lines in the default writer
The hl_lines key is specifically the same as Hugo's key.
This commit is contained in:
parent
9b56fc914c
commit
ab8d3bc16a
6 changed files with 97 additions and 2 deletions
51
org/util.go
51
org/util.go
|
@ -1,5 +1,10 @@
|
|||
package org
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func isSecondBlankLine(d *Document, i int) bool {
|
||||
if i-1 <= 0 {
|
||||
return false
|
||||
|
@ -17,3 +22,49 @@ func isImageOrVideoLink(n Node) bool {
|
|||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Parse ranges like this:
|
||||
// "3-5" -> [[3, 5]]
|
||||
// "3 8-10" -> [[3, 3], [8, 10]]
|
||||
// "3 5 6" -> [[3, 3], [5, 5], [6, 6]]
|
||||
//
|
||||
// This is Hugo's hlLinesToRanges with "startLine" removed and errors
|
||||
// ignored.
|
||||
func ParseRanges(s string) [][2]int {
|
||||
var ranges [][2]int
|
||||
s = strings.TrimSpace(s)
|
||||
if s == "" {
|
||||
return ranges
|
||||
}
|
||||
fields := strings.Split(s, " ")
|
||||
for _, field := range fields {
|
||||
field = strings.TrimSpace(field)
|
||||
if field == "" {
|
||||
continue
|
||||
}
|
||||
numbers := strings.Split(field, "-")
|
||||
var r [2]int
|
||||
if len(numbers) > 1 {
|
||||
first, err := strconv.Atoi(numbers[0])
|
||||
if err != nil {
|
||||
return ranges
|
||||
}
|
||||
second, err := strconv.Atoi(numbers[1])
|
||||
if err != nil {
|
||||
return ranges
|
||||
}
|
||||
r[0] = first
|
||||
r[1] = second
|
||||
} else {
|
||||
first, err := strconv.Atoi(numbers[0])
|
||||
if err != nil {
|
||||
return ranges
|
||||
}
|
||||
r[0] = first
|
||||
r[1] = first
|
||||
}
|
||||
|
||||
ranges = append(ranges, r)
|
||||
}
|
||||
return ranges
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue