[tag:foo]  [a hyperlink][1]

It works if you use two spaces in between. o.o It has to do with links following the criteria `[alt_text] [link_name]` (with the space between) as well. It's likely looking at `[tag:foo] [a hyperlink]` first and saying `a hyperlink` is not a valid anchor from the list, so not rendering.

It seems that when there is a series of three bracketed pieces of text, it will always connect the first two. For example, `[tag:foo] [1] [1]` will produce:

[tag:foo] [1] [1]

It looks at `[tag:foo] [1]` and `[1]` as separate links. So in the exmaple provided, it's looking at `[tag:foo] [a hyperlink]` as the first link, which is invalid, and `[1]` as the second link.

Likely they are calling their function to parse `[tag:*]` elements *after* they are calling their function to parse anchors, when it should be called before.

  [1]: http://google.com