@atlaskit/editor-wikimarkup-transformer
Version:
Wiki markup transformer for JIRA and Confluence
61 lines (60 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.heading = void 0;
var _text = require("../text");
var _ = require("./");
// h1. HEADING
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var HEADING_REGEXP = /^h([1-6])\.(.*)/;
var heading = exports.heading = function heading(_ref) {
var input = _ref.input,
position = _ref.position,
schema = _ref.schema,
context = _ref.context;
/**
* The following token types will be ignored in parsing
* the content of a strong mark
*/
var ignoreTokenTypes = [_.TokenType.DOUBLE_DASH_SYMBOL, _.TokenType.TRIPLE_DASH_SYMBOL, _.TokenType.QUADRUPLE_DASH_SYMBOL];
var match = input.substring(position).match(HEADING_REGEXP);
if (!match) {
return fallback(input, position);
}
var level = parseInt(match[1], 10);
var content = (0, _text.parseString)({
schema: schema,
ignoreTokenTypes: ignoreTokenTypes,
context: context,
input: match[2]
});
try {
var headingNode = schema.nodes.heading.createChecked({
level: level
}, content);
return {
type: 'pmnode',
nodes: [headingNode],
length: match[0].length
};
} catch (err) {
/**
* If the heading fails to rendering, we want to skip the text
* "h1."
*/
return {
type: 'text',
text: '',
length: 4
};
}
};
function fallback(input, position) {
return {
type: 'text',
text: input.substr(position, 1),
length: 1
};
}