Skip to content

Commit

Permalink
add support for entity field values in slug
Browse files Browse the repository at this point in the history
`:[field_name]` in slug is replaced by the value of that field. For example `tutorials/:category` for an item which has selected 'HTML and CSS' as category would result in `tutorials/html-and-css`.

resolves webhook#36
  • Loading branch information
jbmoelker committed May 15, 2015
1 parent e0ae0f9 commit fbc5e45
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions libs/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

var _ = require('lodash');
var moment = require('moment');
var slug = require('uslug');

/**
* Extends source dictionaries into the target dictionary
Expand Down Expand Up @@ -86,6 +87,10 @@ module.exports.each = function(obj, cb) {
// #d - Day leading zero
// #j - Day, no leading zero
// #T - The typename (e.g. articles)
//
// Support field names in the url
// :[field_name] - Value of that field
//
module.exports.parseCustomUrl = function(url, object) {
var publishDate = object.publish_date ? object.publish_date : object;

Expand Down Expand Up @@ -115,7 +120,17 @@ module.exports.parseCustomUrl = function(url, object) {
}
}

function replaceByProp(match, prop) {
if(object.hasOwnProperty(prop)){
return slug(object[prop]);
} else {
return '';
}
}

url = url.replace(/#(\w)/g, replacer);

url = url.replace(/:(\w+)/g, replaceByProp);

return url;
}

0 comments on commit fbc5e45

Please sign in to comment.