1
0
Fork 0
This repository has been archived on 2024-06-28. You can view files and clone it, but cannot push or open issues or pull requests.
matomo-injector/lib/behave.js

1 line
8.4 KiB
JavaScript
Raw Normal View History

2014-05-07 13:56:35 +02:00
(function(e){"use strict";var t=t||function(){var e={};return{add:function(t,n){if(typeof t=="object"){var r;for(r=0;r<t.length;r++){var i=t[r];if(!e[i]){e[i]=[]}e[i].push(n)}}else{if(!e[t]){e[t]=[]}e[t].push(n)}},get:function(t){if(e[t]){return e[t]}}}}(),n=n||function(n){if(typeof String.prototype.repeat!=="function"){String.prototype.repeat=function(e){if(e<1){return""}if(e%2){return this.repeat(e-1)+this}var t=this.repeat(e/2);return t+t}}if(typeof Array.prototype.filter!=="function"){Array.prototype.filter=function(e){if(this===null){throw new TypeError}var t=Object(this),n=t.length>>>0;if(typeof e!="function"){throw new TypeError}var r=[],i=arguments[1];for(var s=0;s<n;s++){if(s in t){var o=t[s];if(e.call(i,o,s,t)){r.push(o)}}}return r}}var r={textarea:null,replaceTab:true,softTabs:true,tabSize:4,autoOpen:true,overwrite:true,autoStrip:true,autoIndent:true,fence:false},i,s,o={keyMap:[{open:'"',close:'"',canBreak:false},{open:"'",close:"'",canBreak:false},{open:"(",close:")",canBreak:false},{open:"[",close:"]",canBreak:true},{open:"{",close:"}",canBreak:true}]},u={_callHook:function(n,i){var s=t.get(n);i=typeof i=="boolean"&&i===false?false:true;if(s){if(i){var o=r.textarea,a=o.value,f=u.cursor.get(),l;for(l=0;l<s.length;l++){s[l].call(e,{editor:{element:o,text:a,levelsDeep:u.levelsDeep()},caret:{pos:f},lines:{current:u.cursor.getLine(a,f),total:u.editor.getLines(a)}})}}else{for(l=0;l<s.length;l++){s[l].call(e)}}}},defineNewLine:function(){var e=document.createElement("textarea");e.value="\n";if(e.value.length==2){s="\r\n"}else{s="\n"}},defineTabSize:function(e){if(typeof r.textarea.style.OTabSize!="undefined"){r.textarea.style.OTabSize=e;return}if(typeof r.textarea.style.MozTabSize!="undefined"){r.textarea.style.MozTabSize=e;return}if(typeof r.textarea.style.tabSize!="undefined"){r.textarea.style.tabSize=e;return}},cursor:{getLine:function(e,t){return e.substring(0,t).split("\n").length},get:function(){if(typeof document.createElement("textarea").selectionStart==="number"){return r.textarea.selectionStart}else if(document.selection){var e=0,t=r.textarea.createTextRange(),n=document.selection.createRange().duplicate(),i=n.getBookmark();t.moveToBookmark(i);while(t.moveStart("character",-1)!==0){e++}return e}},set:function(e,t){if(!t){t=e}if(r.textarea.setSelectionRange){r.textarea.focus();r.textarea.setSelectionRange(e,t)}else if(r.textarea.createTextRange){var n=r.textarea.createTextRange();n.collapse(true);n.moveEnd("character",t);n.moveStart("character",e);n.select()}},selection:function(){var e=r.textarea,t=0,n=0,i,o,a,f,l;if(typeof e.selectionStart=="number"&&typeof e.selectionEnd=="number"){t=e.selectionStart;n=e.selectionEnd}else{o=document.selection.createRange();if(o&&o.parentElement()==e){i=u.editor.get();f=i.length;a=e.createTextRange();a.moveToBookmark(o.getBookmark());l=e.createTextRange();l.collapse(false);if(a.compareEndPoints("StartToEnd",l)>-1){t=n=f}else{t=-a.moveStart("character",-f);t+=i.slice(0,t).split(s).length-1;if(a.compareEndPoints("EndToEnd",l)>-1){n=f}else{n=-a.moveEnd("character",-f);n+=i.slice(0,n).split(s).length-1}}}}return t==n?false:{start:t,end:n}}},editor:{getLines:function(e){return e.split("\n").length},get:function(){return r.textarea.value.replace(/\r/g,"")},set:function(e){r.textarea.value=e}},fenceRange:function(){if(typeof r.fence=="string"){var e=u.editor.get(),t=u.cursor.get(),n=0,i=e.indexOf(r.fence),s=0;while(i>=0){s++;if(t<i+n){break}n+=i+r.fence.length;e=e.substring(i+r.fence.length);i=e.indexOf(r.fence)}if(n<t&&i+n>t&&s%2===0){return true}return false}else{return true}},isEven:function(e,t){return t%2},levelsDeep:function(){var e=u.cursor.get(),t=u.editor.get();var n=t.substring(0,e),r=0,i,s;for(i=0;i<n.length;i++){for(s=0;s<o.keyMap.length;s++){if(o.keyMap[s].canBreak){if(o.keyMap[s].open==n.charAt(i)){r++}if(o.keyMap[s].close==n.charAt(i)){r--}}}}var a=0,f=["'",'"'];for(i=0;i<o.keyMap.length;i++){if(o.keyMap[i].canBreak){for(s in f){a+=n.split(f[s]).filter(u.isEven).join("").split(o.keyMap[i].open).length-1}}}var l=r-a;return l>=0?l:0},deepExtend:function(e,t){for(v