From dc9de6e3f03831bf4817df8f6e65fbb0b946504e Mon Sep 17 00:00:00 2001 From: Alexander O'Neill Date: Fri, 30 Nov 2018 05:10:15 -0400 Subject: [PATCH] Account for different references when collapsing footnotes. --- src/Plugin/Filter/ReferenceFootnotesFilter.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Plugin/Filter/ReferenceFootnotesFilter.php b/src/Plugin/Filter/ReferenceFootnotesFilter.php index 032d386..47f1890 100644 --- a/src/Plugin/Filter/ReferenceFootnotesFilter.php +++ b/src/Plugin/Filter/ReferenceFootnotesFilter.php @@ -184,6 +184,8 @@ class ReferenceFootnotesFilter extends FootnotesFilter { $randstr = $this->randstr(); $value = $this->extractAttribute($matches, 'value'); + $page = $this->extractAttribute($matches, 'page'); + $reference = $this->extractAttribute($matches, 'reference'); if ($value) { // A value label was found. If it is numeric, record it in $n so further @@ -195,7 +197,7 @@ class ReferenceFootnotesFilter extends FootnotesFilter { $n = $value; } } - elseif ($opt_collapse and $value_existing = $this->findFootnote($matches[2], $store_matches)) { + elseif ($opt_collapse and $value_existing = $this->findFootnote($matches[2], $reference, $store_matches)) { // An identical footnote already exists. Set value to the previously // existing value. $value = $value_existing; @@ -211,8 +213,6 @@ class ReferenceFootnotesFilter extends FootnotesFilter { // attribute. $value_id = preg_replace('|[^\w\-]|', '', $value); - $page = $this->extractAttribute($matches, 'page'); - $reference = $this->extractAttribute($matches, 'reference'); // Create a sanitized version of $text that is suitable for using as HTML // attribute value. (In particular, as the title attribute to the footnote @@ -279,10 +279,10 @@ class ReferenceFootnotesFilter extends FootnotesFilter { /** * @inheritdoc */ - private function findFootnote($text, &$store_matches) { + private function findFootnote($text, $reference, &$store_matches) { if (!empty($store_matches)) { foreach ($store_matches as &$fn) { - if ($fn['text'] == $text) { + if ($fn['text'] == $text && $fn['reference'] == $reference) { return $fn['value']; } }