From 37376debe54ccd2889174ebb8ffc3949e0bda298 Mon Sep 17 00:00:00 2001 From: Timothy J Fontaine Date: Thu, 13 Feb 2014 15:52:01 -0800 Subject: website: move website to joyent/node-website The website will no longer be living in the source repository instead it can be found at http://github.com/joyent/node-website --- tools/blog/README.md | 5 - tools/blog/generate.js | 270 ----- tools/blog/node_modules/ejs/.gitmodules | 0 tools/blog/node_modules/ejs/.npmignore | 4 - tools/blog/node_modules/ejs/History.md | 98 -- tools/blog/node_modules/ejs/Makefile | 23 - tools/blog/node_modules/ejs/Readme.md | 151 --- tools/blog/node_modules/ejs/benchmark.js | 14 - tools/blog/node_modules/ejs/ejs.js | 567 ----------- tools/blog/node_modules/ejs/ejs.min.js | 2 - tools/blog/node_modules/ejs/examples/client.html | 24 - tools/blog/node_modules/ejs/examples/list.ejs | 7 - tools/blog/node_modules/ejs/examples/list.js | 14 - tools/blog/node_modules/ejs/index.js | 2 - tools/blog/node_modules/ejs/lib/ejs.js | 298 ------ tools/blog/node_modules/ejs/lib/filters.js | 198 ---- tools/blog/node_modules/ejs/lib/utils.js | 23 - tools/blog/node_modules/ejs/package.json | 23 - tools/blog/node_modules/ejs/support/compile.js | 174 ---- tools/blog/node_modules/ejs/test/ejs.test.js | 329 ------ tools/blog/node_modules/ejs/test/fixtures/user.ejs | 1 - tools/blog/node_modules/glob/.npmignore | 2 - tools/blog/node_modules/glob/.travis.yml | 4 - tools/blog/node_modules/glob/LICENCE | 25 - tools/blog/node_modules/glob/LICENSE | 27 - tools/blog/node_modules/glob/README.md | 233 ----- tools/blog/node_modules/glob/examples/g.js | 9 - tools/blog/node_modules/glob/examples/usr-local.js | 9 - tools/blog/node_modules/glob/glob.js | 601 ----------- .../glob/node_modules/graceful-fs/.npmignore | 1 - .../glob/node_modules/graceful-fs/LICENSE | 23 - .../glob/node_modules/graceful-fs/README.md | 5 - .../glob/node_modules/graceful-fs/graceful-fs.js | 275 ----- .../glob/node_modules/graceful-fs/package.json | 22 - .../glob/node_modules/graceful-fs/test/open.js | 41 - .../glob/node_modules/inherits/README.md | 51 - .../glob/node_modules/inherits/inherits.js | 29 - .../glob/node_modules/inherits/package.json | 25 - .../glob/node_modules/minimatch/.travis.yml | 4 - .../glob/node_modules/minimatch/LICENSE | 23 - .../glob/node_modules/minimatch/README.md | 218 ---- .../glob/node_modules/minimatch/minimatch.js | 1052 -------------------- .../minimatch/node_modules/lru-cache/.npmignore | 1 - .../minimatch/node_modules/lru-cache/AUTHORS | 5 - .../minimatch/node_modules/lru-cache/LICENSE | 23 - .../minimatch/node_modules/lru-cache/README.md | 26 - .../node_modules/lru-cache/lib/lru-cache.js | 156 --- .../minimatch/node_modules/lru-cache/package.json | 45 - .../minimatch/node_modules/lru-cache/test/basic.js | 171 ---- .../minimatch/node_modules/sigmund/LICENSE | 27 - .../minimatch/node_modules/sigmund/README.md | 53 - .../minimatch/node_modules/sigmund/bench.js | 283 ------ .../minimatch/node_modules/sigmund/package.json | 38 - .../minimatch/node_modules/sigmund/sigmund.js | 39 - .../minimatch/node_modules/sigmund/test/basic.js | 24 - .../glob/node_modules/minimatch/package.json | 36 - .../glob/node_modules/minimatch/test/basic.js | 273 ----- .../node_modules/minimatch/test/brace-expand.js | 33 - .../glob/node_modules/minimatch/test/caching.js | 14 - .../glob/node_modules/minimatch/test/defaults.js | 274 ----- tools/blog/node_modules/glob/package.json | 35 - tools/blog/node_modules/glob/test/00-setup.js | 61 -- .../blog/node_modules/glob/test/bash-comparison.js | 119 --- tools/blog/node_modules/glob/test/cwd-test.js | 55 - tools/blog/node_modules/glob/test/mark.js | 63 -- tools/blog/node_modules/glob/test/pause-resume.js | 98 -- tools/blog/node_modules/glob/test/root-nomount.js | 39 - tools/blog/node_modules/glob/test/root.js | 43 - tools/blog/node_modules/glob/test/zz-cleanup.js | 11 - tools/blog/node_modules/marked/.npmignore | 2 - tools/blog/node_modules/marked/LICENSE | 19 - tools/blog/node_modules/marked/Makefile | 9 - tools/blog/node_modules/marked/README.md | 125 --- tools/blog/node_modules/marked/bin/marked | 127 --- tools/blog/node_modules/marked/index.js | 1 - tools/blog/node_modules/marked/lib/marked.js | 791 --------------- tools/blog/node_modules/marked/man/marked.1 | 49 - tools/blog/node_modules/marked/package.json | 40 - tools/blog/node_modules/mkdirp/.npmignore | 2 - tools/blog/node_modules/mkdirp/.travis.yml | 4 - tools/blog/node_modules/mkdirp/LICENSE | 21 - tools/blog/node_modules/mkdirp/README.markdown | 61 -- tools/blog/node_modules/mkdirp/examples/pow.js | 6 - tools/blog/node_modules/mkdirp/index.js | 94 -- tools/blog/node_modules/mkdirp/package.json | 32 - tools/blog/node_modules/mkdirp/test/chmod.js | 38 - tools/blog/node_modules/mkdirp/test/clobber.js | 37 - tools/blog/node_modules/mkdirp/test/mkdirp.js | 28 - tools/blog/node_modules/mkdirp/test/perm.js | 32 - tools/blog/node_modules/mkdirp/test/perm_sync.js | 39 - tools/blog/node_modules/mkdirp/test/race.js | 41 - tools/blog/node_modules/mkdirp/test/rel.js | 32 - tools/blog/node_modules/mkdirp/test/return.js | 25 - tools/blog/node_modules/mkdirp/test/return_sync.js | 24 - tools/blog/node_modules/mkdirp/test/root.js | 18 - tools/blog/node_modules/mkdirp/test/sync.js | 32 - tools/blog/node_modules/mkdirp/test/umask.js | 28 - tools/blog/node_modules/mkdirp/test/umask_sync.js | 32 - tools/blog/node_modules/semver/LICENSE | 23 - tools/blog/node_modules/semver/README.md | 119 --- tools/blog/node_modules/semver/bin/semver | 71 -- tools/blog/node_modules/semver/package.json | 26 - tools/blog/node_modules/semver/semver.js | 305 ------ tools/blog/node_modules/semver/test.js | 405 -------- tools/blog/templates/index.ejs | 1 - 105 files changed, 9690 deletions(-) delete mode 100644 tools/blog/README.md delete mode 100644 tools/blog/generate.js delete mode 100644 tools/blog/node_modules/ejs/.gitmodules delete mode 100644 tools/blog/node_modules/ejs/.npmignore delete mode 100644 tools/blog/node_modules/ejs/History.md delete mode 100644 tools/blog/node_modules/ejs/Makefile delete mode 100644 tools/blog/node_modules/ejs/Readme.md delete mode 100644 tools/blog/node_modules/ejs/benchmark.js delete mode 100644 tools/blog/node_modules/ejs/ejs.js delete mode 100644 tools/blog/node_modules/ejs/ejs.min.js delete mode 100644 tools/blog/node_modules/ejs/examples/client.html delete mode 100644 tools/blog/node_modules/ejs/examples/list.ejs delete mode 100644 tools/blog/node_modules/ejs/examples/list.js delete mode 100644 tools/blog/node_modules/ejs/index.js delete mode 100644 tools/blog/node_modules/ejs/lib/ejs.js delete mode 100644 tools/blog/node_modules/ejs/lib/filters.js delete mode 100644 tools/blog/node_modules/ejs/lib/utils.js delete mode 100644 tools/blog/node_modules/ejs/package.json delete mode 100644 tools/blog/node_modules/ejs/support/compile.js delete mode 100644 tools/blog/node_modules/ejs/test/ejs.test.js delete mode 100644 tools/blog/node_modules/ejs/test/fixtures/user.ejs delete mode 100644 tools/blog/node_modules/glob/.npmignore delete mode 100644 tools/blog/node_modules/glob/.travis.yml delete mode 100644 tools/blog/node_modules/glob/LICENCE delete mode 100644 tools/blog/node_modules/glob/LICENSE delete mode 100644 tools/blog/node_modules/glob/README.md delete mode 100644 tools/blog/node_modules/glob/examples/g.js delete mode 100644 tools/blog/node_modules/glob/examples/usr-local.js delete mode 100644 tools/blog/node_modules/glob/glob.js delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/.npmignore delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/LICENSE delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/README.md delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/graceful-fs.js delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/package.json delete mode 100644 tools/blog/node_modules/glob/node_modules/graceful-fs/test/open.js delete mode 100644 tools/blog/node_modules/glob/node_modules/inherits/README.md delete mode 100644 tools/blog/node_modules/glob/node_modules/inherits/inherits.js delete mode 100644 tools/blog/node_modules/glob/node_modules/inherits/package.json delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/.travis.yml delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/LICENSE delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/README.md delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/minimatch.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/.npmignore delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/AUTHORS delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/package.json delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/test/basic.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/test/brace-expand.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/test/caching.js delete mode 100644 tools/blog/node_modules/glob/node_modules/minimatch/test/defaults.js delete mode 100644 tools/blog/node_modules/glob/package.json delete mode 100644 tools/blog/node_modules/glob/test/00-setup.js delete mode 100644 tools/blog/node_modules/glob/test/bash-comparison.js delete mode 100644 tools/blog/node_modules/glob/test/cwd-test.js delete mode 100644 tools/blog/node_modules/glob/test/mark.js delete mode 100644 tools/blog/node_modules/glob/test/pause-resume.js delete mode 100644 tools/blog/node_modules/glob/test/root-nomount.js delete mode 100644 tools/blog/node_modules/glob/test/root.js delete mode 100644 tools/blog/node_modules/glob/test/zz-cleanup.js delete mode 100644 tools/blog/node_modules/marked/.npmignore delete mode 100644 tools/blog/node_modules/marked/LICENSE delete mode 100644 tools/blog/node_modules/marked/Makefile delete mode 100644 tools/blog/node_modules/marked/README.md delete mode 100755 tools/blog/node_modules/marked/bin/marked delete mode 100644 tools/blog/node_modules/marked/index.js delete mode 100644 tools/blog/node_modules/marked/lib/marked.js delete mode 100644 tools/blog/node_modules/marked/man/marked.1 delete mode 100644 tools/blog/node_modules/marked/package.json delete mode 100644 tools/blog/node_modules/mkdirp/.npmignore delete mode 100644 tools/blog/node_modules/mkdirp/.travis.yml delete mode 100644 tools/blog/node_modules/mkdirp/LICENSE delete mode 100644 tools/blog/node_modules/mkdirp/README.markdown delete mode 100644 tools/blog/node_modules/mkdirp/examples/pow.js delete mode 100644 tools/blog/node_modules/mkdirp/index.js delete mode 100644 tools/blog/node_modules/mkdirp/package.json delete mode 100644 tools/blog/node_modules/mkdirp/test/chmod.js delete mode 100644 tools/blog/node_modules/mkdirp/test/clobber.js delete mode 100644 tools/blog/node_modules/mkdirp/test/mkdirp.js delete mode 100644 tools/blog/node_modules/mkdirp/test/perm.js delete mode 100644 tools/blog/node_modules/mkdirp/test/perm_sync.js delete mode 100644 tools/blog/node_modules/mkdirp/test/race.js delete mode 100644 tools/blog/node_modules/mkdirp/test/rel.js delete mode 100644 tools/blog/node_modules/mkdirp/test/return.js delete mode 100644 tools/blog/node_modules/mkdirp/test/return_sync.js delete mode 100644 tools/blog/node_modules/mkdirp/test/root.js delete mode 100644 tools/blog/node_modules/mkdirp/test/sync.js delete mode 100644 tools/blog/node_modules/mkdirp/test/umask.js delete mode 100644 tools/blog/node_modules/mkdirp/test/umask_sync.js delete mode 100644 tools/blog/node_modules/semver/LICENSE delete mode 100644 tools/blog/node_modules/semver/README.md delete mode 100755 tools/blog/node_modules/semver/bin/semver delete mode 100644 tools/blog/node_modules/semver/package.json delete mode 100644 tools/blog/node_modules/semver/semver.js delete mode 100644 tools/blog/node_modules/semver/test.js delete mode 100644 tools/blog/templates/index.ejs (limited to 'tools') diff --git a/tools/blog/README.md b/tools/blog/README.md deleted file mode 100644 index 52a3be7fd2..0000000000 --- a/tools/blog/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# node-blog-gen - -Generates the node blog from the markdown files in doc/blog/. - - diff --git a/tools/blog/generate.js b/tools/blog/generate.js deleted file mode 100644 index fa101dc0d9..0000000000 --- a/tools/blog/generate.js +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env node -var fs = require('fs'); -var marked = require('marked'); -var mkdirp = require('mkdirp'); -var glob = require('glob'); -var ejs = require('ejs'); -var path = require('path'); -var semver = require('semver'); - -var input = path.resolve(process.argv[2]); -var output = path.resolve(process.argv[3]); -var template = path.resolve(process.argv[4]); -var rssTemplate = path.resolve(process.argv[5]); - -var config = { - postsPerPage: 4 -}; - -console.error("argv=%j", process.argv) - -fs.readFile(template, 'utf8', function(er, contents) { - if (er) throw er; - template = ejs.compile(contents, template); - template.filename = 'index.html'; - fs.readFile(rssTemplate, 'utf8', function(er, contents) { - if (er) throw er; - rssTemplate = ejs.compile(contents, rssTemplate); - rssTemplate.filename = 'index.xml'; - readInput(); - }); -}); - -function readInput() { - glob(input + '/**/*.md', function(er, files) { - if (er) throw er; - readFiles(files); - }); -} - -function readFiles(files) { - var n = files.length; - var data = { files: {}, feeds: {}, posts: {}}; - - files.forEach(function(file) { - fs.readFile(file, 'utf8', next(file)); - }); - - function next(file) { return function(er, contents) { - if (er) throw er; - if (contents) { - contents = parseFile(file, contents); - if (contents) { - data.files[file] = contents - } - } - if (--n === 0) { - buildOutput(data); - } - }} -} - -function parseFile(file, contents) { - var c = contents.split('\n\n'); - var head = c.shift(); - c = c.join('\n\n'); - var post = head.split('\n').reduce(function(set, kv) { - kv = kv.split(':'); - var key = kv.shift().trim(); - var val = kv.join(':').trim(); - set[key] = val; - return set; - }, {}); - if (post.status && post.status !== 'publish') return null; - post.body = c; - post.src = file; - return post; -} - -function buildPermalinks(data) { - Object.keys(data.files).forEach(function(k) { - data.posts[k] = buildPermalink(k, data.files[k]); - }); -} - -function buildPermalink(key, post) { - var data = {}; - data.pageid = post.slug; - data.title = post.title; - data.content = post.content = marked.parse(post.body); - - // Fix for chjj/marked#56 - data.content = post.content = data.content - .replace(/\1<\/a>/g, '$1'); - - data.post = post; - - if (!post.date) throw new Error('post date is required ' + post.src); - else post.date = new Date(post.date); - var d = post.date; - - var y = d.getYear() + 1900; - var m = d.getMonth() + 1; - if (m < 10) m = '0' + m; - var d = d.getDate(); - if (d < 10) d = '0' + d; - var uri = '/' + y + '/' + m + '/' + d + '/' + post.slug + '/'; - post.data = data; - post.uri = uri; - - post.permalink = data.permalink = uri; - return data; -} - -function writeFile(uri, data, templ) { - if (!templ) templ = template; - if (data.uri) - data.uri = path.join(data.uri); - uri = path.join(uri); - var contents = templ(data); - var outdir = path.join(output, uri); - mkdirp(outdir, function(er) { - if (er) throw er; - var file = path.resolve(outdir, templ.filename); - fs.writeFile(file, contents, 'utf8', function(er) { - if (er) throw er; - console.log('wrote: ', data.pageid, path.relative(process.cwd(), file)); - }); - }); -} - -// sort in reverse chronological order -// prune out any releases that are not the most recent on their branch. -function buildFeeds(data) { - // first, sort by date. - var posts = Object.keys(data.posts).map(function(k) { - return data.posts[k].post; - }).sort(function(a, b) { - a = a.date.getTime(); - b = b.date.getTime(); - return (a === b) ? 0 : a > b ? -1 : 1; - }) - - // separate release posts by release families. - var releases = posts.reduce(function(releases, post) { - if (post.category !== 'release') return releases; - var ver = semver.parse(post.version); - if (!ver) return; - var major = +ver[1]; - var minor = +ver[2]; - var patch = +ver[3]; - var family = [major, minor]; - ver = [major, minor, patch, post]; - if (family[1] % 2) family[1]++; - family = family.join('.'); - post.family = family; - releases[family] = releases[family] || []; - releases[family].push(post); - return releases; - }, {}); - - // separate by categories. - var categories = posts.reduce(function(categories, post) { - if (!post.category) return categories; - if (!categories[post.category]) { - categories[post.category] = []; - } - categories[post.category].push(post); - return categories; - }, {}); - - // paginate categories. - for (var cat in categories) { - categories[cat] = paginate(categories[cat], cat); - } - - // show all posts in main feed. - var main = posts; - - // add previous/next based on main feed. - main.forEach(function (post, i, posts) { - post.next = posts[i - 1]; - post.prev = posts[i + 1]; - }) - - // paginate each feed. - main = paginate(main, ''); - - // put previous/next links on orphaned old releases so you can get back - for (var family in releases) { - releases[family].forEach(function(post, i, family) { - if (!post.next) post.next = family[i - 1]; - if (!post.next) post.next = family[0].next; - // if (!post.next) post.next = family[0]; - - if (!post.prev) post.prev = family[i + 1]; - if (!post.prev) post.prev = family[0].prev; - }); - // paginate - releases[family] = paginate(releases[family], 'release-' + family); - } - - // paginate - data.feeds = { - main: main, - categories: categories, - releases: releases - }; -} - -function paginate(set, title) { - var pp = config.postsPerPage || 5 - var pages = []; - for (var i = 0; i < set.length; i += pp) { - pages.push(set.slice(i, i + pp)); - } - var id = title.replace(/[^a-zA-Z0-9.]+/g, '-'); - return { id: id || 'index', pageid: id, posts: set, pages: pages, title: title }; -} - -function writePermalinks(data) { - Object.keys(data.posts).forEach(function(k) { - var post = data.posts[k]; - writeFile(post.permalink, post); - }); -} - -function writeFeeds(data) { - writeFeed(data.feeds.main); - - for (var feed in data.feeds.categories) { - writeFeed(data.feeds.categories[feed]); - } - for (var feed in data.feeds.releases) { - writeFeed(data.feeds.releases[feed]); - } -} - -function writeFeed(feed) { - var title = feed.title; - feed.pages.forEach(function(page, p, pages) { - writePaginated(feed.title, page, p, pages.length, feed.id); - }); -} - -function writePaginated(title, posts, p, total, id) { - var uri = '/' + encodeURIComponent(title) + '/'; - var d = { - title: title, - page: p, - posts: posts, - total: total, - paginated: true, - pageid: id + '-' + p, - uri: uri - }; - if (p === 0) { - writeFile(uri, d); - writeFile('/feed' + uri, d, rssTemplate); - } - writeFile(uri + p, d); - writeFile('/feed' + uri + p, d, rssTemplate); -} - -function buildOutput(data) { - buildPermalinks(data); - buildFeeds(data); - writePermalinks(data); - writeFeeds(data); -} - diff --git a/tools/blog/node_modules/ejs/.gitmodules b/tools/blog/node_modules/ejs/.gitmodules deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tools/blog/node_modules/ejs/.npmignore b/tools/blog/node_modules/ejs/.npmignore deleted file mode 100644 index 020ddac2ce..0000000000 --- a/tools/blog/node_modules/ejs/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -# ignore any vim files: -*.sw[a-z] -vim/.netrwhist -node_modules diff --git a/tools/blog/node_modules/ejs/History.md b/tools/blog/node_modules/ejs/History.md deleted file mode 100644 index 75dc16f51f..0000000000 --- a/tools/blog/node_modules/ejs/History.md +++ /dev/null @@ -1,98 +0,0 @@ - -0.7.1 / 2012-03-26 -================== - - * Fixed exception when using express in production caused by typo. [slaskis] - -0.7.0 / 2012-03-24 -================== - - * Added newline consumption support (`-%>`) [whoatemydomain] - -0.6.1 / 2011-12-09 -================== - - * Fixed `ejs.renderFile()` - -0.6.0 / 2011-12-09 -================== - - * Changed: you no longer need `{ locals: {} }` - -0.5.0 / 2011-11-20 -================== - - * Added express 3.x support - * Added ejs.renderFile() - * Added 'json' filter - * Fixed tests for 0.5.x - -0.4.3 / 2011-06-20 -================== - - * Fixed stacktraces line number when used multiline js expressions [Octave] - -0.4.2 / 2011-05-11 -================== - - * Added client side support - -0.4.1 / 2011-04-21 -================== - - * Fixed error context - -0.4.0 / 2011-04-21 -================== - - * Added; ported jade's error reporting to ejs. [slaskis] - -0.3.1 / 2011-02-23 -================== - - * Fixed optional `compile()` options - -0.3.0 / 2011-02-14 -================== - - * Added 'json' filter [Yuriy Bogdanov] - * Use exported version of parse function to allow monkey-patching [Anatoliy Chakkaev] - -0.2.1 / 2010-10-07 -================== - - * Added filter support - * Fixed _cache_ option. ~4x performance increase - -0.2.0 / 2010-08-05 -================== - - * Added support for global tag config - * Added custom tag support. Closes #5 - * Fixed whitespace bug. Closes #4 - -0.1.0 / 2010-08-04 -================== - - * Faster implementation [ashleydev] - -0.0.4 / 2010-08-02 -================== - - * Fixed single quotes for content outside of template tags. [aniero] - * Changed; `exports.compile()` now expects only "locals" - -0.0.3 / 2010-07-15 -================== - - * Fixed single quotes - -0.0.2 / 2010-07-09 -================== - - * Fixed newline preservation - -0.0.1 / 2010-07-09 -================== - - * Initial release diff --git a/tools/blog/node_modules/ejs/Makefile b/tools/blog/node_modules/ejs/Makefile deleted file mode 100644 index 14b93049da..0000000000 --- a/tools/blog/node_modules/ejs/Makefile +++ /dev/null @@ -1,23 +0,0 @@ - -SRC = $(shell find lib -name "*.js" -type f) -UGLIFY_FLAGS = --no-mangle - -all: ejs.min.js - -test: - @./node_modules/.bin/mocha \ - --ui exports - -ejs.js: $(SRC) - @node support/compile.js $^ - -ejs.min.js: ejs.js - @uglifyjs $(UGLIFY_FLAGS) $< > $@ \ - && du ejs.min.js \ - && du ejs.js - -clean: - rm -f ejs.js - rm -f ejs.min.js - -.PHONY: test \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/Readme.md b/tools/blog/node_modules/ejs/Readme.md deleted file mode 100644 index 8e398fd20c..0000000000 --- a/tools/blog/node_modules/ejs/Readme.md +++ /dev/null @@ -1,151 +0,0 @@ - -# EJS - -Embedded JavaScript templates. - -## Installation - - $ npm install ejs - -## Features - - * Complies with the [Express](http://expressjs.com) view system - * Static caching of intermediate JavaScript - * Unbuffered code for conditionals etc `<% code %>` - * Escapes html by default with `<%= code %>` - * Unescaped buffering with `<%- code %>` - * Supports tag customization - * Filter support for designer-friendly templates - * Client-side support - * Newline slurping with `<% code -%>` or `<% -%>` or `<%= code -%>` or `<%- code -%>` - -## Example - - <% if (user) { %> -

