Cenarium has uploaded a new change for review.
https://gerrit.wikimedia.org/r/279894
Change subject: Handle nested references
......................................................................
Handle nested references
This handles nested references and other tags within {{#tag:ref}}
constructs that give rise to strip markers using the parser
functions serializeHalfParsedText/unserializeHalfParsedText.
These functions only handle strip states at one recursivity level,
so Ibacae55eb99233d89d5c68261e3259cb2b723451 is needed to cover
the majority of use cases.
Indidentally, this gives the correct meaning to the 'count' param
and removes the uneeded 'number' param.
Bug: T127787
Depends-On: Iba9bcf11d7d7ff0f0af542214efe3535d6815080
Change-Id: I04dec3d5d0d2dd066d7ee46847f3d640651d1871
---
M ApiQueryReferences.php
M Cite_body.php
2 files changed, 42 insertions(+), 2 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Cite
refs/changes/94/279894/1
diff --git a/ApiQueryReferences.php b/ApiQueryReferences.php
index 83e636a..96b13fa 100644
--- a/ApiQueryReferences.php
+++ b/ApiQueryReferences.php
@@ -61,6 +61,19 @@
$ref['group'] = $group;
$ref['reflist'] = $index;
+ if ( $ref['stripState'] !==
null ) {
+ $ref['stripState'] =
unserialize( $ref['stripState'] );
+ $ref['stripState'] =
$ref['stripState']->getPublicData();
+ } else {
+ unset(
$ref['stripState'] );
+ }
+ if ( $ref['linkHolders'] !==
null ) {
+ $ref['linkHolders'] =
unserialize( $ref['linkHolders'] );
+ $ref['linkHolders'] =
$ref['linkHolders']->getPublicData();
+ } else {
+ unset(
$ref['linkHolders'] );
+ }
+
$allReferences[$id] = $ref;
}
}
diff --git a/Cite_body.php b/Cite_body.php
index 10ebc4d..79ad883 100644
--- a/Cite_body.php
+++ b/Cite_body.php
@@ -1210,10 +1210,37 @@
$savedRefs = $this->mParser->getOutput()->getExtensionData(
self::EXT_DATA_KEY );
if ( $savedRefs === null ) {
// Initialize array structure
- $savedRefs = array( 'version' =>
self::DATA_VERSION_NUMBER );
+ $savedRefs = array(
+ 'refdataversion' => self::DATA_VERSION_NUMBER,
+ 'halfparsedversion' =>
Parser::HALF_PARSED_VERSION,
+ );
+ }
+ $refs = array();
+ foreach ( $this->mRefs[$group] as $name => $ref ) {
+ // gather all necessary data
+ $ref = array_merge(
+ $ref,
+ $this->mParser->serializeHalfParsedText(
$ref['text'] )
+ );
+ unset( $ref['version'] ); // HALF_PARSED_VERSION
already saved above
+ if ( $ref['stripState'] !== null ) {
+ $ref['stripState'] = serialize(
$ref['stripState'] );
+ }
+ if ( $ref['linkHolders'] !== null ) {
+ $ref['linkHolders'] = serialize(
$ref['linkHolders'] );
+ }
+ // 'number' uneeded after page parse
+ unset( $ref['number'] );
+ // give expected meaning to 'count'
+ if ( $ref['count'] < 0 ) {
+ $ref['count'] = 1;
+ } else {
+ $ref['count']++;
+ }
+ $refs[$name] = $ref;
}
// save group
- $savedRefs['references'][$reflistIndex++] = array( $group,
$this->mRefs[$group] );
+ $savedRefs['references'][$reflistIndex++] = array( $group,
$refs );
$this->mParser->getOutput()->setExtensionData(
self::EXT_DATA_KEY, $savedRefs );
}
--
To view, visit https://gerrit.wikimedia.org/r/279894
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I04dec3d5d0d2dd066d7ee46847f3d640651d1871
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Cite
Gerrit-Branch: master
Gerrit-Owner: Cenarium <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits