grunt-pages
Advanced tools
Comparing version 0.3.3 to 0.4.0
@@ -1,1 +0,1 @@ | ||
{"posts":[{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-1.html","url":"blog/posts/post-1.html"},{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-2.html","url":"blog/posts/post-2.html"}],"data":{"test":1}} | ||
{"posts":[{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-1/","dest":"dev/blog/posts/post-1/index.html"},{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-2/","dest":"dev/blog/posts/post-2/index.html"}],"data":{"test":1}} |
@@ -1,1 +0,1 @@ | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/Post_2.html","url":"blog/posts/Post_2.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/Post_1.html","url":"blog/posts/Post_1.html"}],"data":{"test":0}} | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/Post_2/","dest":"dev/blog/posts/Post_2/index.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/Post_1/","dest":"dev/blog/posts/Post_1/index.html"}],"data":{"test":0}} |
@@ -1,1 +0,1 @@ | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-2.html","url":"blog/posts/post-2.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-1.html","url":"blog/posts/post-1.html"}],"data":{"test":0}} | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-2/","dest":"dev/blog/posts/post-2/index.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-1/","dest":"dev/blog/posts/post-1/index.html"}],"data":{"test":0}} |
@@ -1,1 +0,1 @@ | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-2.html","url":"blog/posts/post-2.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","dest":"dev/blog/posts/post-1.html","url":"blog/posts/post-1.html"}],"data":{"test":0}} | ||
{"posts":[{"title":"Post 2","date":"2013-05-13T00:00:00.000Z","tags":["JavaScript","Tips"],"sourcePath":"test/fixtures/posts/post2.md","lastModified":"2013-07-20T23:45:51.000Z","content":"<p>Here's some alerts:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"k\">for</span> <span class=\"p\">(</span><span class=\"kd\">var</span> <span class=\"nx\">i</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">;</span> <span class=\"nx\">i</span> <span class=\"o\"><</span> <span class=\"nx\">i</span><span class=\"o\">++</span><span class=\"p\">)</span> <span class=\"p\">{</span>\n <span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"nx\">i</span><span class=\"p\">);</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-2/","dest":"dev/blog/posts/post-2/index.html"},{"title":"Post 1","date":"2013-05-12T00:00:00.000Z","tags":["JavaScript","Tutorial"],"sourcePath":"test/fixtures/posts/post1.md","lastModified":"2013-08-01T03:06:51.000Z","content":"<p>This is a JavaScript object:</p>\n<pre><code class=\"lang-js\"><div class=\"highlight\"><pre><span class=\"p\">{</span>\n <span class=\"nx\">myString</span><span class=\"o\">:</span> <span class=\"s1\">''</span><span class=\"p\">,</span>\n <span class=\"nx\">num</span><span class=\"o\">:</span> <span class=\"mi\">4</span>\n<span class=\"p\">}</span>\n</pre></div>\n</code></pre>\n","url":"blog/posts/post-1/","dest":"dev/blog/posts/post-1/index.html"}],"data":{"test":0}} |
@@ -16,1 +16,5 @@ # Project Philosophy | ||
The goal is to test any new features in the integration test file and test any changes to library method logic in the unit test file. | ||
## Performance | ||
To see how fast grunt-pages is running, add the `--bench` flag. This will log the time it took to run the task after it is completed. The goal is to make grunt-pages run as fast as possible by using caching for both template rendering and post parsing and also optimizing the logic. |
{ | ||
"name": "grunt-pages", | ||
"version": "0.3.3", | ||
"version": "0.4.0", | ||
"description": "Grunt task to create pages using markdown and templates", | ||
@@ -27,3 +27,4 @@ "main": "Gruntfile.js", | ||
"should": "~1.2.2", | ||
"sinon": "~1.7.3" | ||
"sinon": "~1.7.3", | ||
"grunt-release": "~0.4.0" | ||
}, | ||
@@ -30,0 +31,0 @@ "peerDependencies": { |
@@ -32,3 +32,3 @@ # grunt-pages | ||
layout: 'src/layouts/post.jade', | ||
url: 'blog/posts/:title' | ||
url: 'blog/posts/:title/' | ||
} | ||
@@ -147,3 +147,3 @@ } | ||
layout: 'src/layouts/post.jade', | ||
url: 'blog/posts/:title' | ||
url: 'blog/posts/:title/' | ||
} | ||
@@ -197,3 +197,3 @@ } | ||
layout: 'src/layouts/post.jade', | ||
url: 'posts/:title' | ||
url: 'posts/:title/' | ||
} | ||
@@ -342,2 +342,6 @@ } | ||
**Breaking changes:** | ||
- Paginated pages no longer have a `currentPage` as a property of the current page in the `pages` array, rather it is exposed as a global variable called `currentIndex` for easier accesibility. | ||
**0.2.5** - Fixed metadata parsing bug, added `formatPostUrl` option & added `pagination.url` option. | ||
@@ -344,0 +348,0 @@ |
@@ -48,2 +48,3 @@ /* | ||
// Create a reference to the the context object and task options so that they are available to all lib methods | ||
_this = this; | ||
@@ -209,4 +210,4 @@ options = this.options(); | ||
* Renders posts and pages once all posts have been parsed | ||
* @param {Array} postCollection Collection of parsed posts with the content and metadata properties | ||
* @param {String} cacheFile Pathname of file to write post data to for future caching of unmodified posts | ||
* @param {Array} postCollection Collection of parsed posts with the content and metadata properties | ||
* @param {String} cacheFile Pathname of file to write post data to for future caching of unmodified posts | ||
* @param {Function} done Callback to call once grunt-pages is done | ||
@@ -221,4 +222,4 @@ */ | ||
lib.setPostUrls(postCollection); | ||
lib.setPostDests(postCollection); | ||
lib.setPostUrls(postCollection); | ||
lib.sortPosts(postCollection); | ||
@@ -270,5 +271,5 @@ | ||
*/ | ||
lib.setPostDests = function (postCollection) { | ||
lib.setPostUrls = function (postCollection) { | ||
postCollection.forEach(function (post) { | ||
post.dest = lib.getPostDest(post); | ||
post.url = lib.getPostUrl(post); | ||
}); | ||
@@ -278,12 +279,14 @@ }; | ||
/** | ||
* Returns the post destination based on the url property and postData | ||
* Returns the post url based on the url property and postData | ||
* @param {Object} post Post object containing all metadata properties of the post | ||
* @return {String} | ||
*/ | ||
lib.getPostDest = function (post) { | ||
lib.getPostUrl = function (post) { | ||
if (typeof _this.data.dest === 'undefined') { | ||
grunt.fail.fatal('Please specify the dest property in your config.'); | ||
} | ||
var dest = _this.data.dest + '/' + _this.data.url + '.html'; | ||
// Strip .html from url so it isn | ||
var url = _this.data.url; | ||
var formatPostUrl = options.formatPostUrl || function (urlSegment) { | ||
@@ -293,2 +296,3 @@ return urlSegment.replace(/[^\w\s\-]/gi, '').replace(/\s{2,}/gi, ' ').replace(/\s/gi, '-').toLowerCase(); | ||
// Extract dynamic url segments and replace them with post metadata | ||
_this.data.url.split('/') | ||
@@ -309,3 +313,3 @@ | ||
if (urlSegment in post) { | ||
dest = dest.replace(':' + urlSegment, formatPostUrl(post[urlSegment])); | ||
url = url.replace(':' + urlSegment, formatPostUrl(post[urlSegment])); | ||
} else { | ||
@@ -316,14 +320,19 @@ grunt.fail.fatal('required ' + urlSegment + ' attribute not found in the following post\'s metadata: ' + post.sourcePath + '.'); | ||
return dest; | ||
return url; | ||
}; | ||
/** | ||
* Updates the post collection with each post's url | ||
* Updates the post collection with each post's destination | ||
* @param {Array} postCollection Collection of parsed posts with the content and metadata properties | ||
*/ | ||
lib.setPostUrls = function (postCollection) { | ||
lib.setPostDests = function (postCollection) { | ||
postCollection.forEach(function (post) { | ||
// Slice the destination folder from the beginning of the url | ||
post.url = post.dest.slice((_this.data.dest + '/').length); | ||
post.dest = _this.data.dest + '/' + post.url; | ||
if (post.dest.indexOf('.html') === -1) { | ||
if (post.dest.lastIndexOf('/') === post.dest.length - 1) { | ||
post.dest += 'index.html'; | ||
} else { | ||
post.dest += '.html'; | ||
} | ||
} | ||
}); | ||
@@ -330,0 +339,0 @@ }; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
52334
490
359
12