import express from 'express' import { engine } from 'express-handlebars' import fetchData from './data.js' const app = express() const data = fetchData() app.engine('handlebars', engine()) app.set('view engine', 'handlebars') app.set('views', './src/views') app.use(express.static('dist')) const siteName = "Pronoun Monster" function constructLexicon(nominative, accusative, pronominalPossessive, predicativePossessive, reflexive) { return { nominative: { name: "Nominative", value: nominative}, accusative: { name: "Accusative", value: accusative}, pronominalPossessive: { name: "Pronominal Possessive", value: pronominalPossessive}, predicativePossessive: { name: "Predicative Possessive", value: predicativePossessive}, reflexive: { name: "Reflexive", value: reflexive} } } app.get('/', (req, res) => { const pageTitle = siteName; res.render('home', { siteName, pageTitle, data } ) }) app.get('/:nominative/:accusative/:predicative_possessive/:reflexive', (req, res) => { const { nominative, accusative, predicative_possessive: predicativePossessive, reflexive, } = req.params const lexicon = constructLexicon(nominative, accusative, accusative, predicativePossessive, reflexive); const pageTitle = Object.values(lexicon).map(entry => entry.value).join("/") + " - " + siteName; res.render('individual', { siteName, pageTitle, lexicon }) }) app.get('/:nominative/:accusative/:pronominal_possessive/:predicative_possessive/:reflexive', (req, res) => { const { nominative, accusative, pronominal_possessive: pronominalPossessive, predicative_possessive: predicativePossessive, reflexive, } = req.params const lexicon = constructLexicon(nominative, accusative, pronominalPossessive, predicativePossessive, reflexive); const pageTitle = Object.values(lexicon).map(entry => entry.value).join("/") + " - " + siteName; res.render('individual', { siteName, pageTitle, lexicon }) }) app.listen(3000)