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

Reply via email to