summaryrefslogtreecommitdiff
path: root/gemini/gemtext/parse_line.go
diff options
context:
space:
mode:
Diffstat (limited to 'gemini/gemtext/parse_line.go')
-rw-r--r--gemini/gemtext/parse_line.go41
1 files changed, 4 insertions, 37 deletions
diff --git a/gemini/gemtext/parse_line.go b/gemini/gemtext/parse_line.go
index faf457d..d2a81cc 100644
--- a/gemini/gemtext/parse_line.go
+++ b/gemini/gemtext/parse_line.go
@@ -14,10 +14,10 @@ func ParseLine(line []byte) Line {
break
}
if line[1] == '>' {
- return parseLinkLine(line)
+ return parseLinkLine(line, LineTypeLink)
}
if line[1] == ':' {
- return parsePromptLine(line)
+ return parseLinkLine(line, LineTypePrompt)
}
case '`':
if len(line) < 3 || line[1] != '`' || line[2] != '`' {
@@ -45,8 +45,8 @@ func ParseLine(line []byte) Line {
return TextLine{raw: line}
}
-func parseLinkLine(raw []byte) LinkLine {
- line := LinkLine{raw: raw}
+func parseLinkLine(raw []byte, typ LineType) LinkLine {
+ line := LinkLine{raw: raw, typ: typ}
// move past =>[<whitespace>]
raw = bytes.TrimLeft(raw[2:], " \t")
@@ -78,39 +78,6 @@ func parseLinkLine(raw []byte) LinkLine {
return line
}
-func parsePromptLine(raw []byte) PromptLine {
- line := PromptLine{raw: raw}
-
- // move past =:[<whitespace>]
- raw = bytes.TrimLeft(raw[2:], " \t")
-
- // find the next space or tab
- spIdx := bytes.IndexByte(raw, ' ')
- tbIdx := bytes.IndexByte(raw, '\t')
- idx := spIdx
- if idx == -1 {
- idx = tbIdx
- }
- if tbIdx >= 0 && tbIdx < idx {
- idx = tbIdx
- }
-
- if idx < 0 {
- line.url = bytes.TrimRight(raw, "\r\n")
- return line
- }
-
- line.url = raw[:idx]
- raw = raw[idx+1:]
-
- label := bytes.TrimRight(bytes.TrimLeft(raw, " \t"), "\r\n")
- if len(label) > 0 {
- line.label = label
- }
-
- return line
-}
-
func parsePreformatToggleLine(raw []byte) PreformatToggleLine {
line := PreformatToggleLine{raw: raw}