pronoun-monster/app.js
2023-03-13 00:01:10 -04:00

63 lines
2 KiB
JavaScript

import express from 'express'
import { engine } from 'express-handlebars'
import fetchData from './data.js'
const app = express()
const data = fetchData()
// TODO: Use this data haha!
console.log('Data, ready and waiting!', data)
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)