| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| define(['require', |
| 'handlebars', |
| ], function(require, Handlebars, localization) { |
| /* |
| * General guidelines while writing helpers: |
| * |
| * - If returning HTML use return new Handlebars.SafeString(); |
| * - If the helper needs optional arguments use the "hash arguments" |
| * Eg. {{{link . "See more..." story.url class="story"}}} |
| * NOTE: the first argument after the helper name should be . which will be context in the helper function |
| * Handlebars.registerHelper('link', function (context, text, url, options) { |
| * var attrs = []; |
| * |
| * for(var prop in options.hash) { |
| * attrs.push(prop + '="' + options.hash[prop] + '"'); |
| * } |
| * return new Handlebars.SafeString("<a " + attrs.join(" ") + ">" + text + "</a>"); |
| * }); |
| * |
| * |
| * NOTE: Due to some limitations in the require-handlebars-plugin, we cannot have helper that takes zero arguments, |
| * for such helpers we have to pass a "." as first argument. [https://github.com/SlexAxton/require-handlebars-plugin/issues/72] |
| */ |
| |
| var HHelpers = {}; |
| |
| /** |
| * Convert new line (\n\r) to <br> |
| * from http://phpjs.org/functions/nl2br:480 |
| */ |
| HHelpers.nl2br = function(text) { |
| text = Handlebars.Utils.escapeExpression(text); |
| var nl2br = (text + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + '<br>' + '$2'); |
| return new Handlebars.SafeString(nl2br); |
| }; |
| Handlebars.registerHelper('nl2br', HHelpers.nl2br); |
| |
| Handlebars.registerHelper('toHumanDate', function(val) { |
| if (!val) return ""; |
| return val;//localization.formatDate(val, 'f'); |
| }); |
| Handlebars.registerHelper('tt', function(str) { |
| //return localization.tt(str); |
| return str; |
| }); |
| |
| Handlebars.registerHelper('ifCond', function(v1, operator, v2, options) { |
| switch (operator) { |
| case '==': |
| return (v1 == v2) ? options.fn(this) : options.inverse(this); |
| break; |
| case '===': |
| return (v1 === v2) ? options.fn(this) : options.inverse(this); |
| break; |
| case '<': |
| return (v1 < v2) ? options.fn(this) : options.inverse(this); |
| break; |
| case '<=': |
| return (v1 <= v2) ? options.fn(this) : options.inverse(this); |
| break; |
| case '>': |
| return (v1 > v2) ? options.fn(this) : options.inverse(this); |
| break; |
| case '>=': |
| return (v1 >= v2) ? options.fn(this) : options.inverse(this); |
| break; |
| default: |
| return options.inverse(this); |
| break; |
| } |
| //return options.inverse(this); |
| }); |
| |
| return HHelpers; |
| }); |