<%= user.name %>

- <% } %> - -## Usage - - ejs.compile(str, options); - // => Function - - ejs.render(str, options); - // => str - -## Options - - - `cache` Compiled functions are cached, requires `filename` - - `filename` Used by `cache` to key caches - - `scope` Function execution context - - `debug` Output generated function body - - `open` Open tag, defaulting to "<%" - - `close` Closing tag, defaulting to "%>" - - * All others are template-local variables - -## Custom tags - -Custom tags can also be applied globally: - - var ejs = require('ejs'); - ejs.open = '{{'; - ejs.close = '}}'; - -Which would make the following a valid template: - -

{{= title }}

- -## Filters - -EJS conditionally supports the concept of "filters". A "filter chain" -is a designer friendly api for manipulating data, without writing JavaScript. - -Filters can be applied by supplying the _:_ modifier, so for example if we wish to take the array `[{ name: 'tj' }, { name: 'mape' }, { name: 'guillermo' }]` and output a list of names we can do this simply with filters: - -Template: - -

<%=: users | map:'name' | join %>

- -Output: - -

Tj, Mape, Guillermo

- -Render call: - - ejs.render(str, { - users: [ - { name: 'tj' }, - { name: 'mape' }, - { name: 'guillermo' } - ] - }); - -Or perhaps capitalize the first user's name for display: - -

