codo
Version:
A CoffeeScript documentation generator.
26 lines (18 loc) • 836 B
text/coffeescript
Tools = require '../_tools'
module.exports = class Tools.Referencer
constructor: (@environment) ->
resolve: (text, replacer) ->
# Make curly braces within code blocks undetectable
text = text.replace /\`[^\`]*\`/mg, (match) -> match.replace(/\{/mg, "\u0091").replace(/\}/mg, "\u0092")
# Search for references and replace them
text = text.replace /\{([^\}]*)\}/gm, (match, link) =>
link = link.split(' ')
href = link.shift()
label = link.join(' ')
replacement = @environment.reference(href)
if replacement != href || /\:\/\/\w+((\:\d+)?\/\S*)?/.test(href)
replacer replacement, label || href
else
match
# Restore curly braces within code blocks
text = text.replace /\`[^\`]*\`/mg, (match) -> match.replace(/\u0091/mg, '{').replace(/\u0092/mg, '}')