60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
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)
|