From 4955ab1689bb34400c32aefbc37bc557e761c276 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Wed, 20 Feb 2019 14:52:56 -0500 Subject: [PATCH] DEV: add replaceTagRenderer to pluginApi --- .../discourse/lib/plugin-api.js.es6 | 18 +++++++++++++++++- .../discourse/lib/render-tag.js.es6 | 12 +++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 index e174b581a3b..910b55fbe4d 100644 --- a/app/assets/javascripts/discourse/lib/plugin-api.js.es6 +++ b/app/assets/javascripts/discourse/lib/plugin-api.js.es6 @@ -31,6 +31,7 @@ import { replaceIcon } from "discourse-common/lib/icon-library"; import { replaceCategoryLinkRenderer } from "discourse/helpers/category-link"; +import { replaceTagRenderer } from "discourse/lib/render-tag"; import { addNavItem } from "discourse/models/nav-item"; import { replaceFormatter } from "discourse/lib/utilities"; import { modifySelectKit } from "select-kit/mixins/plugin-api"; @@ -42,7 +43,7 @@ import Sharing from "discourse/lib/sharing"; import { addComposerUploadHandler } from "discourse/components/composer-editor"; // If you add any methods to the API ensure you bump up this number -const PLUGIN_API_VERSION = "0.8.28"; +const PLUGIN_API_VERSION = "0.8.29"; class PluginApi { constructor(version, container) { @@ -830,6 +831,21 @@ class PluginApi { replaceCategoryLinkRenderer(fn); } + /** + * Registers a renderer that overrides the display of a tag. + * + * Example: + * + * function testTagRenderer(tag, params) { + * const visibleName = Handlebars.Utils.escapeExpression(tag); + * return `testing: ${visibleName}`; + * } + * api.replaceTagRenderer(testTagRenderer); + **/ + replaceTagRenderer(fn) { + replaceTagRenderer(fn); + } + /** * Registers custom languages for use with HighlightJS. * diff --git a/app/assets/javascripts/discourse/lib/render-tag.js.es6 b/app/assets/javascripts/discourse/lib/render-tag.js.es6 index 8420638b3b5..4e0597d4a4b 100644 --- a/app/assets/javascripts/discourse/lib/render-tag.js.es6 +++ b/app/assets/javascripts/discourse/lib/render-tag.js.es6 @@ -1,4 +1,10 @@ -export default function renderTag(tag, params) { +let _renderer = defaultRenderTag; + +export function replaceTagRenderer(fn) { + _renderer = fn; +} + +function defaultRenderTag(tag, params) { params = params || {}; const visibleName = Handlebars.Utils.escapeExpression(tag); tag = visibleName.toLowerCase(); @@ -41,3 +47,7 @@ export default function renderTag(tag, params) { return val; } + +export default function renderTag(tag, params) { + return _renderer(tag, params); +}