diff --git a/src/diagrams/common/common.js b/src/diagrams/common/common.js index cc91948fc..975bd6176 100644 --- a/src/diagrams/common/common.js +++ b/src/diagrams/common/common.js @@ -25,8 +25,10 @@ export const sanitizeText = (text, config) => { return txt; }; +export const lineBreakRegex = //gi; + const breakToPlaceholder = s => { - return s.replace(//gi, '#br#'); + return s.replace(lineBreakRegex, '#br#'); }; const placeholderToBreak = s => { @@ -35,5 +37,6 @@ const placeholderToBreak = s => { export default { getRows, - sanitizeText + sanitizeText, + lineBreakRegex }; diff --git a/src/diagrams/flowchart/flowRenderer-v2.js b/src/diagrams/flowchart/flowRenderer-v2.js index 5e4b2ef87..e382e0174 100644 --- a/src/diagrams/flowchart/flowRenderer-v2.js +++ b/src/diagrams/flowchart/flowRenderer-v2.js @@ -8,6 +8,7 @@ import { getConfig } from '../../config'; import { render } from '../../dagre-wrapper/index.js'; import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js'; import { logger } from '../../logger'; +import common from '../common/common'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; const conf = {}; @@ -61,7 +62,7 @@ export const addVertices = function(vert, g, svgId) { const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:')); - const rows = vertexText.split(//gi); + const rows = vertexText.split(common.lineBreakRegex); for (let j = 0; j < rows.length; j++) { const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan'); @@ -243,7 +244,7 @@ export const addEdges = function(edges, g) { edgeData.label = '' + edge.text + ''; } else { edgeData.labelType = 'text'; - edgeData.label = edge.text.replace(//gi, '\n'); + edgeData.label = edge.text.replace(common.lineBreakRegex, '\n'); if (typeof edge.style === 'undefined') { edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none'; diff --git a/src/diagrams/flowchart/flowRenderer.js b/src/diagrams/flowchart/flowRenderer.js index 6f86d638d..bbb8af944 100644 --- a/src/diagrams/flowchart/flowRenderer.js +++ b/src/diagrams/flowchart/flowRenderer.js @@ -8,6 +8,7 @@ import { getConfig } from '../../config'; import dagreD3 from 'dagre-d3'; import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js'; import { logger } from '../../logger'; +import common from '../common/common'; import { interpolateToCurve, getStylesFromArray } from '../../utils'; import flowChartShapes from './flowChartShapes'; @@ -62,7 +63,7 @@ export const addVertices = function(vert, g, svgId) { const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:')); - const rows = vertexText.split(//gi); + const rows = vertexText.split(common.lineBreakRegex); for (let j = 0; j < rows.length; j++) { const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan'); @@ -225,7 +226,7 @@ export const addEdges = function(edges, g) { edgeData.label = '' + edge.text + ''; } else { edgeData.labelType = 'text'; - edgeData.label = edge.text.replace(//gi, '\n'); + edgeData.label = edge.text.replace(common.lineBreakRegex, '\n'); if (typeof edge.style === 'undefined') { edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none'; diff --git a/src/diagrams/gantt/ganttRenderer.js b/src/diagrams/gantt/ganttRenderer.js index 825b7dce8..b12fd5b5e 100644 --- a/src/diagrams/gantt/ganttRenderer.js +++ b/src/diagrams/gantt/ganttRenderer.js @@ -1,6 +1,7 @@ import * as d3 from 'd3'; import { parser } from './parser/gantt'; +import common from '../common/common'; import ganttDb from './ganttDb'; parser.yy = ganttDb; @@ -358,7 +359,7 @@ export const draw = function(text, id) { .data(numOccurances) .enter() .append(function(d) { - const rows = d[0].split(//gi); + const rows = d[0].split(common.lineBreakRegex); const dy = -(rows.length - 1) / 2; const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text'); diff --git a/src/diagrams/sequence/sequenceRenderer.js b/src/diagrams/sequence/sequenceRenderer.js index c297a6526..523e396dc 100644 --- a/src/diagrams/sequence/sequenceRenderer.js +++ b/src/diagrams/sequence/sequenceRenderer.js @@ -3,6 +3,7 @@ import * as d3 from 'd3'; import svgDraw from './svgDraw'; import { logger } from '../../logger'; import { parser } from './parser/sequenceDiagram'; +import common from '../common/common'; import sequenceDb from './sequenceDb'; parser.yy = sequenceDb; @@ -170,7 +171,7 @@ export const bounds = { const _drawLongText = (text, x, y, g, width) => { let textHeight = 0; - const lines = text.split(//gi); + const lines = text.split(common.lineBreakRegex); for (const line of lines) { const textObj = svgDraw.getTextObj(); textObj.x = x; @@ -235,7 +236,7 @@ const drawMessage = function(elem, startx, stopx, verticalPos, msg, sequenceInde let textElems = []; let counterBreaklines = 0; let breaklineOffset = 17; - const breaklines = msg.message.split(//gi); + const breaklines = msg.message.split(common.lineBreakRegex); for (const breakline of breaklines) { textElems.push( g diff --git a/src/diagrams/sequence/svgDraw.js b/src/diagrams/sequence/svgDraw.js index d8047e403..edcdd160a 100644 --- a/src/diagrams/sequence/svgDraw.js +++ b/src/diagrams/sequence/svgDraw.js @@ -1,3 +1,5 @@ +import common from '../common/common'; + export const drawRect = function(elem, rectData) { const rectElem = elem.append('rect'); rectElem.attr('x', rectData.x); @@ -18,7 +20,7 @@ export const drawRect = function(elem, rectData) { export const drawText = function(elem, textData) { // Remove and ignore br:s - const nText = textData.text.replace(//gi, ' '); + const nText = textData.text.replace(common.lineBreakRegex, ' '); const textElem = elem.append('text'); textElem.attr('x', textData.x); @@ -321,7 +323,7 @@ const _drawTextCandidateFunc = (function() { function byTspan(content, g, x, y, width, height, textAttrs, conf) { const { actorFontSize, actorFontFamily } = conf; - const lines = content.split(//gi); + const lines = content.split(common.lineBreakRegex); for (let i = 0; i < lines.length; i++) { const dy = i * actorFontSize - (actorFontSize * (lines.length - 1)) / 2; const text = g diff --git a/src/diagrams/state/shapes.js b/src/diagrams/state/shapes.js index a436e23b3..8de5a03d9 100644 --- a/src/diagrams/state/shapes.js +++ b/src/diagrams/state/shapes.js @@ -282,7 +282,7 @@ const drawForkJoinState = (g, stateDef) => { export const drawText = function(elem, textData) { // Remove and ignore br:s - const nText = textData.text.replace(//gi, ' '); + const nText = textData.text.replace(common.lineBreakRegex, ' '); const textElem = elem.append('text'); textElem.attr('x', textData.x); @@ -310,7 +310,7 @@ const _drawLongText = (_text, x, y, g) => { let text = _text.replace(/\r\n/g, '
'); text = text.replace(/\n/g, '
'); - const lines = text.split(//gi); + const lines = text.split(common.lineBreakRegex); let tHeight = 1.25 * getConfig().state.noteMargin; for (const line of lines) {