const Entities = require('html-entities').AllHtmlEntities; const htmlentities = (new Entities()).encode; const Resource = require('lib/models/Resource.js'); const utils = require('../utils'); const loaderImage = ''; function installRule(markdownIt, mdOptions, ruleOptions) { markdownIt.renderer.rules.link_open = function (tokens, idx, options, env, self) { const token = tokens[idx]; let href = utils.getAttr(token.attrs, 'href'); const text = utils.getAttr(token.attrs, 'text'); const isResourceUrl = Resource.isResourceUrl(href); const title = isResourceUrl ? utils.getAttr(token.attrs, 'title') : href; console.info(href, isResourceUrl); let resourceIdAttr = ""; let icon = ""; let hrefAttr = '#'; if (isResourceUrl) { const resourceId = Resource.pathToId(href); href = "joplin://" + resourceId; resourceIdAttr = "data-resource-id='" + resourceId + "'"; icon = ''; } else { // If the link is a plain URL (as opposed to a resource link), set the href to the actual // link. This allows the link to be exported too when exporting to PDF. hrefAttr = href; } let js = ruleOptions.postMessageSyntax + "(" + JSON.stringify(href) + "); return false;"; if (hrefAttr.indexOf('#') === 0 && href.indexOf('#') === 0) js = ''; // If it's an internal anchor, don't add any JS since the webview is going to handle navigating to the right place if (js) hrefAttr = '#'; return "" + icon; }; } module.exports = function(context, ruleOptions) { return function(md, mdOptions) { installRule(md, mdOptions, ruleOptions); }; };