UNPKG

@atlaskit/editor-wikimarkup-transformer

Version:

Wiki markup transformer for JIRA and Confluence

48 lines 1.83 kB
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import { TokenType } from './'; import { hasAnyOfMarks, getSurroundingSymbols } from '../utils/text'; import { commonFormatter } from './common-formatter'; import { parseString } from '../text'; export var strong = function strong(_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, TokenType.ISSUE_KEY, TokenType.TABLE]; // Adding strong mark to all text var contentDecorator = function contentDecorator(pmNode) { var mark = schema.marks.strong.create(); // We don't want to mix `code` mark with others if (pmNode.type.name === 'text' && !hasAnyOfMarks(pmNode, ['strong', 'code'])) { return pmNode.mark([].concat(_toConsumableArray(pmNode.marks), [mark])); } return pmNode; }; var rawContentProcessor = function rawContentProcessor(raw, length) { var content = parseString({ schema: schema, context: context, ignoreTokenTypes: ignoreTokenTypes, input: raw }); var decoratedContent = content.map(contentDecorator); return { type: 'pmnode', nodes: decoratedContent, length: length }; }; var _getSurroundingSymbol = getSurroundingSymbols(input.substring(position), '*', '*'), openingSymbol = _getSurroundingSymbol.openingSymbol, closingSymbol = _getSurroundingSymbol.closingSymbol; return commonFormatter(input, position, schema, { opening: openingSymbol, closing: closingSymbol, context: context, rawContentProcessor: rawContentProcessor }); };