summaryrefslogtreecommitdiffstats
path: root/etherpad/src/plugins/twitterStyleTags/static/js/main.js
blob: a83e3e81f0b02490b84efbca384b7ca747885f42 (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
38
39
40
41
42
43
44
45
46
47
48
function init() {
  this.hooks = ['aceInitInnerdocbodyHead', 'aceGetFilterStack', 'aceCreateDomLine'];
  this.aceInitInnerdocbodyHead = aceInitInnerdocbodyHead;
  this.aceGetFilterStack = aceGetFilterStack;
  this.aceCreateDomLine = aceCreateDomLine;
}

function aceInitInnerdocbodyHead(args) {
  args.iframeHTML.push('\'<link rel="stylesheet" type="text/css" href="/static/css/plugins/twitterStyleTags/pad.css"/>\'');
}

function aceGetFilterStack(args) {
  return [
    args.linestylefilter.getRegexpFilter(
      new RegExp("#[^,#=!\\s][^,#=!\\s]*", "g"), 'padtag'),
    args.linestylefilter.getRegexpFilter(
      new RegExp("=[^#=\\s][^#=\\s]*", "g"), 'padtagsearch')
  ];
}

function aceCreateDomLine(args) {
  if (args.cls.indexOf('padtagsearch') >= 0) {
    var href;
    cls = args.cls.replace(/(^| )padtagsearch:(\S+)/g, function(x0, space, padtagsearch) {
      href = '/ep/tag/?query=' + padtagsearch.substring(1);
      return space + "padtagsearch padtagsearch_" + padtagsearch.substring(1);
    });

   return [{
     cls: cls,
     extraOpenTags: '<a href="' + href.replace(/\"/g, '&quot;') + '">',
     extraCloseTags: '</a>'}];
  } else if (args.cls.indexOf('padtag') >= 0) {
    var href;
    cls = args.cls.replace(/(^| )padtag:(\S+)/g, function(x0, space, padtag) {
      href = '/ep/tag/?query=' + padtag.substring(1);
      return space + "padtag padtag_" + padtag.substring(1);
    });

   return [{
     cls: cls,
     extraOpenTags: '<a href="' + href.replace(/\"/g, '&quot;') + '">',
     extraCloseTags: '</a>'}];
  }
}

/* used on the client side only */
twitterStyleTags = new init();