74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
package org
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func isSecondBlankLine(d *Document, i int) bool {
|
|
if i-1 <= 0 {
|
|
return false
|
|
}
|
|
t1, t2 := d.tokens[i-1], d.tokens[i]
|
|
if t1.kind == "text" && t2.kind == "text" && t1.content == "" && t2.content == "" {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isImageOrVideoLink(n Node) bool {
|
|
if l, ok := n.(RegularLink); ok && l.Kind() == "video" || l.Kind() == "image" {
|
|
return true
|
|
}
|
|
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
|
|
}
|
|
|
|
func IsNewLineChar(r rune) bool {
|
|
return r == '\n' || r == '\r'
|
|
}
|