Part of ACREP-32.
[mkws-moved-to-github.git] / src / mkws-handlebars.js
index 606dc10..27975cd 100644 (file)
@@ -81,6 +81,31 @@ Handlebars.registerHelper('mkws-first', function(items, options) {
 });
 
 
+var _urlRegexp = /^(https?:)?\/\//;
+Handlebars.registerHelper('mkws-best-url', function(items) {
+  for (var i in items) {
+    var item = items[i]
+    if (item.match(_urlRegexp)) {
+      mkws.debug("'" + item + "' *is* a URL");
+      return item;
+    }
+    mkws.debug("'" + item + "' is not a URL");
+  }
+  return "";
+});
+Handlebars.registerHelper('mkws-other-urls', function(items) {
+  var res = [];
+  for (var i in items) {
+    var item = items[i]
+    if (item.match(_urlRegexp)) {
+      res.push(item);
+    }
+  }
+  return res;
+});
+
+
+
 Handlebars.registerHelper('mkws-commaList', function(items, options) {
   var out = "";
 
@@ -97,6 +122,10 @@ Handlebars.registerHelper('mkws-index1', function(obj) {
   return obj.data.index + 1;
 });
 
+Handlebars.registerHelper('mkws-indexplus', function(delta, obj) {
+  return obj.data.index + delta;
+});
+
 Handlebars.registerHelper('mkws-repeat', function(count, options) {
   var out = "";
   for (var i = 0; i < count; i++) {
@@ -143,7 +172,8 @@ Handlebars.registerHelper('compare', function (lvalue, operator, rvalue, options
     '>': function (l, r) { return l > r; },
     '<=': function (l, r) { return l <= r; },
     '>=': function (l, r) { return l >= r; },
-    'typeof': function (l, r) { return typeof l == r; }
+    'typeof': function (l, r) { return typeof l == r; },
+    'matches': function (l, r) { return l.match(r); }
   };
 
   if (!operators[operator]) {