JSFiddle - React, Tailwind, and code Playground

by dariusk

HTML

<div id="out"></div>

JavaScript

var wikipediaHTMLResult = function (data) {
    var readData = $('<div class="top">' + data.parse.text['*'] +'</div>');
    //console.log(readData.html());
    
    //console.log(readData.html());

    // handle redirects
    var redirect = readData.find('.redirectMsg a').text();
    console.log('re',redirect, redirect.length);
    if (redirect != '') {
        callWikipediaAPI(redirect);
        return;
    }
    // handle disambiguation
    var disambig = readData.find('#disambigbox').length;
    if (disambig) {
        console.log('DISAMBIG', readData.html());
        callWikipediaAPI(redirect);
        return;
    }
console.log(readData.children('p').has('a[title]').html())
    var first = readData.children('p').has('a[title]').not('a[href*=":"]').not('a[href*="wiktionary"]').not('a[href*="wikimedia"]').not('a[class="external"]').not('a[class="new"]');
    first = first.eq(Math.floor(Math.random()*first.length));
    first = first.html().match(/.*?title=.*?\.(\s|\n|$|\W|)/)[0];
    console.log(first);
    var links = $('<p>'+first+'</p>').find('a[title]').not('[href*=":"]').not('[href*="wiktionary"]').not('[href*="wikimedia"]').not('[class="external"]').not('[class="new"]');
    console.log(links)
    var link = links[Math.floor(Math.random()*Math.min(links.length,5))];
    console.log(link)    
    var title = link.href.match(/wiki\/(.*)$/)[1].replace(/\#.*/,'');

    $('#out').append('<p>' + $('<p>'+first+'</p>').text() + '</p>');
    console.log('calling', title);
    callWikipediaAPI(title);
};

function callWikipediaAPI(wikipediaPage) {
    // http://www.mediawiki.org/wiki/API:Parsing_wikitext#parse
    $.getJSON('http://en.wikipedia.org/w/api.php?action=parse&format=json&callback=?', {
        page: wikipediaPage,
        prop: 'text|images',
        uselang: 'en'
    }, wikipediaHTMLResult);
}

callWikipediaAPI('Tomato');