Skip to content

Commit ee4baf4

Browse files
committed
Image - add support for title attr
Signed-off-by: George Lemon <georgelemon@protonmail.com>
1 parent 6391c15 commit ee4baf4

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

src/marvdown/lexer.nim

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,32 @@ proc nextToken*(lex: var MarkdownLexer): MarkdownTokenTuple =
239239
if lex.current == '(':
240240
lex.advance()
241241
lex.strbuf.setLen(0)
242+
var src = ""
243+
var title = ""
244+
var inTitle = false
242245
while lex.current != ')' and lex.current != '\0':
243-
lex.strbuf.add(lex.current)
246+
if lex.current == '"' and not inTitle:
247+
inTitle = true
248+
lex.advance()
249+
continue
250+
if inTitle:
251+
if lex.current == '"':
252+
inTitle = false
253+
lex.advance()
254+
continue
255+
title.add(lex.current)
256+
else:
257+
if lex.current == ' ':
258+
lex.advance()
259+
continue
260+
src.add(lex.current)
244261
lex.advance()
245-
let src = lex.strbuf
246262
if lex.current == ')':
247263
lex.advance()
248-
return newTokenTuple(lex, mtkImage, wsno=wsno, attrs=some(@[alt, src]))
264+
if title.len > 0:
265+
return newTokenTuple(lex, mtkImage, wsno=wsno, attrs=some(@[alt, src, title]))
266+
else:
267+
return newTokenTuple(lex, mtkImage, wsno=wsno, attrs=some(@[alt, src]))
249268
else:
250269
var text = "!"
251270
lex.advance()

src/marvdown/parser.nim

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,10 @@ proc parseInline(md: var Markdown, text: string): seq[MarkdownNode] =
264264
if curr.attrs.isSome and curr.attrs.get().len >= 2:
265265
let alt = curr.attrs.get()[0]
266266
let src = curr.attrs.get()[1]
267-
let title = if curr.attrs.get().len > 2: curr.attrs.get()[2] else: ""
267+
let title =
268+
if curr.attrs.get().len > 2:
269+
curr.attrs.get()[2]
270+
else: ""
268271
node = MarkdownNode(
269272
kind: mdkImage,
270273
imageAlt: alt,

0 commit comments

Comments
 (0)