Oprava parsování pro TechTower
This commit is contained in:
parent
c5103f902d
commit
3021e6159d
@ -360,6 +360,7 @@ function App() {
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Parsování jídelních lístků na celý týden</li>
|
<li>Parsování jídelních lístků na celý týden</li>
|
||||||
<li>Oprava mizejícího Pizza day</li>
|
<li>Oprava mizejícího Pizza day</li>
|
||||||
|
<li>Oprava parsování celého týdne pro TechTower</li>
|
||||||
</ul>
|
</ul>
|
||||||
</Alert>
|
</Alert>
|
||||||
{dayIndex != null &&
|
{dayIndex != null &&
|
||||||
|
@ -235,46 +235,46 @@ export const getMenuTechTower = async (firstDayOfWeek: Date, mock: boolean = fal
|
|||||||
if (!font) {
|
if (!font) {
|
||||||
throw Error('Chyba: nenalezen <font> pro obědy v HTML Techtower.');
|
throw Error('Chyba: nenalezen <font> pro obědy v HTML Techtower.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const result: Food[][] = [];
|
||||||
// TODO validovat, že v textu nalezeného <font> je rozsah, do kterého spadá vstupní datum
|
// TODO validovat, že v textu nalezeného <font> je rozsah, do kterého spadá vstupní datum
|
||||||
const siblings = $(font).parent().parent().siblings();
|
const siblings = $(font).parent().parent().siblings();
|
||||||
let parsing = false;
|
let parsing = false;
|
||||||
const result: Food[][] = [];
|
let currentDayIndex = 0;
|
||||||
// TODO toto je kvůli poslednímu "línému" refaktoru neoptimální, stačilo by to projít jedním cyklem
|
for (let i = 0; i < siblings.length; i++) {
|
||||||
for (let dayIndex = 0; dayIndex < 5; dayIndex++) {
|
const text = $(siblings.get(i)).text().trim().replace('\t', '').replace('\n', ' ');
|
||||||
if (!(dayIndex in result)) {
|
if (DAYS_IN_WEEK.includes(text)) {
|
||||||
result[dayIndex] = [];
|
if (text === DAYS_IN_WEEK[currentDayIndex]) {
|
||||||
}
|
// Našli jsme dnešní den, odtud začínáme parsovat jídla
|
||||||
for (let i = 0; i < siblings.length; i++) {
|
parsing = true;
|
||||||
const text = $(siblings.get(i)).text().trim().replace('\t', '').replace('\n', ' ');
|
continue
|
||||||
if (DAYS_IN_WEEK.includes(text)) {
|
|
||||||
if (text === DAYS_IN_WEEK[dayIndex]) {
|
|
||||||
// Našli jsme dnešní den, odtud začínáme parsovat jídla
|
|
||||||
parsing = true;
|
|
||||||
continue
|
|
||||||
} else if (parsing) {
|
|
||||||
// Už parsujeme jídla, ale narazili jsme na následující den - končíme
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (parsing) {
|
} else if (parsing) {
|
||||||
if (text.length == 0) {
|
// Už parsujeme jídla, ale narazili jsme na následující den - posouváme index
|
||||||
// Prázdná řádka - končíme (je za pátečním menu TechTower)
|
currentDayIndex += 1;
|
||||||
break;
|
continue;
|
||||||
}
|
|
||||||
let price = '? Kč';
|
|
||||||
let name = text;
|
|
||||||
if (text.toLowerCase().endsWith('kč')) {
|
|
||||||
const tmp = text.replace('\xA0', ' ').split(' ');
|
|
||||||
const split = [tmp.slice(0, -2).join(' ')].concat(tmp.slice(-2));
|
|
||||||
price = `${split.slice(1)[0]}\xA0Kč`
|
|
||||||
name = split[0]
|
|
||||||
}
|
|
||||||
result[dayIndex].push({
|
|
||||||
amount: '-',
|
|
||||||
name,
|
|
||||||
price,
|
|
||||||
isSoup: isTextSoupName(name),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
} else if (parsing) {
|
||||||
|
if (text.length == 0) {
|
||||||
|
// Prázdná řádka - končíme (je za pátečním menu TechTower)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let price = '? Kč';
|
||||||
|
let name = text;
|
||||||
|
if (text.toLowerCase().endsWith('kč')) {
|
||||||
|
const tmp = text.replace('\xA0', ' ').split(' ');
|
||||||
|
const split = [tmp.slice(0, -2).join(' ')].concat(tmp.slice(-2));
|
||||||
|
price = `${split.slice(1)[0]}\xA0Kč`
|
||||||
|
name = split[0]
|
||||||
|
}
|
||||||
|
if (result[currentDayIndex] == null) {
|
||||||
|
result[currentDayIndex] = [];
|
||||||
|
}
|
||||||
|
result[currentDayIndex].push({
|
||||||
|
amount: '-',
|
||||||
|
name,
|
||||||
|
price,
|
||||||
|
isSoup: isTextSoupName(name),
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user