@atlaskit/editor-wikimarkup-transformer
Version:
Wiki markup transformer for JIRA and Confluence
55 lines • 1.4 kB
JavaScript
import { parseString } from '../text';
import { TokenType } from './';
// h1. HEADING
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var HEADING_REGEXP = /^h([1-6])\.(.*)/;
export var 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 = 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
};
}