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