12345678910111213141516171819202122232425262728293031323334 |
- /**
- * @typedef {import('mdast').Link} Link
- * @typedef {import('../types.js').State} State
- */
- import {toString} from 'mdast-util-to-string'
- /**
- * @param {Link} node
- * @param {State} state
- * @returns {boolean}
- */
- export function formatLinkAsAutolink(node, state) {
- const raw = toString(node)
- return Boolean(
- !state.options.resourceLink &&
- // If there’s a url…
- node.url &&
- // And there’s a no title…
- !node.title &&
- // And the content of `node` is a single text node…
- node.children &&
- node.children.length === 1 &&
- node.children[0].type === 'text' &&
- // And if the url is the same as the content…
- (raw === node.url || 'mailto:' + raw === node.url) &&
- // And that starts w/ a protocol…
- /^[a-z][a-z+.-]+:/i.test(node.url) &&
- // And that doesn’t contain ASCII control codes (character escapes and
- // references don’t work), space, or angle brackets…
- !/[\0- <>\u007F]/.test(node.url)
- )
- }
|