jenkins-bot has submitted this change and it was merged.

Change subject: Set srcOffsets for table_attribute and generic_newline_attribute
......................................................................


Set srcOffsets for table_attribute and generic_newline_attribute

 * Needed to set srcOffsets when processing attribute values in a
   pipeline.

Change-Id: Iee8d638439d91145bf1131824f6cbcb71c49a7e6
---
M lib/wt2html/pegTokenizer.pegjs.txt
M lib/wt2html/tokenizer.utils.js
2 files changed, 18 insertions(+), 25 deletions(-)

Approvals:
  Arlolra: Looks good to me, approved
  Subramanya Sastry: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/wt2html/pegTokenizer.pegjs.txt 
b/lib/wt2html/pegTokenizer.pegjs.txt
index 434d7cd..b8dbdba 100644
--- a/lib/wt2html/pegTokenizer.pegjs.txt
+++ b/lib/wt2html/pegTokenizer.pegjs.txt
@@ -1215,17 +1215,17 @@
     namePos0:("" { return endOffset(); })
     name:generic_attribute_name
     namePos:("" { return endOffset(); })
-    valueData:(space_or_newline* "=" v:generic_att_value? { return v; })?
+    vd:(space_or_newline* "=" v:generic_att_value? { return v; })?
 {
+    // NB: Keep in sync w/ table_attibute
     var res;
     // Encapsulate protected attributes.
     if (typeof name === 'string') {
         name = tu.protectAttrs(name);
     }
-    if (valueData !== null) {
-        var value = valueData.value;
-        res = new KV(name, value);
-        res.vsrc = valueData.valueSrc;
+    if (vd !== null) {
+        res = new KV(name, vd.value, [namePos0, namePos, vd.srcOffsets[0], 
vd.srcOffsets[1]]);
+        res.vsrc = input.substring(vd.srcOffsets[0], vd.srcOffsets[1]);
     } else {
         res = new KV(name, '');
     }
@@ -1241,17 +1241,17 @@
     namePos0:("" { return endOffset(); })
     name:table_attribute_name
     namePos:("" { return endOffset(); })
-    valueData:(optionalSpaceToken "=" v:table_att_value? { return v; })?
+    vd:(optionalSpaceToken "=" v:table_att_value? { return v; })?
 {
+    // NB: Keep in sync w/ generic_newline_attribute
     var res;
     // Encapsulate protected attributes.
     if (typeof name === 'string') {
         name = tu.protectAttrs(name);
     }
-    if (valueData !== null) {
-        var value = valueData.value;
-        res = new KV(name, value);
-        res.vsrc = valueData.valueSrc;
+    if (vd !== null) {
+        res = new KV(name, vd.value, [namePos0, namePos, vd.srcOffsets[0], 
vd.srcOffsets[1]]);
+        res.vsrc = input.substring(vd.srcOffsets[0], vd.srcOffsets[1]);
     } else {
         res = new KV(name, '');
     }
@@ -1306,13 +1306,13 @@
 // These need to be kept in sync with the attribute_preprocessor_text_*
 generic_att_value
   = s:$(space_or_newline* "'") t:attribute_preprocessor_text_single? q:$("'" / 
&('/'? '>')) {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset() - q.length);
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset() - 
q.length);
     }
   / s:$(space_or_newline* '"') t:attribute_preprocessor_text_double? q:$('"' / 
&('/'? '>')) {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset() - q.length);
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset() - 
q.length);
     }
   / s:$space_or_newline* t:attribute_preprocessor_text &(space_or_newline / 
eof / '/'? '>') {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset());
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset());
     }
 
 // Attribute value, restricted to a single line.
@@ -1320,13 +1320,13 @@
 // These need to be kept in sync with the table_attribute_preprocessor_text_*
 table_att_value
   = s:$(space* "'") t:table_attribute_preprocessor_text_single? q:$("'" / 
&('!!' / [|\r\n])) {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset() - q.length);
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset() - 
q.length);
     }
   / s:$(space* '"') t:table_attribute_preprocessor_text_double? q:$('"' / 
&('!!' / [|\r\n])) {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset() - q.length);
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset() - 
q.length);
     }
   / s:$space* t:table_attribute_preprocessor_text &(space_or_newline/ eof / 
'!!' / '|') {
-      return tu.getAttributeValueAndSource(input, t, startOffset() + s.length, 
endOffset());
+      return tu.getAttrVal(t, startOffset() + s.length, endOffset());
     }
 
 /*
diff --git a/lib/wt2html/tokenizer.utils.js b/lib/wt2html/tokenizer.utils.js
index 590cd71..9bbd1bb 100644
--- a/lib/wt2html/tokenizer.utils.js
+++ b/lib/wt2html/tokenizer.utils.js
@@ -87,15 +87,8 @@
                });
        },
 
-       /**
-       * Get an attribute value and source, given a start and end position.    
Returned object will have a 'value' property
-       * holding the value (first argument) and a 'valueSrc' property holding 
the raw value source
-       */
-       getAttributeValueAndSource: function(input, attrVal, attrValPosStart, 
attrValPosEnd) {
-               return {
-                       value: attrVal,
-                       valueSrc: input.substring(attrValPosStart, 
attrValPosEnd),
-               };
+       getAttrVal: function(value, start, end) {
+               return { value: value, srcOffsets: [start, end] };
        },
 
        buildTableTokens: function(tagName, wtChar, attrInfo, tsr, endPos, 
content, addEndTag) {

-- 
To view, visit https://gerrit.wikimedia.org/r/310442
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iee8d638439d91145bf1131824f6cbcb71c49a7e6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: C. Scott Ananian <canan...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to