Sha256: 196691125cdcf67093859eb3823aef51ff210ad2a2cc00e3b6e6398a274ee1c3
Contents?: true
Size: 1.54 KB
Versions: 23
Compression:
Stored size: 1.54 KB
Contents
'use strict' var uri = require('../util/enclose-uri') var title = require('../util/enclose-title') module.exports = link var space = ' ' var leftSquareBracket = '[' var rightSquareBracket = ']' var leftParenthesis = '(' var rightParenthesis = ')' // Expression for a protocol: // See <https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Generic_syntax>. var protocol = /^[a-z][a-z+.-]+:\/?/i // Stringify a link. // // When no title exists, the compiled `children` equal `url`, and `url` starts // with a protocol, an auto link is created: // // ```markdown // <http://example.com> // ``` // // Otherwise, is smart about enclosing `url` (see `encloseURI()`) and `title` // (see `encloseTitle()`). // ``` // // ```markdown // [foo](<foo at bar dot com> 'An "example" e-mail') // ``` // // Supports named entities in the `url` and `title` when in `settings.encode` // mode. function link(node) { var self = this var content = self.encode(node.url || '', node) var exit = self.enterLink() var escaped = self.encode(self.escape(node.url || '', node)) var value = self.all(node).join('') exit() if (node.title == null && protocol.test(content) && escaped === value) { // Backslash escapes do not work in autolinks, so we do not escape. return uri(self.encode(node.url), true) } content = uri(content) if (node.title) { content += space + title(self.encode(self.escape(node.title, node), node)) } return ( leftSquareBracket + value + rightSquareBracket + leftParenthesis + content + rightParenthesis ) }
Version data entries
23 entries across 23 versions & 1 rubygems