summaryrefslogtreecommitdiffstats
path: root/etherpad/src/plugins/twitterStyleTags/static/js/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'etherpad/src/plugins/twitterStyleTags/static/js/main.js')
-rw-r--r--etherpad/src/plugins/twitterStyleTags/static/js/main.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/etherpad/src/plugins/twitterStyleTags/static/js/main.js b/etherpad/src/plugins/twitterStyleTags/static/js/main.js
new file mode 100644
index 0000000..a83e3e8
--- /dev/null
+++ b/etherpad/src/plugins/twitterStyleTags/static/js/main.js
@@ -0,0 +1,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();