jenkins-bot has submitted this change and it was merged.
Change subject: Remove wts buffering and move bullet emitting where it belongs
......................................................................
Remove wts buffering and move bullet emitting where it belongs
Change-Id: I9cf2a8d4127a831be6a0eb96135a472a19d0c7a7
---
M lib/html2wt/DOMHandlers.js
M lib/html2wt/SerializerState.js
2 files changed, 15 insertions(+), 32 deletions(-)
Approvals:
Subramanya Sastry: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/html2wt/DOMHandlers.js b/lib/html2wt/DOMHandlers.js
index b52b135..14597ba 100644
--- a/lib/html2wt/DOMHandlers.js
+++ b/lib/html2wt/DOMHandlers.js
@@ -256,13 +256,13 @@
var dp = DU.getDataParsoid(node);
return dp && dp.autoInsertedStart && dp.autoInsertedEnd;
}
-
return {
forceSOL: true,
handle: Promise.method(function(node, state, wrapperUnmodified)
{
// Disable single-line context here so that separators
aren't
// suppressed between nested list elements.
state.singleLineContext.disable();
+
var firstChildElt = DU.firstNonSepChildNode(node);
// Skip builder-inserted wrappers
@@ -274,8 +274,6 @@
if (!firstChildElt || !(firstChildElt.nodeName in
firstChildNames)) {
state.emitChunk(getListBullets(state, node),
node);
- } else if (isTplListWithoutSharedPrefix(firstChildElt))
{
- state.bufferChunk(getListBullets(state, node));
}
var liHandler = state.serializer.wteHandlers.liHandler
@@ -319,8 +317,6 @@
var chunk = (stx === 'row') ? ':' :
getListBullets(state, node);
if (!DU.isList(firstChildElement)) {
state.emitChunk(chunk, node);
- } else if
(isTplListWithoutSharedPrefix(firstChildElement)) {
- state.bufferChunk(chunk);
}
var liHandler = state.serializer.wteHandlers.liHandler
.bind(state.serializer.wteHandlers,
node);
@@ -550,8 +546,6 @@
var firstChildElement = DU.firstNonSepChildNode(node);
if (!DU.isList(firstChildElement)) {
state.emitChunk(getListBullets(state, node),
node);
- } else if
(isTplListWithoutSharedPrefix(firstChildElement)) {
- state.bufferChunk(getListBullets(state, node));
}
var liHandler = state.serializer.wteHandlers.liHandler
.bind(state.serializer.wteHandlers,
node);
@@ -586,8 +580,6 @@
var firstChildElement = DU.firstNonSepChildNode(node);
if (!DU.isList(firstChildElement)) {
state.emitChunk(getListBullets(state, node),
node);
- } else if
(isTplListWithoutSharedPrefix(firstChildElement)) {
- state.bufferChunk(getListBullets(state, node));
}
var liHandler = state.serializer.wteHandlers.liHandler
.bind(state.serializer.wteHandlers,
node);
@@ -1295,6 +1287,19 @@
},
});
+function handleListPrefix(node, state) {
+ var bullets = '';
+ if (DU.isListOrListItem(node) && !DU.previousNonSepSibling(node) &&
+ isTplListWithoutSharedPrefix(node) &&
+ // Nothing to do for definition list rows,
+ // since we're emitting for the parent node.
+ !(node.nodeName === 'DD' &&
+ DU.getDataParsoid(node).stx === 'row')) {
+ bullets = getListBullets(state, node.parentNode);
+ }
+ return bullets;
+}
+
/**
* Function returning `domHandler`s for nodes with encapsulated content.
*/
@@ -1369,10 +1374,9 @@
} else {
throw new Error("Should never reach
here");
}
-
return p.then(function(s) {
state.singleLineContext.disable();
- self.emitWikitext(s, node);
+
self.emitWikitext(handleListPrefix(node, state) + s, node);
state.singleLineContext.pop();
return
DU.skipOverEncapsulatedContent(node);
});
diff --git a/lib/html2wt/SerializerState.js b/lib/html2wt/SerializerState.js
index 9aecb91..7a12a67 100644
--- a/lib/html2wt/SerializerState.js
+++ b/lib/html2wt/SerializerState.js
@@ -77,18 +77,6 @@
*
* singleLineContext
* Stack used to enforce single-line context
- *
- * buffer
- * Buffered wikitext for scenarios where a single separator applies
- * to multiple nodes and we don't want to emit the separator prematurely.
- *
- * Ex: In list handlers, for nested lists, we implicitly buffer bullets by
- * not emitting anything for parent lists. But, that implicit buffering
- * is insufficient by itself for scenarios where templates are involved.
- *
- * TODO: For followup patches, to make all buffering explicit instead of
- * the implicit buffering currently in place in list and list item
- * handlers.
* ********************************************************************* */
var initialState = {
@@ -107,7 +95,6 @@
wteHandlerStack: [],
// XXX: replace with output buffering per line
currLine: null,
- buffer: '',
out: '',
logPrefix: 'OUT:',
};
@@ -286,16 +273,8 @@
function() { return JSON.stringify(sep); });
};
-// Buffer this chunk so that it can be emitted with the next emitChunk
-// along with any necessary separators before it.
-SSP.bufferChunk = function(res) {
- this.buffer += res;
-};
-
SSP.emitChunk = function(res, node) {
res = ConstrainedText.cast(res, node);
- res.text = this.buffer + res.text;
- this.buffer = '';
// Replace newlines if we're in a single-line context
if (this.singleLineContext.enforced()) {
--
To view, visit https://gerrit.wikimedia.org/r/257688
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I9cf2a8d4127a831be6a0eb96135a472a19d0c7a7
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Arlolra <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits