code_gen: Adding contracts phase
[nit.git] / lib / markdown / wikilinks.nit
index e341194..ea174c2 100644 (file)
@@ -32,7 +32,7 @@ redef class MarkdownProcessor
                if not token isa TokenLink then return token
                if pos + 1 < text.length then
                        var c = text[pos + 1]
-                       if c == '[' then return new TokenWikiLink(pos, c)
+                       if c == '[' then return new TokenWikiLink(token.location, pos, c)
                end
                return token
        end
@@ -41,11 +41,11 @@ end
 redef class Decorator
 
        # Renders a `[[wikilink]]` item.
-       fun add_wikilink(v: MarkdownEmitter, link: Text, name, comment: nullable Text) do
-               if name != null then
-                       v.add "[[{name}|{link}]]"
+       fun add_wikilink(v: PROCESSOR, token: TokenWikiLink) do
+               if token.name != null then
+                       v.add "[[{token.name.as(not null).to_s}|{token.link.as(not null).to_s}]]"
                else
-                       v.add "[[{link}]]"
+                       v.add "[[{token.link.as(not null).to_s}]]"
                end
        end
 end
@@ -67,11 +67,12 @@ class TokenWikiLink
        super TokenLink
 
        redef fun emit_hyper(v) do
-               v.decorator.add_wikilink(v, link.as(not null), name, comment)
+               v.decorator.add_wikilink(v, self)
        end
 
        redef fun check_link(v, out, start, token) do
                var md = v.current_text
+               if md == null then return -1
                var pos = start + 2
                var tmp = new FlatBuffer
                pos = md.read_md_link_id(tmp, pos)
@@ -88,7 +89,6 @@ class TokenWikiLink
                pos += 1
                pos = md.skip_spaces(pos)
                if pos < start then return -1
-               pos += 1
                return pos
        end
 end