exports.documentation = function(req, res, next) { var title = req.params.title || 'getting-started'; var content = (fs.readFileSync(path.join('documentation', title + '.md')) || '').toString(); content = kramed(content); var nav = fs.readdirSync('documentation'); nav = nav.map(function(item, i) { item = item.replace('.md', ''); return { text: item, current: (item === title), index: DocumentationOrder[item] || 100 }; }); nav = nav.sort(function(a, b) { return a.index - b.index; }); res.render('documentation', { siteName: CONFIG.website.title, title: capitalize.words(title.replace(/-/g, ' ')) + '- spm documentation', spmjsioVersion: spmjsioVersion, gitRev: gitRev, user: req.session.user, anonymous: anonymous, nav: nav, GA: CONFIG.website.GA, content: content }); };
exports.project = function(req, res, next) { var name = req.params.name; var p = new Project({ name: name }); if (p.packages) { p.latest = new Package({ name: p.name, version: p.version }); p.versions = p.getVersions(); p.fromNow = moment(p.updated_at).fromNow(); p.latest.readme = kramed(p.latest.readme || ''); // jquery@1.7.2 -> jquery p.latest.dependencies = _.uniq((p.latest.dependencies || []).map(function(d) { return d.split('@')[0]; })); p.latest.dependents = _.uniq((p.latest.dependents || []).map(function(d) { return d.split('@')[0]; })); if (p.unpublished) { p.unpublished.fromNow = moment(p.unpublished.time).fromNow(); } var editable; var ownerIds = p.owners.map(function(owner) { return owner && owner.id; }); if (ownerIds && ownerIds.length > 0 && req.session.user && !anonymous && ownerIds.indexOf(req.session.user.id) >= 0) { editable = true; } if (p.repository && p.repository.url) { try { p.repositoryurl = gu(p.repository.url).http_href; } catch(e) { p.repositoryurl = ''; } } res.render('project', { siteName: CONFIG.website.title, title: p.name + ' - '+ CONFIG.website.title, spmjsioVersion: spmjsioVersion, gitRev: gitRev, user: req.session.user, anonymous: anonymous, GA: CONFIG.website.GA, project: p, doclink: docLink(p.name), editable: editable, errormessage: req.query.errormessage }); } else { next(); } };
exports.package = function(req, res, next) { var name = req.params.name; var project = new Project({ name: req.params.name }); var version = semver.maxSatisfying(Object.keys(project.packages || {}), req.params.version); var p = new Package({ name: name, version: version }); if (p.md5) { p.readme = kramed(p.readme || ''); p.fromNow = moment(p.updated_at).fromNow(); // jquery@1.7.2 -> jquery p.dependents = _.uniq((p.dependents || []).map(function(d) { return d.split('@')[0]; })); if (p.repository && p.repository.url) { try { p.repositoryurl = gu(p.repository.url).http_href; } catch(e) { p.repositoryurl = ''; } } res.render('package', { siteName: CONFIG.website.title, title: p.name + '@' + p.version + ' - '+ CONFIG.website.title, spmjsioVersion: spmjsioVersion, gitRev: gitRev, user: req.session.user, anonymous: anonymous, GA: CONFIG.website.GA, package: p }); } else { next(); } };