@atlaskit/editor-wikimarkup-transformer
Version:
Wiki markup transformer for JIRA and Confluence
55 lines (53 loc) • 1.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.linkFormat = void 0;
var _ = require("../");
var _text = require("../../text");
var _linkResolver = require("./link-resolver");
var _linkParser = require("./link-parser");
// [http://www.example.com] and [Example|http://www.example.com]
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var LINK_FORMAT_REGEXP = /^\[([^\[\]\n]+)]/;
var linkFormat = exports.linkFormat = function linkFormat(_ref) {
var input = _ref.input,
position = _ref.position,
schema = _ref.schema,
context = _ref.context;
var match = input.substring(position).match(LINK_FORMAT_REGEXP);
/**
* The following token types will be ignored in parsing
* the content of a table cell
*/
var ignoreTokenTypes = [_.TokenType.DOUBLE_DASH_SYMBOL, _.TokenType.TRIPLE_DASH_SYMBOL, _.TokenType.QUADRUPLE_DASH_SYMBOL, _.TokenType.TABLE, _.TokenType.RULER,
// We want to avoid recursion
_.TokenType.LINK_TEXT, _.TokenType.LINK_FORMAT];
if (!match) {
return fallback();
}
var content = (0, _linkParser.parseContentLink)(match[1]);
var resolvedLink = (0, _linkResolver.resolveLink)(content, schema, context);
if (resolvedLink) {
return resolvedLink;
}
var nodes = (0, _text.parseString)({
schema: schema,
context: context,
ignoreTokenTypes: ignoreTokenTypes,
input: match[0]
});
return {
type: 'pmnode',
nodes: nodes,
length: match[0].length
};
};
function fallback() {
return {
type: 'text',
text: '[',
length: 1
};
}