wtf_wikipedia
Version:
parse wikiscript into json
54 lines (52 loc) • 1.24 kB
JavaScript
//remove top-bottoms
const cleanup = function (lines) {
lines = lines.filter((line) => {
//a '|+' row is a 'table caption', remove it.
return line && /^\|\+/.test(line) !== true
})
if (/^\{\|/.test(lines[0]) === true) {
lines.shift()
}
if (/^\|\}/.test(lines[lines.length - 1]) === true) {
lines.pop()
}
if (/^\|-/.test(lines[0]) === true) {
lines.shift()
}
return lines
}
//turn newline seperated into '|-' seperated
const findRows = function (lines) {
let rows = []
let row = []
lines = cleanup(lines)
for (let i = 0; i < lines.length; i += 1) {
let line = lines[i]
//'|-' is a row-seperator
if (/^\|-/.test(line) === true) {
//okay, we're done the row
if (row.length > 0) {
rows.push(row)
row = []
}
} else {
//look for '||' inline row-splitter
line = line.split(/(?:\|\||!!)/) //eslint-disable-line
//support newline -> '||'
if (!line[0] && line[1]) {
line.shift()
}
line.forEach((l) => {
l = l.replace(/^\| */, '')
l = l.trim()
row.push(l)
})
}
}
//finish the last one
if (row.length > 0) {
rows.push(row)
}
return rows
}
module.exports = findRows