Skip to content

Commit 8db5bd9

Browse files
michituxgithub-actions[bot]
authored andcommitted
XRENDERING-798: Line breaks followed by empty format at the end of block elements should be escaped (#356)
* Check for empty format to decide what syntax to use for new lines. * Extend integration test to cover this case. (cherry picked from commit c14adcb)
1 parent 8d17b92 commit 8db5bd9

File tree

2 files changed

+39
-5
lines changed
  • xwiki-rendering-integration-tests/src/test/resources/simple/misc
  • xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20

2 files changed

+39
-5
lines changed

xwiki-rendering-integration-tests/src/test/resources/simple/misc/misc7.test

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ paragraph1\\
2424
paragraph2
2525

2626
[[Caption\\>>image:img.png]]
27+
28+
(% border="1" %)
29+
|var|(%%)(% style="color: #0000ff;" %)asdf\\
30+
|bar|function
2731
.#-----------------------------------------------------
2832
.expect|event/1.0
2933
.#-----------------------------------------------------
@@ -105,5 +109,26 @@ onNewLine
105109
endParagraph
106110
endFigureCaption
107111
endFigure [[class]=[image]]
112+
beginTable [[border]=[1]]
113+
beginTableRow
114+
beginTableCell
115+
onWord [var]
116+
endTableCell
117+
beginTableCell
118+
beginFormat [NONE] [[style]=[color: #0000ff;]]
119+
onWord [asdf]
120+
onNewLine
121+
endFormat [NONE] [[style]=[color: #0000ff;]]
122+
endTableCell
123+
endTableRow
124+
beginTableRow
125+
beginTableCell
126+
onWord [bar]
127+
endTableCell
128+
beginTableCell
129+
onWord [function]
130+
endTableCell
131+
endTableRow
132+
endTable [[border]=[1]]
108133
endSection
109134
endDocument

xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20/XWikiSyntaxChainingRenderer.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -355,12 +355,21 @@ public void onNewLine()
355355
if (getBlockState().isInLine()) {
356356
if (getXWikiSyntaxListenerChain().getConsecutiveNewLineStateChainingListener().getNewLineCount() > 1) {
357357
print("\\\\");
358-
} else if (getXWikiSyntaxListenerChain().getLookaheadChainingListener().getNextEvent().eventType
359-
.isInlineEnd())
360-
{
361-
print("\\\\");
362358
} else {
363-
print("\n");
359+
LookaheadChainingListener lookaheadListener =
360+
getXWikiSyntaxListenerChain().getLookaheadChainingListener();
361+
QueueListener.Event nextEvent = lookaheadListener.getNextEvent();
362+
if (nextEvent.eventType.isInlineEnd()
363+
// Format end events don't print anything for the none format at the end of inline elements as
364+
// the format is automatically reset. So consider that we're already at the end of an inline
365+
// element in that case.
366+
|| (nextEvent.eventType == EventType.END_FORMAT && nextEvent.eventParameters[0] == Format.NONE
367+
&& lookaheadListener.getNextEvent(2).eventType.isInlineEnd()))
368+
{
369+
print("\\\\");
370+
} else {
371+
print("\n");
372+
}
364373
}
365374
} else {
366375
print("\n");

0 commit comments

Comments
 (0)