wine-function
v1.1.0
Published
Un semplice programma **Node.js** che permette di visualizzare e scegliere tra le migliori **cantine siciliane**, suddivise per tipo di vino: - Rosso - Bianco - Rosato
Readme
🍇 Sicilian Wineries Selector
Un semplice programma Node.js che permette di visualizzare e scegliere tra le migliori cantine siciliane, suddivise per tipo di vino:
- Rosso
- Bianco
- Rosato
L’utente può selezionare una cantina e visualizzare le 5 migliori bottiglie prodotte.
🚀 Funzionalità
✅ Mostra tutte le cantine divise per categoria (rosso, bianco, rosato)
✅ Permette di scegliere una cantina digitandone il nome
✅ Restituisce la Top 5 dei vini della cantina selezionata
✅ Ricerca non sensibile a maiuscole/minuscole (es. planeta o Planeta funzionano uguale)
🧩 Tecnologie utilizzate
- JavaScript (Node.js)
- Modulo nativo
readline→ per leggere l’input dell’utente da terminale
⚙️ Installazione
- Clona il progetto o copialo nella tua cartella locale:
git clone https://github.com/tuo-username/sicilian-wineries.git cd sicilian-wineries
const wineCatalog = { red: { "Planeta - R": ["Santa Cecilia", "Eruzione 1614 Nerello Mascalese", "Mamertino Rosso", "Burdese", "Cerasuolo di Vittoria"], "Donnafugata - R": ["Mille e una Notte", "Tancredi", "Fragore Etna Rosso", "Sherazade", "Floramundi"], "Tasca d'Almerita - R": ["Rosso del Conte", "Lamùri Nero d’Avola", "Cygnus", "Regaleali Nero d’Avola", "Tascante Etna Rosso"], "Cusumano - R": ["Noà", "Sagàna", "Benuara", "Nero d’Avola", "Disueri"], "Passopisciaro - R": ["Passorosso", "Contrada S", "Contrada R", "Contrada G", "Contrada C"] }, white: { "Planeta - W": ["Cometa", "Eruzione 1614 Carricante", "Chardonnay", "Alastro", "Etna Bianco"], "Donnafugata - W": ["Ben Ryé (Passito)", "Anthìlia", "Vigna di Gabri", "SurSur Grillo", "Prio Catarratto"], "Benanti": ["Pietramarina Etna Bianco Superiore", "Etna Bianco", "Contrada Cavaliere", "Contrada Rinazzu", "Bianco di Caselle"], "Tasca d'Almerita - W": ["Nozze d’Oro", "Regaleali Bianco", "Cavallo delle Fate Grillo", "Grillo Mozia", "Leone d’Almerita"], "Cusumano - W": ["Shamaris Grillo", "Jalé Chardonnay", "Angimbé", "Riesling", "Catarratto"] }, rosé: { "Donnafugata - Rosé": ["Lumera", "Rosa (DOC Sicilia)", "Dea Vulcano Rosato", "Sul Vulcano Etna Rosato", "Rosato Sicilia"], "Planeta - Rosè": ["Rosé Nero d’Avola", "Rosé di Syrah", "Rosé Sicilia DOC", "Metodo Classico Rosé", "Rosé Brut"], "Benanti - Rosè": ["Etna Rosato", "Nerello Mascalese Rosato", "Contrada Rosato", "Rovitello Rosato", "Monte Serra Rosato"], "Passopisciaro - Rosè": ["Passorosato", "Contrada Rosato", "Etna Rosato", "Passopisciaro Rosé", "Rosato Terre Siciliane"], "Graci": ["Etna Rosato", "Rosato Arcurìa", "Rosato Feudo di Mezzo", "Rosato Nerello", "Rosato Terre Siciliane"] } };
function getWineriesByCategory() { const result = {}; for (const [category, wineries] of Object.entries(wineCatalog)) { result[category] = Object.keys(wineries); } return result; }
function getTop5Wines(wineryName) { const wineryLower = wineryName.toLowerCase(); for (const category in wineCatalog) { const wineries = wineCatalog[category]; for (const name in wineries) { if (name.toLowerCase() === wineryLower) { return wineries[name].slice(0, 5); } } } return null; }
function showAvailableWineries() {
const list = getWineriesByCategory();
console.log("\nScegli una di queste Cantine:\n");
for (const category in list) {
const title = category.toUpperCase();
console.log(🟢 ${title}:);
console.log(" " + list[category].join(", "));
console.log("");
}
}
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
showAvailableWineries();
rl.question("Inserisci la cantina: ", (userChoice) => {
const wines = getTop5Wines(userChoice);
if (wines) {
console.log(\nTop 5 wines from ${userChoice}:);
wines.forEach((wine, index) => console.log(${index + 1}. ${wine}));
} else {
console.log(\nCantina "${userChoice}" non trovata.);
}
rl.close();
});
