spencermountain / wtf_wikipedia

a pretty-committed wikipedia markup parser
https://observablehq.com/@spencermountain/wtf_wikipedia
MIT License
774 stars 129 forks source link

"parse.list(section, wiki)" breaks "parse+remove scary '[[ [[]] ]]' stuff" #147

Closed xeladotbe closed 6 years ago

xeladotbe commented 6 years ago

Steps to reproduce:

(async () => {
  const wtf = require('wtf_wikipedia');
  const document = await wtf.fetch('Formel 1', 'de');

  console.log(document.section('Länderbezug').sentences(4).plaintext());
})();

prints:

mini|hochkant=2|center|[[Liste der Formel-1-Rennstrecken|Länder, die einen Grand Prix austrugenSeit der ersten 1950er Saison wurden 35 unterschiedlich benannte Große Preise in 25 Ländern auf 68 Formel-1-Rennstrecken veranstaltet. Die meisten Großen Preise finden in Europa statt, aber auch in Nord- und Südamerika, Asien und Australien werden regelmäßig Formel-1-Rennen ausgetragen. In Afrika fanden bis zur Saison 1993 einige Male der Große Preis von Südafrika und einmal der Große Preis von Marokko statt.In den ersten Jahren bestand eine Formel-1-Weltmeisterschaft aus weniger als zehn Einzelrennen. Von 1958 bis 1972 wurden jeweils neun bis 13 Rennen in einer Saison ausgetragen. Seit 1973 gibt es mindestens 14 und maximal 21 Rennen pro Saison. Die Höchstzahl von 21 veranstalteten Saisonrennen wurde bisher nur in der Saison 2016 erreicht.Nur zwei Große Preise wurden lückenlos in jeder Saison ausgetragen: der Große Preis von Großbritannien und der Große Preis von Italien. Die meisten Formel-1-Rennen in einer WM-Saison in einem Land fanden 1982 in den USA mit je einem Rennen in Detroit, Long Beach und Las Vegas statt. Der jüngste Grand Prix ist der erstmals 2017 veranstaltete Große Preis von Aserbaidschan. Neben dem 2008 zum ersten Mal veranstalteten Grand Prix von Singapur ist der Grand Prix von Abu Dhabi das zweite Nachtrennen der Formel 1, jedoch mit der Besonderheit, dass noch bei Tageslicht gestartet wird. Seit 2014 wird zudem beim Grand Prix von Bahrain unter Flutlicht gefahren.

Expected:

Seit der ersten 1950er Saison wurden 35 unterschiedlich benannte Große Preise in 25 Ländern auf 68 Formel-1-Rennstrecken veranstaltet. Die meisten Großen Preise finden in Europa statt, aber auch in Nord- und Südamerika, Asien und Australien werden regelmäßig Formel-1-Rennen ausgetragen. In Afrika fanden bis zur Saison 1993 einige Male der Große Preis von Südafrika und einmal der Große Preis von Marokko statt.In den ersten Jahren bestand eine Formel-1-Weltmeisterschaft aus weniger als zehn Einzelrennen. Von 1958 bis 1972 wurden jeweils neun bis 13 Rennen in einer Saison ausgetragen. Seit 1973 gibt es mindestens 14 und maximal 21 Rennen pro Saison. Die Höchstzahl von 21 veranstalteten Saisonrennen wurde bisher nur in der Saison 2016 erreicht.Nur zwei Große Preise wurden lückenlos in jeder Saison ausgetragen: der Große Preis von Großbritannien und der Große Preis von Italien. Die meisten Formel-1-Rennen in einer WM-Saison in einem Land fanden 1982 in den USA mit je einem Rennen in Detroit, Long Beach und Las Vegas statt. Der jüngste Grand Prix ist der erstmals 2017 veranstaltete Große Preis von Aserbaidschan. Neben dem 2008 zum ersten Mal veranstalteten Grand Prix von Singapur ist der Grand Prix von Abu Dhabi das zweite Nachtrennen der Formel 1, jedoch mit der Besonderheit, dass noch bei Tageslicht gestartet wird. Seit 2014 wird zudem beim Grand Prix von Bahrain unter Flutlicht gefahren.

Wikipedia Link: https://de.wikipedia.org/wiki/Formel_1#L%C3%A4nderbezug

RAW Wikitext:

=== Länderbezug === Jede Saison besteht aus mehreren Einzelrennen, die als ''Grand Prix'' oder ''Großer Preis'' bezeichnet werden. Ein Großer Preis wird dabei in der Regel nach dem Land benannt, in dem er veranstaltet wird, beispielsweise als ''Großer Preis von Deutschland''. Sollen in einem Jahr zwei Formel-1-Veranstaltungen in einem Land ausgetragen werden, wird für den zweiten Grand Prix üblicherweise ein anderer Name gewählt. Beispiele sind der [[Großer Preis von Europa|Große Preis von Europa]], der bereits auf Rennstrecken in Großbritannien, Spanien, Deutschland und Aserbaidschan ausgetragen wurde, der [[Großer Preis von Luxemburg|Große Preis von Luxemburg]], der als Name für zwei Formel-1-Rennen auf dem [[Nürburgring]] in Deutschland verwendet wurde, sowie der [[Großer Preis des Pazifiks|Große Preis des Pazifiks]], der Mitte der 1990er-Jahre in Japan ausgetragen wurde oder der auf der italienischen Rennstrecke in Imola von 1981 bis 2006 ausgetragene [[Großer Preis von San Marino|Große Preis von San Marino]].

[[Datei:Formula 1 all over the world-2018.svg|mini|hochkant=2|center|[[Liste der Formel-1-Rennstrecken|Länder, die einen Grand Prix austrugen]] {{Farblegende|#008000|Grand Prix 2018}} {{Farblegende|#808080|Grand Prix vor 2018}}

]] Seit der ersten [[Automobil-Weltmeisterschaft 1950|1950er Saison]] wurden 35 unterschiedlich benannte Große Preise in 25 Ländern auf 68 [[Liste der Formel-1-Rennstrecken|Formel-1-Rennstrecken]] veranstaltet. Die meisten Großen Preise finden in Europa statt, aber auch in Nord- und Südamerika, Asien und Australien werden regelmäßig Formel-1-Rennen ausgetragen. In Afrika fanden bis zur [[Formel-1-Weltmeisterschaft 1993|Saison 1993]] einige Male der [[Großer Preis von Südafrika|Große Preis von Südafrika]] und einmal der [[Großer Preis von Marokko|Große Preis von Marokko]] statt. In den ersten Jahren bestand eine Formel-1-Weltmeisterschaft aus weniger als zehn Einzelrennen. Von [[Automobil-Weltmeisterschaft 1958|1958]] bis [[Automobil-Weltmeisterschaft 1972|1972]] wurden jeweils neun bis 13 Rennen in einer Saison ausgetragen. Seit [[Automobil-Weltmeisterschaft 1973|1973]] gibt es mindestens 14 und maximal 21 Rennen pro Saison. Die Höchstzahl von 21 veranstalteten Saisonrennen wurde bisher nur in der [[Formel-1-Weltmeisterschaft 2016|Saison 2016]] erreicht. Nur zwei Große Preise wurden lückenlos in jeder Saison ausgetragen: der [[Großer Preis von Großbritannien|Große Preis von Großbritannien]] und der [[Großer Preis von Italien|Große Preis von Italien]]. Die meisten Formel-1-Rennen in einer WM-Saison in einem Land fanden [[Formel-1-Weltmeisterschaft 1982|1982]] in den [[Großer Preis der USA|USA]] mit je einem Rennen in [[Detroit Street Circuit|Detroit]], [[Long Beach Grand Prix Circuit|Long Beach]] und [[Caesars Palace Grand Prix Circuit|Las Vegas]] statt. Der jüngste Grand Prix ist der erstmals [[Großer Preis von Aserbaidschan 2017|2017]] veranstaltete [[Großer Preis von Aserbaidschan|Große Preis von Aserbaidschan]]. Neben dem [[Formel-1-Weltmeisterschaft 2008|2008]] zum ersten Mal veranstalteten [[Großer Preis von Singapur|Grand Prix von Singapur]] ist der [[Großer Preis von Abu Dhabi|Grand Prix von Abu Dhabi]] das zweite Nachtrennen der Formel 1, jedoch mit der Besonderheit, dass noch bei Tageslicht gestartet wird. Seit 2014 wird zudem beim [[Großer Preis von Bahrain|Grand Prix von Bahrain]] unter Flutlicht gefahren.{{Internetquelle |url=http://www.formel1.de/news/grand-prix-berichte/2014-04-03/flutlichtpremiere-in-bahrain-unterschied-wie-tag-und-nacht |titel=Flutlichtpremiere in Bahrain: Unterschied wie Tag und Nacht? - Formel1.de-F1-News |werk=Formel1.de |zugriff=2017-02-21}}

https://github.com/spencermountain/wtf_wikipedia/blob/master/src/section/index.js#L27

I moved the function call "parse.list" locally after the function call "parse.interwiki" and the problem was fixed.

spencermountain commented 6 years ago

thanks Alexander, nice find. Will take a look.

spencermountain commented 6 years ago

fixed in 5.1.0 thank you.