const md = require('markdown-it')();
md.core.ruler.push('buggy_levels', (state) => {
const blockTokens = state.tokens;
for (let j = 0, l = blockTokens.length; j < l; j++) {
if (
!(blockTokens[j].type === 'inline' && blockTokens[j].content.includes('@'))
) {
continue;
}
const tokens = blockTokens[j].children;
console.log('LOOK AT LEVELS:', tokens.map((t) => [t.type, t.level]));
for (let i = tokens.length - 1; i >= 0; --i) {
if (tokens[i].type !== 'link_close') {
continue;
}
const linkCloseToken = tokens[i];
const linkCloseIndex = i;
do {
--i;
} while (!(tokens[i].level === linkCloseToken.level && tokens[i].type === 'link_open'));
if (!tokens[i].attrGet('href').startsWith('mailto:')) {
continue;
}
console.log('NO BUG ANYMORE!');
}
}
});
const input = '[AA homer.j.simpson@example.com BB](mailto:homer.j.simpson@example.com)';
console.log(md.render(input));