.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / remark-stringify / lib / visitors / link.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/remark-stringify/lib/visitors/link.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/remark-stringify/lib/visitors/link.js
new file mode 100644 (file)
index 0000000..7e43590
--- /dev/null
@@ -0,0 +1,53 @@
+'use strict';
+
+var uri = require('../util/enclose-uri');
+var title = require('../util/enclose-title');
+
+module.exports = link;
+
+/* Expression for a protocol:
+ * http://en.wikipedia.org/wiki/URI_scheme#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:
+ *
+ *     <http://example.com>
+ *
+ * Otherwise, is smart about enclosing `url` (see
+ * `encloseURI()`) and `title` (see `encloseTitle()`).
+ *
+ *    [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 || escaped === 'mailto:' + 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 += ' ' + title(self.encode(self.escape(node.title, node), node));
+  }
+
+  return '[' + value + '](' + content + ')';
+}