Page MenuHomePhabricator

Improve section parsing in mobile-sections endpoint
Closed, ResolvedPublic

Description

Make sure nested section tags are handled correctly. No content is missed nor duplicated.

Example of duplicated content:
http://0.0.0.0:6928/fr.wikipedia.org/v1/page/mobile-sections/Discussion_Portail%3ADroit_fran%C3%A7ais/137936955
The old implementation (in master as of now) has a portion of the middle of section 28 duplicated in section 29.

{
"id": 28,
"text": "\n\n<table align=\"center\" style=\"background-color: transparent;\" cellpadding=\"5px\" cellspacing=\"5px\" id=\"mwAz4\">\n<tbody id=\"mwAz8\"><tr id=\"mwA0A\"><td> <span><a href=\"/wiki/Fichier:Questionmark.png\" class=\"image\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Questionmark.png/70px-Questionmark.png\" data-file-type=\"bitmap\" height=\"53\" width=\"70\"></a></span></td>\n<td> Bonjour,\n\n<p>L’article « <b><a href=\"/wiki/Ferdinand_Mélin-Soucramanien\" title=\"Ferdinand Mélin-Soucramanien\">Ferdinand Mélin-Soucramanien</a></b> » est proposé à la suppression (<abbr class=\"abbr\" about=\"#mwt216\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;cf.&quot;,&quot;href&quot;:&quot;./Modèle:Cf.&quot;},&quot;params&quot;:{},&quot;i&quot;:0}}]}\" id=\"mwA0k\">cf.</abbr> <a href=\"/wiki/Wikipédia:Pages_à_supprimer\" title=\"Wikipédia:Pages à supprimer\">Wikipédia:Pages à supprimer</a>). Après avoir pris connaissance des <a href=\"/wiki/Wikipédia:Notoriété\" title=\"Wikipédia:Notoriété\">critères généraux d’admissibilité des articles</a> et des <a href=\"/wiki/Wikipédia:Liste_des_critères_spécifiques_de_notoriété\" title=\"Wikipédia:Liste des critères spécifiques de notoriété\">critères spécifiques</a>, vous pourrez <a href=\"/wiki/Aide:Arguments_à_éviter_lors_d'une_procédure_de_suppression\" title=\"Aide:Arguments à éviter lors d'une procédure de suppression\">donner votre avis</a> sur la page de discussion <b><a href=\"/wiki/Discussion:Ferdinand_Mélin-Soucramanien/Suppression\" title=\"Discussion:Ferdinand Mélin-Soucramanien/Suppression\">Discussion:Ferdinand Mélin-Soucramanien/Suppression</a></b>.</p>\n\n<p>Le meilleur moyen d’obtenir un consensus pour la conservation de l’article est de fournir des <a href=\"/wiki/Wikipédia:Citez_vos_sources\" title=\"Wikipédia:Citez vos sources\">sources secondaires fiables et indépendantes</a>. Si vous ne pouvez trouver de telles sources, c’est que l’article n’est probablement pas admissible. N’oubliez pas que les <a href=\"/wiki/Wikipédia:Principes_fondateurs\" title=\"Wikipédia:Principes fondateurs\">principes fondateurs</a> de Wikipédia ne garantissent aucun droit à avoir un article sur Wikipédia.</p>\n\n<p><a href=\"/wiki/Utilisateur:Mario93\" title=\"Utilisateur:Mario93\">Mario93</a> (<a href=\"/wiki/Discussion_utilisateur:Mario93\" title=\"Discussion utilisateur:Mario93\">discuter</a>) 18 mai 2017 à 20:53 (CEST)</p>\n\n<section data-section-number=\"29\" id=\"mwA1Y\"><h2 id=\"L.27article_Jacques_Kohn_est_propos.C3.A9_.C3.A0_la_suppression\"> L'article Jacques Kohn est proposé à la suppression </h2>\n\n<table align=\"center\" style=\"background-color: transparent;\" cellpadding=\"5px\" cellspacing=\"5px\" id=\"mwA1c\">\n<tbody id=\"mwA1g\"><tr id=\"mwA1k\"><td> <span><a href=\"/wiki/Fichier:Circle-icons-caution.svg\" class=\"image\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f5/Circle-icons-caution.svg/70px-Circle-icons-caution.svg.png\" data-file-type=\"drawing\" height=\"70\" width=\"70\"></a></span></td>\n<td> Bonjour,\n\n<p>L’article « <b><a href=\"/wiki/Jacques_Kohn\" title=\"Jacques Kohn\">Jacques Kohn</a></b> » est proposé à la suppression (<abbr class=\"abbr\" about=\"#mwt221\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;cf.&quot;,&quot;href&quot;:&quot;./Modèle:Cf.&quot;},&quot;params&quot;:{},&quot;i&quot;:0}}]}\" id=\"mwA2I\">cf.</abbr> <a href=\"/wiki/Wikipédia:Pages_à_supprimer\" title=\"Wikipédia:Pages à supprimer\">Wikipédia:Pages à supprimer</a>). Après avoir pris connaissance des <a href=\"/wiki/Wikipédia:Notoriété\" title=\"Wikipédia:Notoriété\">critères généraux d’admissibilité des articles</a> et des <a href=\"/wiki/Wikipédia:Liste_des_critères_spécifiques_de_notoriété\" title=\"Wikipédia:Liste des critères spécifiques de notoriété\">critères spécifiques</a>, vous pourrez <a href=\"/wiki/Aide:Arguments_à_éviter_lors_d'une_procédure_de_suppression\" title=\"Aide:Arguments à éviter lors d'une procédure de suppression\">donner votre avis</a> sur la page de discussion <b><a href=\"/wiki/Discussion:Jacques_Kohn/Suppression\" title=\"Discussion:Jacques Kohn/Suppression\">Discussion:Jacques Kohn/Suppression</a></b>.</p>\n\n<p>Le meilleur moyen d’obtenir un consensus pour la conservation de l’article est de fournir des <a href=\"/wiki/Wikipédia:Citez_vos_sources\" title=\"Wikipédia:Citez vos sources\">sources secondaires fiables et indépendantes</a>. Si vous ne pouvez trouver de telles sources, c’est que l’article n’est probablement pas admissible. N’oubliez pas que les <a href=\"/wiki/Wikipédia:Principes_fondateurs\" title=\"Wikipédia:Principes fondateurs\">principes fondateurs</a> de Wikipédia ne garantissent aucun droit à avoir un article sur Wikipédia.</p>\n\n<p><b><a href=\"/wiki/Utilisateur:Éric_Messel\" title=\"Utilisateur:Éric Messel\"><span style=\"color:DarkSlateBlue\">Éric Messel</span></a></b> <sup id=\"mwA3E\"><small id=\"mwA3I\"><i>(<a href=\"/wiki/Discussion_utilisateur:Éric_Messel\" title=\"Discussion utilisateur:Éric Messel\"><span style=\"color:#a52a2a\">Déposer un message</span></a>)</i></small></sup> 28 mai 2017 à 16:50 (CEST)</p></td></tr>\n</tbody></table>\n\n</section><section data-section-number=\"-1\" id=\"mwA3Y\"><h2 id=\"L.27admissibilit.C3.A9_de_l.27article_Garde_.28droit.29_est_.C3.A0_prouver\"> L'admissibilité de l'article Garde (droit) est à prouver </h2>\n\n<table align=\"center\" style=\"background-color: #FFFFFF; border:1px solid #FF8822\" cellpadding=\"5px\" cellspacing=\"5px\" id=\"mwA3c\">\n<tbody id=\"mwA3g\"><tr id=\"mwA3k\"><td> <span><a href=\"/wiki/Fichier:Emblem-question.svg\" class=\"image\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Emblem-question.svg/70px-Emblem-question.svg.png\" data-file-type=\"drawing\" height=\"70\" width=\"70\"></a></span></td>\n<td> Bonjour,\n\n<p>Vous êtes informé qu'une proposition de vérification d'admissibilité a été faite récemment concernant la page « <b><a href=\"/wiki/Garde_(droit)\" title=\"Garde (droit)\">Garde (droit)</a></b> ». Dans la mesure où vous êtes, ou bien le créateur de la page, ou bien un contributeur significatif de la page, vous êtes invité, après avoir pris connaissance des <a href=\"/wiki/Wikipédia:Notoriété\" title=\"Wikipédia:Notoriété\">critères généraux d’admissibilité des articles</a> et des <a href=\"/wiki/Wikipédia:Liste_des_critères_spécifiques_de_notoriété\" title=\"Wikipédia:Liste des critères spécifiques de notoriété\">critères spécifiques</a>, à corriger l'article et à le compléter pour expliciter son admissibilité, <a href=\"/wiki/Wikipédia:Citez_vos_sources#Qualit.C3.A9_des_sources\" title=\"Wikipédia:Citez vos sources\">en y apportant des sources secondaires</a> et en donnant des éléments d'information susceptibles de prouver la notoriété de son contenu. Au besoin, vous pouvez argumenter de la notoriété de l'article <a rel=\"mw:ExtLink\" href=\"//fr.wikipedia.org/w/index.php?title=Discussion:Garde_(droit)&amp;action=edit&amp;section=new&amp;preload=Modèle:Admissibilité_à_vérifier/Discussion_Preload_2&amp;preloadtitle=Admissibilité\" class=\"external\">en créant la discussion</a>.</p>\n\n<p>Si rien n'est fait, l'article sera <a href=\"/wiki/Wikipédia:Pages_à_supprimer\" title=\"Wikipédia:Pages à supprimer\">proposé à la suppression</a> un an au plus tard après la mise en place du bandeau.</p></td></tr>\n</tbody></table><p>-- <b>JR</b> <small id=\"mwA4s\"><a href=\"/wiki/Discussion_utilisateur:Jrcourtois\" title=\"Discussion utilisateur:Jrcourtois\">(disc)</a></small> 5 juin 2017 à 09:59 (CEST)</p></section></td></tr></tbody></table>",
"toclevel": 1,
"line": "L'article Ferdinand Mélin-Soucramanien est proposé à la suppression",
"anchor": "L.27article_Ferdinand_M.C3.A9lin-Soucramanien_est_propos.C3.A9_.C3.A0_la_suppression"
},
{
"id": 29,
"text": "\n\n<table align=\"center\" style=\"background-color: transparent;\" cellpadding=\"5px\" cellspacing=\"5px\" id=\"mwA1c\">\n<tbody id=\"mwA1g\"><tr id=\"mwA1k\"><td> <span><a href=\"/wiki/Fichier:Circle-icons-caution.svg\" class=\"image\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f5/Circle-icons-caution.svg/70px-Circle-icons-caution.svg.png\" data-file-type=\"drawing\" height=\"70\" width=\"70\"></a></span></td>\n<td> Bonjour,\n\n<p>L’article « <b><a href=\"/wiki/Jacques_Kohn\" title=\"Jacques Kohn\">Jacques Kohn</a></b> » est proposé à la suppression (<abbr class=\"abbr\" about=\"#mwt221\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;cf.&quot;,&quot;href&quot;:&quot;./Modèle:Cf.&quot;},&quot;params&quot;:{},&quot;i&quot;:0}}]}\" id=\"mwA2I\">cf.</abbr> <a href=\"/wiki/Wikipédia:Pages_à_supprimer\" title=\"Wikipédia:Pages à supprimer\">Wikipédia:Pages à supprimer</a>). Après avoir pris connaissance des <a href=\"/wiki/Wikipédia:Notoriété\" title=\"Wikipédia:Notoriété\">critères généraux d’admissibilité des articles</a> et des <a href=\"/wiki/Wikipédia:Liste_des_critères_spécifiques_de_notoriété\" title=\"Wikipédia:Liste des critères spécifiques de notoriété\">critères spécifiques</a>, vous pourrez <a href=\"/wiki/Aide:Arguments_à_éviter_lors_d'une_procédure_de_suppression\" title=\"Aide:Arguments à éviter lors d'une procédure de suppression\">donner votre avis</a> sur la page de discussion <b><a href=\"/wiki/Discussion:Jacques_Kohn/Suppression\" title=\"Discussion:Jacques Kohn/Suppression\">Discussion:Jacques Kohn/Suppression</a></b>.</p>\n\n<p>Le meilleur moyen d’obtenir un consensus pour la conservation de l’article est de fournir des <a href=\"/wiki/Wikipédia:Citez_vos_sources\" title=\"Wikipédia:Citez vos sources\">sources secondaires fiables et indépendantes</a>. Si vous ne pouvez trouver de telles sources, c’est que l’article n’est probablement pas admissible. N’oubliez pas que les <a href=\"/wiki/Wikipédia:Principes_fondateurs\" title=\"Wikipédia:Principes fondateurs\">principes fondateurs</a> de Wikipédia ne garantissent aucun droit à avoir un article sur Wikipédia.</p>\n\n<p><b><a href=\"/wiki/Utilisateur:Éric_Messel\" title=\"Utilisateur:Éric Messel\"><span style=\"color:DarkSlateBlue\">Éric Messel</span></a></b> <sup id=\"mwA3E\"><small id=\"mwA3I\"><i>(<a href=\"/wiki/Discussion_utilisateur:Éric_Messel\" title=\"Discussion utilisateur:Éric Messel\"><span style=\"color:#a52a2a\">Déposer un message</span></a>)</i></small></sup> 28 mai 2017 à 16:50 (CEST)</p></td></tr>\n</tbody></table>\n\n",
"toclevel": 1,
"line": "L'article Jacques Kohn est proposé à la suppression",
"anchor": "L.27article_Jacques_Kohn_est_propos.C3.A9_.C3.A0_la_suppression"
}
]

