summaryrefslogtreecommitdiff
path: root/src/static/js/plugins.js
blob: 3e226eba14307a955a679a1d8a2762e88c443dec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * This code is mostly from the old Etherpad. Please help us to comment this code. 
 * This helps other people to understand this code better and helps them to improve it.
 * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED
 */

var plugins = {
  callHook: function(hookName, args)
  {
    var global = (function () {return this}());
    var hook = ((global.clientVars || {}).hooks || {})[hookName];
    if (hook === undefined) return [];
    var res = [];
    for (var i = 0, N = hook.length; i < N; i++)
    {
      var plugin = hook[i];
      var pluginRes = eval(plugin.plugin)[plugin.original || hookName](args);
      if (pluginRes != undefined && pluginRes != null) res = res.concat(pluginRes);
    }
    return res;
  },

  callHookStr: function(hookName, args, sep, pre, post)
  {
    if (sep == undefined) sep = '';
    if (pre == undefined) pre = '';
    if (post == undefined) post = '';
    var newCallhooks = [];
    var callhooks = plugins.callHook(hookName, args);
    for (var i = 0, ii = callhooks.length; i < ii; i++) {
      newCallhooks[i] = pre + callhooks[i] + post;
    }
    return newCallhooks.join(sep || "");
  }
};

exports.plugins = plugins;