diff options
Diffstat (limited to 'gemini/gemtext/parse_line.go')
-rw-r--r-- | gemini/gemtext/parse_line.go | 41 |
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} |