Here's the common text since it's a bit hard to see without formatting:

<table align=\"center\" style=\"background-color: transparent;\" cellpadding=\"5px\" cellspacing=\"5px\" id=\"mwA1c\">\n<tbody id=\"mwA1g\"><tr id=\"mwA1k\"><td> <span><a href=\"/wiki/Fichier:Circle-icons-caution.svg\" class=\"image\"><img src=\"//upload.wikimedia.org/wikipedia/commons/thumb/f/f5/Circle-icons-caution.svg/70px-Circle-icons-caution.svg.png\" data-file-type=\"drawing\" height=\"70\" width=\"70\"></a></span></td>\n<td> Bonjour,\n\n<p>L’article « <b><a href=\"/wiki/Jacques_Kohn\" title=\"Jacques Kohn\">Jacques Kohn</a></b> » est proposé à la suppression (<abbr class=\"abbr\" about=\"#mwt221\" typeof=\"mw:Transclusion\" data-mw=\"{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;cf.&quot;,&quot;href&quot;:&quot;./Modèle:Cf.&quot;},&quot;params&quot;:{},&quot;i&quot;:0}}]}\" id=\"mwA2I\">cf.</abbr> <a href=\"/wiki/Wikipédia:Pages_à_supprimer\" title=\"Wikipédia:Pages à supprimer\">Wikipédia:Pages à supprimer</a>). Après avoir pris connaissance des <a href=\"/wiki/Wikipédia:Notoriété\" title=\"Wikipédia:Notoriété\">critères généraux d’admissibilité des articles</a> et des <a href=\"/wiki/Wikipédia:Liste_des_critères_spécifiques_de_notoriété\" title=\"Wikipédia:Liste des critères spécifiques de notoriété\">critères spécifiques</a>, vous pourrez <a href=\"/wiki/Aide:Arguments_à_éviter_lors_d'une_procédure_de_suppression\" title=\"Aide:Arguments à éviter lors d'une procédure de suppression\">donner votre avis</a> sur la page de discussion <b><a href=\"/wiki/Discussion:Jacques_Kohn/Suppression\" title=\"Discussion:Jacques Kohn/Suppression\">Discussion:Jacques Kohn/Suppression</a></b>.</p>\n\n<p>Le meilleur moyen d’obtenir un consensus pour la conservation de l’article est de fournir des <a href=\"/wiki/Wikipédia:Citez_vos_sources\" title=\"Wikipédia:Citez vos sources\">sources secondaires fiables et indépendantes</a>. Si vous ne pouvez trouver de telles sources, c’est que l’article n’est probablement pas admissible. N’oubliez pas que les <a href=\"/wiki/Wikipédia:Principes_fondateurs\" title=\"Wikipédia:Principes fondateurs\">principes fondateurs</a> de Wikipédia ne garantissent aucun droit à avoir un article sur Wikipédia.</p>\n\n<p><b><a href=\"/wiki/Utilisateur:Éric_Messel\" title=\"Utilisateur:Éric Messel\"><span style=\"color:DarkSlateBlue\">Éric Messel</span></a></b> <sup id=\"mwA3E\"><small id=\"mwA3I\"><i>(<a href=\"/wiki/Discussion_utilisateur:Éric_Messel\" title=\"Discussion utilisateur:Éric Messel\"><span style=\"color:#a52a2a\">Déposer un message</span></a>)</i></small></sup> 28 mai 2017 à 16:50 (CEST)</p></td></tr>\n</tbody></table>

Basically, section 29 is already included in section 28.

Event Timeline

Change 385425 had a related patch set uploaded (by BearND; owner: BearND):
[mediawiki/services/mobileapps@master] Rewrite sectioning using section tags code

https://gerrit.wikimedia.org/r/385425

Updated description to include an example of an issue with the old section code.

Change 385425 merged by jenkins-bot:
[mediawiki/services/mobileapps@master] Rewrite sectioning using section tags code

https://gerrit.wikimedia.org/r/385425

Mentioned in SAL (#wikimedia-operations) [2017-11-08T21:37:28Z] <bsitzmann@tin> Started deploy [mobileapps/deploy@00e60b2]: Update mobileapps to 8e82983 (T178706 T178708 T178333 T170692)

Mentioned in SAL (#wikimedia-operations) [2017-11-08T21:44:40Z] <bsitzmann@tin> Finished deploy [mobileapps/deploy@00e60b2]: Update mobileapps to 8e82983 (T178706 T178708 T178333 T170692) (duration: 07m 12s)