<%=: users | first | capitalize %>

- -## Filter list - -Currently these filters are available: - - - first - - last - - capitalize - - downcase - - upcase - - sort - - sort_by:'prop' - - size - - length - - plus:n - - minus:n - - times:n - - divided_by:n - - join:'val' - - truncate:n - - truncate_words:n - - replace:pattern,substitution - - prepend:val - - append:val - - map:'prop' - - reverse - - get:'prop' - -## Adding filters - - To add a filter simply add a method to the `.filters` object: - -```js -ejs.filters.last = function(obj) { - return obj[obj.length - 1]; -}; -``` - -## client-side support - - include `./ejs.js` or `./ejs.min.js` and `require("ejs").compile(str)`. - -## License - -(The MIT License) - -Copyright (c) 2009-2010 TJ Holowaychuk <tj@vision-media.ca> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tools/blog/node_modules/ejs/benchmark.js b/tools/blog/node_modules/ejs/benchmark.js deleted file mode 100644 index 7b267e1603..0000000000 --- a/tools/blog/node_modules/ejs/benchmark.js +++ /dev/null @@ -1,14 +0,0 @@ - - -var ejs = require('./lib/ejs'), - str = '<% if (foo) { %>

<%= foo %>

<% } %>', - times = 50000; - -console.log('rendering ' + times + ' times'); - -var start = new Date; -while (times--) { - ejs.render(str, { cache: true, filename: 'test', locals: { foo: 'bar' }}); -} - -console.log('took ' + (new Date - start) + 'ms'); \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/ejs.js b/tools/blog/node_modules/ejs/ejs.js deleted file mode 100644 index b0fa93b12b..0000000000 --- a/tools/blog/node_modules/ejs/ejs.js +++ /dev/null @@ -1,567 +0,0 @@ - -// CommonJS require() - -function require(p){ - if ('fs' == p) return {}; - var path = require.resolve(p) - , mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - } - -require.modules = {}; - -require.resolve = function (path){ - var orig = path - , reg = path + '.js' - , index = path + '/index.js'; - return require.modules[reg] && reg - || require.modules[index] && index - || orig; - }; - -require.register = function (path, fn){ - require.modules[path] = fn; - }; - -require.relative = function (parent) { - return function(p){ - if ('.' != p.substr(0, 1)) return require(p); - - var path = parent.split('/') - , segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); - }; - }; - - -require.register("ejs.js", function(module, exports, require){ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./utils') - , fs = require('fs'); - -/** - * Library version. - */ - -exports.version = '0.6.1'; - -/** - * Filters. - * - * @type Object - */ - -var filters = exports.filters = require('./filters'); - -/** - * Intermediate js cache. - * - * @type Object - */ - -var cache = {}; - -/** - * Clear intermediate js cache. - * - * @api public - */ - -exports.clearCache = function(){ - cache = {}; -}; - -/** - * Translate filtered code into function calls. - * - * @param {String} js - * @return {String} - * @api private - */ - -function filtered(js) { - return js.substr(1).split('|').reduce(function(js, filter){ - var parts = filter.split(':') - , name = parts.shift() - , args = parts.shift() || ''; - if (args) args = ', ' + args; - return 'filters.' + name + '(' + js + args + ')'; - }); -}; - -/** - * Re-throw the given `err` in context to the - * `str` of ejs, `filename`, and `lineno`. - * - * @param {Error} err - * @param {String} str - * @param {String} filename - * @param {String} lineno - * @api private - */ - -function rethrow(err, str, filename, lineno){ - var lines = str.split('\n') - , start = Math.max(lineno - 3, 0) - , end = Math.min(lines.length, lineno + 3); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' >> ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'ejs') + ':' - + lineno + '\n' - + context + '\n\n' - + err.message; - - throw err; -} - -/** - * Parse the given `str` of ejs, returning the function body. - * - * @param {String} str - * @return {String} - * @api public - */ - -var parse = exports.parse = function(str, options){ - var options = options || {} - , open = options.open || exports.open || '<%' - , close = options.close || exports.close || '%>'; - - var buf = [ - "var buf = [];" - , "\nwith (locals) {" - , "\n buf.push('" - ]; - - var lineno = 1; - - for (var i = 0, len = str.length; i < len; ++i) { - if (str.slice(i, open.length + i) == open) { - i += open.length - - var prefix, postfix, line = '__stack.lineno=' + lineno; - switch (str.substr(i, 1)) { - case '=': - prefix = "', escape((" + line + ', '; - postfix = ")), '"; - ++i; - break; - case '-': - prefix = "', (" + line + ', '; - postfix = "), '"; - ++i; - break; - default: - prefix = "');" + line + ';'; - postfix = "; buf.push('"; - } - - var end = str.indexOf(close, i) - , js = str.substring(i, end) - , start = i - , n = 0; - - while (~(n = js.indexOf("\n", n))) n++, lineno++; - if (js.substr(0, 1) == ':') js = filtered(js); - buf.push(prefix, js, postfix); - i += end - start + close.length - 1; - - } else if (str.substr(i, 1) == "\\") { - buf.push("\\\\"); - } else if (str.substr(i, 1) == "'") { - buf.push("\\'"); - } else if (str.substr(i, 1) == "\r") { - buf.push(" "); - } else if (str.substr(i, 1) == "\n") { - buf.push("\\n"); - lineno++; - } else { - buf.push(str.substr(i, 1)); - } - } - - buf.push("');\n}\nreturn buf.join('');"); - return buf.join(''); -}; - -/** - * Compile the given `str` of ejs into a `Function`. - * - * @param {String} str - * @param {Object} options - * @return {Function} - * @api public - */ - -var compile = exports.compile = function(str, options){ - options = options || {}; - - var input = JSON.stringify(str) - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined'; - - // Adds the fancy stack trace meta info - str = [ - 'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };', - rethrow.toString(), - 'try {', - exports.parse(str, options), - '} catch (err) {', - ' rethrow(err, __stack.input, __stack.filename, __stack.lineno);', - '}' - ].join("\n"); - - if (options.debug) console.log(str); - var fn = new Function('locals, filters, escape', str); - return function(locals){ - return fn.call(this, locals, filters, utils.escape); - } -}; - -/** - * Render the given `str` of ejs. - * - * Options: - * - * - `locals` Local variables object - * - `cache` Compiled functions are cached, requires `filename` - * - `filename` Used by `cache` to key caches - * - `scope` Function execution context - * - `debug` Output generated function body - * - `open` Open tag, defaulting to "<%" - * - `close` Closing tag, defaulting to "%>" - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api public - */ - -exports.render = function(str, options){ - var fn - , options = options || {}; - - if (options.cache) { - if (options.filename) { - fn = cache[options.filename] || (cache[options.filename] = compile(str, options)); - } else { - throw new Error('"cache" option requires "filename".'); - } - } else { - fn = compile(str, options); - } - - options.__proto__ = options.locals; - return fn.call(options.scope, options); -}; - -/** - * Render an EJS file at the given `path` and callback `fn(err, str)`. - * - * @param {String} path - * @param {Object|Function} options or callback - * @param {Function} fn - * @api public - */ - -exports.renderFile = function(path, options, fn){ - var key = path + ':string'; - - if ('function' == typeof options) { - fn = options, options = {}; - } - - options.filename = path; - - try { - var str = options.cache - ? exports.cache[key] || (exports.cache[key] = fs.readFileSync(path, 'utf8')) - : fs.readFileSync(path, 'utf8'); - - fn(null, exports.render(str, options)); - } catch (err) { - fn(err); - } -}; - -// express support - -exports.__express = exports.renderFile; - -/** - * Expose to require(). - */ - -if (require.extensions) { - require.extensions['.ejs'] = function(module, filename) { - source = require('fs').readFileSync(filename, 'utf-8'); - module._compile(compile(source, {}), filename); - }; -} else if (require.registerExtension) { - require.registerExtension('.ejs', function(src) { - return compile(src, {}); - }); -} - -}); // module: ejs.js - -require.register("filters.js", function(module, exports, require){ - -/*! - * EJS - Filters - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * First element of the target `obj`. - */ - -exports.first = function(obj) { - return obj[0]; -}; - -/** - * Last element of the target `obj`. - */ - -exports.last = function(obj) { - return obj[obj.length - 1]; -}; - -/** - * Capitalize the first letter of the target `str`. - */ - -exports.capitalize = function(str){ - str = String(str); - return str[0].toUpperCase() + str.substr(1, str.length); -}; - -/** - * Downcase the target `str`. - */ - -exports.downcase = function(str){ - return String(str).toLowerCase(); -}; - -/** - * Uppercase the target `str`. - */ - -exports.upcase = function(str){ - return String(str).toUpperCase(); -}; - -/** - * Sort the target `obj`. - */ - -exports.sort = function(obj){ - return Object.create(obj).sort(); -}; - -/** - * Sort the target `obj` by the given `prop` ascending. - */ - -exports.sort_by = function(obj, prop){ - return Object.create(obj).sort(function(a, b){ - a = a[prop], b = b[prop]; - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); -}; - -/** - * Size or length of the target `obj`. - */ - -exports.size = exports.length = function(obj) { - return obj.length; -}; - -/** - * Add `a` and `b`. - */ - -exports.plus = function(a, b){ - return Number(a) + Number(b); -}; - -/** - * Subtract `b` from `a`. - */ - -exports.minus = function(a, b){ - return Number(a) - Number(b); -}; - -/** - * Multiply `a` by `b`. - */ - -exports.times = function(a, b){ - return Number(a) * Number(b); -}; - -/** - * Divide `a` by `b`. - */ - -exports.divided_by = function(a, b){ - return Number(a) / Number(b); -}; - -/** - * Join `obj` with the given `str`. - */ - -exports.join = function(obj, str){ - return obj.join(str || ', '); -}; - -/** - * Truncate `str` to `len`. - */ - -exports.truncate = function(str, len){ - str = String(str); - return str.substr(0, len); -}; - -/** - * Truncate `str` to `n` words. - */ - -exports.truncate_words = function(str, n){ - var str = String(str) - , words = str.split(/ +/); - return words.slice(0, n).join(' '); -}; - -/** - * Replace `pattern` with `substitution` in `str`. - */ - -exports.replace = function(str, pattern, substitution){ - return String(str).replace(pattern, substitution || ''); -}; - -/** - * Prepend `val` to `obj`. - */ - -exports.prepend = function(obj, val){ - return Array.isArray(obj) - ? [val].concat(obj) - : val + obj; -}; - -/** - * Append `val` to `obj`. - */ - -exports.append = function(obj, val){ - return Array.isArray(obj) - ? obj.concat(val) - : obj + val; -}; - -/** - * Map the given `prop`. - */ - -exports.map = function(arr, prop){ - return arr.map(function(obj){ - return obj[prop]; - }); -}; - -/** - * Reverse the given `obj`. - */ - -exports.reverse = function(obj){ - return Array.isArray(obj) - ? obj.reverse() - : String(obj).split('').reverse().join(''); -}; - -/** - * Get `prop` of the given `obj`. - */ - -exports.get = function(obj, prop){ - return obj[prop]; -}; - -/** - * Packs the given `obj` into json string - */ -exports.json = function(obj){ - return JSON.stringify(obj); -}; -}); // module: filters.js - -require.register("utils.js", function(module, exports, require){ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - -}); // module: utils.js diff --git a/tools/blog/node_modules/ejs/ejs.min.js b/tools/blog/node_modules/ejs/ejs.min.js deleted file mode 100644 index b87881320e..0000000000 --- a/tools/blog/node_modules/ejs/ejs.min.js +++ /dev/null @@ -1,2 +0,0 @@ -// CommonJS require() -function require(p){if("fs"==p)return{};var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');mod.exports||(mod.exports={},mod.call(mod.exports,mod,mod.exports,require.relative(path)));return mod.exports}require.modules={},require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&®||require.modules[index]&&index||orig},require.register=function(path,fn){require.modules[path]=fn},require.relative=function(parent){return function(p){if("."!=p.substr(0,1))return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i> ":" ")+curr+"| "+line}).join("\n");err.path=filename,err.message=(filename||"ejs")+":"+lineno+"\n"+context+"\n\n"+err.message;throw err}var parse=exports.parse=function(str,options){var options=options||{},open=options.open||exports.open||"<%",close=options.close||exports.close||"%>",buf=["var buf = [];","\nwith (locals) {","\n buf.push('"],lineno=1;for(var i=0,len=str.length;ib)return 1;if(a/g,">").replace(/"/g,""")}}) \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/examples/client.html b/tools/blog/node_modules/ejs/examples/client.html deleted file mode 100644 index 51ce0b4ced..0000000000 --- a/tools/blog/node_modules/ejs/examples/client.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/examples/list.ejs b/tools/blog/node_modules/ejs/examples/list.ejs deleted file mode 100644 index d571330aee..0000000000 --- a/tools/blog/node_modules/ejs/examples/list.ejs +++ /dev/null @@ -1,7 +0,0 @@ -<% if (names.length) { %> -
    - <% names.forEach(function(name){ %> -
  • <%= name %>
  • - <% }) %> -
-<% } %> \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/examples/list.js b/tools/blog/node_modules/ejs/examples/list.js deleted file mode 100644 index ec614ed624..0000000000 --- a/tools/blog/node_modules/ejs/examples/list.js +++ /dev/null @@ -1,14 +0,0 @@ - -/** - * Module dependencies. - */ - -var ejs = require('../') - , fs = require('fs') - , str = fs.readFileSync(__dirname + '/list.ejs', 'utf8'); - -var ret = ejs.render(str, { - names: ['foo', 'bar', 'baz'] -}); - -console.log(ret); \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/index.js b/tools/blog/node_modules/ejs/index.js deleted file mode 100644 index 20bf71a3fc..0000000000 --- a/tools/blog/node_modules/ejs/index.js +++ /dev/null @@ -1,2 +0,0 @@ - -module.exports = require('./lib/ejs'); \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/lib/ejs.js b/tools/blog/node_modules/ejs/lib/ejs.js deleted file mode 100644 index e87b98ea55..0000000000 --- a/tools/blog/node_modules/ejs/lib/ejs.js +++ /dev/null @@ -1,298 +0,0 @@ - -/*! - * EJS - * Copyright(c) 2012 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var utils = require('./utils') - , fs = require('fs'); - -/** - * Library version. - */ - -exports.version = '0.7.1'; - -/** - * Filters. - * - * @type Object - */ - -var filters = exports.filters = require('./filters'); - -/** - * Intermediate js cache. - * - * @type Object - */ - -var cache = {}; - -/** - * Clear intermediate js cache. - * - * @api public - */ - -exports.clearCache = function(){ - cache = {}; -}; - -/** - * Translate filtered code into function calls. - * - * @param {String} js - * @return {String} - * @api private - */ - -function filtered(js) { - return js.substr(1).split('|').reduce(function(js, filter){ - var parts = filter.split(':') - , name = parts.shift() - , args = parts.shift() || ''; - if (args) args = ', ' + args; - return 'filters.' + name + '(' + js + args + ')'; - }); -}; - -/** - * Re-throw the given `err` in context to the - * `str` of ejs, `filename`, and `lineno`. - * - * @param {Error} err - * @param {String} str - * @param {String} filename - * @param {String} lineno - * @api private - */ - -function rethrow(err, str, filename, lineno){ - var lines = str.split('\n') - , start = Math.max(lineno - 3, 0) - , end = Math.min(lines.length, lineno + 3); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' >> ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'ejs') + ':' - + lineno + '\n' - + context + '\n\n' - + err.message; - - throw err; -} - -/** - * Parse the given `str` of ejs, returning the function body. - * - * @param {String} str - * @return {String} - * @api public - */ - -var parse = exports.parse = function(str, options){ - var options = options || {} - , open = options.open || exports.open || '<%' - , close = options.close || exports.close || '%>'; - - var buf = [ - "var buf = [];" - , "\nwith (locals) {" - , "\n buf.push('" - ]; - - var lineno = 1; - - var consumeEOL = false; - for (var i = 0, len = str.length; i < len; ++i) { - if (str.slice(i, open.length + i) == open) { - i += open.length - - var prefix, postfix, line = '__stack.lineno=' + lineno; - switch (str.substr(i, 1)) { - case '=': - prefix = "', escape((" + line + ', '; - postfix = ")), '"; - ++i; - break; - case '-': - prefix = "', (" + line + ', '; - postfix = "), '"; - ++i; - break; - default: - prefix = "');" + line + ';'; - postfix = "; buf.push('"; - } - - var end = str.indexOf(close, i) - , js = str.substring(i, end) - , start = i - , n = 0; - - if ('-' == js[js.length-1]){ - js = js.substring(0, js.length - 2); - consumeEOL = true; - } - - while (~(n = js.indexOf("\n", n))) n++, lineno++; - if (js.substr(0, 1) == ':') js = filtered(js); - buf.push(prefix, js, postfix); - i += end - start + close.length - 1; - - } else if (str.substr(i, 1) == "\\") { - buf.push("\\\\"); - } else if (str.substr(i, 1) == "'") { - buf.push("\\'"); - } else if (str.substr(i, 1) == "\r") { - buf.push(" "); - } else if (str.substr(i, 1) == "\n") { - if (consumeEOL) { - consumeEOL = false; - } else { - buf.push("\\n"); - lineno++; - } - } else { - buf.push(str.substr(i, 1)); - } - } - - buf.push("');\n}\nreturn buf.join('');"); - return buf.join(''); -}; - -/** - * Compile the given `str` of ejs into a `Function`. - * - * @param {String} str - * @param {Object} options - * @return {Function} - * @api public - */ - -var compile = exports.compile = function(str, options){ - options = options || {}; - - var input = JSON.stringify(str) - , filename = options.filename - ? JSON.stringify(options.filename) - : 'undefined'; - - // Adds the fancy stack trace meta info - str = [ - 'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };', - rethrow.toString(), - 'try {', - exports.parse(str, options), - '} catch (err) {', - ' rethrow(err, __stack.input, __stack.filename, __stack.lineno);', - '}' - ].join("\n"); - - if (options.debug) console.log(str); - var fn = new Function('locals, filters, escape', str); - return function(locals){ - return fn.call(this, locals, filters, utils.escape); - } -}; - -/** - * Render the given `str` of ejs. - * - * Options: - * - * - `locals` Local variables object - * - `cache` Compiled functions are cached, requires `filename` - * - `filename` Used by `cache` to key caches - * - `scope` Function execution context - * - `debug` Output generated function body - * - `open` Open tag, defaulting to "<%" - * - `close` Closing tag, defaulting to "%>" - * - * @param {String} str - * @param {Object} options - * @return {String} - * @api public - */ - -exports.render = function(str, options){ - var fn - , options = options || {}; - - if (options.cache) { - if (options.filename) { - fn = cache[options.filename] || (cache[options.filename] = compile(str, options)); - } else { - throw new Error('"cache" option requires "filename".'); - } - } else { - fn = compile(str, options); - } - - options.__proto__ = options.locals; - return fn.call(options.scope, options); -}; - -/** - * Render an EJS file at the given `path` and callback `fn(err, str)`. - * - * @param {String} path - * @param {Object|Function} options or callback - * @param {Function} fn - * @api public - */ - -exports.renderFile = function(path, options, fn){ - var key = path + ':string'; - - if ('function' == typeof options) { - fn = options, options = {}; - } - - options.filename = path; - - try { - var str = options.cache - ? cache[key] || (cache[key] = fs.readFileSync(path, 'utf8')) - : fs.readFileSync(path, 'utf8'); - - fn(null, exports.render(str, options)); - } catch (err) { - fn(err); - } -}; - -// express support - -exports.__express = exports.renderFile; - -/** - * Expose to require(). - */ - -if (require.extensions) { - require.extensions['.ejs'] = function(module, filename) { - source = require('fs').readFileSync(filename, 'utf-8'); - module._compile(compile(source, {}), filename); - }; -} else if (require.registerExtension) { - require.registerExtension('.ejs', function(src) { - return compile(src, {}); - }); -} diff --git a/tools/blog/node_modules/ejs/lib/filters.js b/tools/blog/node_modules/ejs/lib/filters.js deleted file mode 100644 index d425c8d89e..0000000000 --- a/tools/blog/node_modules/ejs/lib/filters.js +++ /dev/null @@ -1,198 +0,0 @@ - -/*! - * EJS - Filters - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * First element of the target `obj`. - */ - -exports.first = function(obj) { - return obj[0]; -}; - -/** - * Last element of the target `obj`. - */ - -exports.last = function(obj) { - return obj[obj.length - 1]; -}; - -/** - * Capitalize the first letter of the target `str`. - */ - -exports.capitalize = function(str){ - str = String(str); - return str[0].toUpperCase() + str.substr(1, str.length); -}; - -/** - * Downcase the target `str`. - */ - -exports.downcase = function(str){ - return String(str).toLowerCase(); -}; - -/** - * Uppercase the target `str`. - */ - -exports.upcase = function(str){ - return String(str).toUpperCase(); -}; - -/** - * Sort the target `obj`. - */ - -exports.sort = function(obj){ - return Object.create(obj).sort(); -}; - -/** - * Sort the target `obj` by the given `prop` ascending. - */ - -exports.sort_by = function(obj, prop){ - return Object.create(obj).sort(function(a, b){ - a = a[prop], b = b[prop]; - if (a > b) return 1; - if (a < b) return -1; - return 0; - }); -}; - -/** - * Size or length of the target `obj`. - */ - -exports.size = exports.length = function(obj) { - return obj.length; -}; - -/** - * Add `a` and `b`. - */ - -exports.plus = function(a, b){ - return Number(a) + Number(b); -}; - -/** - * Subtract `b` from `a`. - */ - -exports.minus = function(a, b){ - return Number(a) - Number(b); -}; - -/** - * Multiply `a` by `b`. - */ - -exports.times = function(a, b){ - return Number(a) * Number(b); -}; - -/** - * Divide `a` by `b`. - */ - -exports.divided_by = function(a, b){ - return Number(a) / Number(b); -}; - -/** - * Join `obj` with the given `str`. - */ - -exports.join = function(obj, str){ - return obj.join(str || ', '); -}; - -/** - * Truncate `str` to `len`. - */ - -exports.truncate = function(str, len){ - str = String(str); - return str.substr(0, len); -}; - -/** - * Truncate `str` to `n` words. - */ - -exports.truncate_words = function(str, n){ - var str = String(str) - , words = str.split(/ +/); - return words.slice(0, n).join(' '); -}; - -/** - * Replace `pattern` with `substitution` in `str`. - */ - -exports.replace = function(str, pattern, substitution){ - return String(str).replace(pattern, substitution || ''); -}; - -/** - * Prepend `val` to `obj`. - */ - -exports.prepend = function(obj, val){ - return Array.isArray(obj) - ? [val].concat(obj) - : val + obj; -}; - -/** - * Append `val` to `obj`. - */ - -exports.append = function(obj, val){ - return Array.isArray(obj) - ? obj.concat(val) - : obj + val; -}; - -/** - * Map the given `prop`. - */ - -exports.map = function(arr, prop){ - return arr.map(function(obj){ - return obj[prop]; - }); -}; - -/** - * Reverse the given `obj`. - */ - -exports.reverse = function(obj){ - return Array.isArray(obj) - ? obj.reverse() - : String(obj).split('').reverse().join(''); -}; - -/** - * Get `prop` of the given `obj`. - */ - -exports.get = function(obj, prop){ - return obj[prop]; -}; - -/** - * Packs the given `obj` into json string - */ -exports.json = function(obj){ - return JSON.stringify(obj); -}; \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/lib/utils.js b/tools/blog/node_modules/ejs/lib/utils.js deleted file mode 100644 index 8d569d6f23..0000000000 --- a/tools/blog/node_modules/ejs/lib/utils.js +++ /dev/null @@ -1,23 +0,0 @@ - -/*! - * EJS - * Copyright(c) 2010 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function(html){ - return String(html) - .replace(/&(?!\w+;)/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); -}; - \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/package.json b/tools/blog/node_modules/ejs/package.json deleted file mode 100644 index 0458a44465..0000000000 --- a/tools/blog/node_modules/ejs/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "ejs", - "description": "Embedded JavaScript templates", - "version": "0.7.1", - "author": { - "name": "TJ Holowaychuk", - "email": "tj@vision-media.ca" - }, - "keywords": [ - "template", - "engine", - "ejs" - ], - "devDependencies": { - "mocha": "*" - }, - "main": "./lib/ejs.js", - "_id": "ejs@0.7.1", - "dist": { - "shasum": "9ed557b7e65f9f1adf5473060d079141ad7e680b" - }, - "_from": "ejs" -} diff --git a/tools/blog/node_modules/ejs/support/compile.js b/tools/blog/node_modules/ejs/support/compile.js deleted file mode 100644 index 95cafc88d0..0000000000 --- a/tools/blog/node_modules/ejs/support/compile.js +++ /dev/null @@ -1,174 +0,0 @@ - -/** - * Module dependencies. - */ - -var fs = require('fs'); - -/** - * Arguments. - */ - -var args = process.argv.slice(2) - , pending = args.length - , files = {}; - -console.log(''); - -// parse arguments - -args.forEach(function(file){ - var mod = file.replace('lib/', ''); - fs.readFile(file, 'utf8', function(err, js){ - if (err) throw err; - console.log(' \033[90mcompile : \033[0m\033[36m%s\033[0m', file); - files[file] = parse(js); - --pending || compile(); - }); -}); - -/** - * Parse the given `js`. - */ - -function parse(js) { - return parseInheritance(parseConditionals(js)); -} - -/** - * Parse __proto__. - */ - -function parseInheritance(js) { - return js - .replace(/^ *(\w+)\.prototype\.__proto__ * = *(\w+)\.prototype *;?/gm, function(_, child, parent){ - return child + '.prototype = new ' + parent + ';\n' - + child + '.prototype.constructor = '+ child + ';\n'; - }); -} - -/** - * Parse the given `js`, currently supporting: - * - * 'if' ['node' | 'browser'] - * 'end' - * - */ - -function parseConditionals(js) { - var lines = js.split('\n') - , len = lines.length - , buffer = true - , browser = false - , buf = [] - , line - , cond; - - for (var i = 0; i < len; ++i) { - line = lines[i]; - if (/^ *\/\/ *if *(node|browser)/gm.exec(line)) { - cond = RegExp.$1; - buffer = browser = 'browser' == cond; - } else if (/^ *\/\/ *end/.test(line)) { - buffer = true; - browser = false; - } else if (browser) { - buf.push(line.replace(/^( *)\/\//, '$1')); - } else if (buffer) { - buf.push(line); - } - } - - return buf.join('\n'); -} - -/** - * Compile the files. - */ - -function compile() { - var buf = ''; - buf += '\n// CommonJS require()\n\n'; - buf += browser.require + '\n\n'; - buf += 'require.modules = {};\n\n'; - buf += 'require.resolve = ' + browser.resolve + ';\n\n'; - buf += 'require.register = ' + browser.register + ';\n\n'; - buf += 'require.relative = ' + browser.relative + ';\n\n'; - args.forEach(function(file){ - var js = files[file]; - file = file.replace('lib/', ''); - buf += '\nrequire.register("' + file + '", function(module, exports, require){\n'; - buf += js; - buf += '\n}); // module: ' + file + '\n'; - }); - fs.writeFile('ejs.js', buf, function(err){ - if (err) throw err; - console.log(' \033[90m create : \033[0m\033[36m%s\033[0m', 'ejs.js'); - console.log(); - }); -} - -// refactored version of weepy's -// https://github.com/weepy/brequire/blob/master/browser/brequire.js - -var browser = { - - /** - * Require a module. - */ - - require: function require(p){ - if ('fs' == p) return {}; - var path = require.resolve(p) - , mod = require.modules[path]; - if (!mod) throw new Error('failed to require "' + p + '"'); - if (!mod.exports) { - mod.exports = {}; - mod.call(mod.exports, mod, mod.exports, require.relative(path)); - } - return mod.exports; - }, - - /** - * Resolve module path. - */ - - resolve: function(path){ - var orig = path - , reg = path + '.js' - , index = path + '/index.js'; - return require.modules[reg] && reg - || require.modules[index] && index - || orig; - }, - - /** - * Return relative require(). - */ - - relative: function(parent) { - return function(p){ - if ('.' != p.substr(0, 1)) return require(p); - - var path = parent.split('/') - , segs = p.split('/'); - path.pop(); - - for (var i = 0; i < segs.length; i++) { - var seg = segs[i]; - if ('..' == seg) path.pop(); - else if ('.' != seg) path.push(seg); - } - - return require(path.join('/')); - }; - }, - - /** - * Register a module. - */ - - register: function(path, fn){ - require.modules[path] = fn; - } -}; \ No newline at end of file diff --git a/tools/blog/node_modules/ejs/test/ejs.test.js b/tools/blog/node_modules/ejs/test/ejs.test.js deleted file mode 100644 index 54b8d2dacc..0000000000 --- a/tools/blog/node_modules/ejs/test/ejs.test.js +++ /dev/null @@ -1,329 +0,0 @@ - -/** - * Module dependencies. - */ - -var ejs = require('../') - , assert = require('assert'); - -module.exports = { - 'test .version': function(){ - assert.ok(/^\d+\.\d+\.\d+$/.test(ejs.version), 'Test .version format'); - }, - - 'test html': function(){ - assert.equal('

yay

', ejs.render('

yay

')); - }, - - 'test renderFile': function(){ - var html = '

tj

', - str = '

<%= name %>

', - options = { name: 'tj', open: '{', close: '}' }; - - ejs.renderFile(__dirname + '/fixtures/user.ejs', options, function(err, res){ - assert.ok(!err); - assert.equal(res, html); - }) - }, - - 'test buffered code': function(){ - var html = '

tj

', - str = '

<%= name %>

', - locals = { name: 'tj' }; - assert.equal(html, ejs.render(str, { locals: locals })); - }, - - 'test unbuffered code': function(){ - var html = '

tj

', - str = '<% if (name) { %>

<%= name %>

<% } %>', - locals = { name: 'tj' }; - assert.equal(html, ejs.render(str, { locals: locals })); - }, - - 'test `scope` option': function(){ - var html = '

tj

', - str = '

<%= this %>

'; - assert.equal(html, ejs.render(str, { scope: 'tj' })); - }, - - 'test escaping': function(){ - assert.equal('<script>', ejs.render('<%= "