rack-mini-profiler 0.1.23 → 0.1.28
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rack-mini-profiler might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Ruby/CHANGELOG +75 -35
- data/Ruby/README.md +30 -1
- data/Ruby/lib/html/flamegraph.html +351 -0
- data/Ruby/lib/html/includes.css +451 -75
- data/Ruby/lib/html/includes.js +140 -78
- data/Ruby/lib/html/includes.less +38 -35
- data/Ruby/lib/html/includes.tmpl +4 -3
- data/Ruby/lib/html/profile_handler.js +1 -1
- data/Ruby/lib/mini_profiler/config.rb +13 -9
- data/Ruby/lib/mini_profiler/context.rb +11 -10
- data/Ruby/lib/mini_profiler/flame_graph.rb +54 -0
- data/Ruby/lib/mini_profiler/gc_profiler.rb +8 -4
- data/Ruby/lib/mini_profiler/profiler.rb +179 -172
- data/Ruby/lib/mini_profiler/profiling_methods.rb +131 -108
- data/Ruby/lib/mini_profiler/sql_timer_struct.rb +1 -1
- data/Ruby/lib/mini_profiler/storage/abstract_store.rb +32 -27
- data/Ruby/lib/mini_profiler/storage/file_store.rb +111 -109
- data/Ruby/lib/mini_profiler/storage/memcache_store.rb +11 -9
- data/Ruby/lib/mini_profiler/storage/memory_store.rb +65 -63
- data/Ruby/lib/mini_profiler/storage/redis_store.rb +16 -6
- data/Ruby/lib/mini_profiler/version.rb +2 -2
- data/Ruby/lib/mini_profiler_rails/railtie.rb +44 -40
- data/Ruby/lib/patches/sql_patches.rb +75 -48
- data/rack-mini-profiler.gemspec +2 -1
- metadata +43 -56
data/Ruby/lib/html/includes.js
CHANGED
@@ -20,7 +20,7 @@ var MiniProfiler = (function () {
|
|
20
20
|
|
21
21
|
var getVersionedKey = function (keyPrefix) {
|
22
22
|
return keyPrefix + '-' + options.version;
|
23
|
-
}
|
23
|
+
};
|
24
24
|
|
25
25
|
var save = function (keyPrefix, value) {
|
26
26
|
if (!hasLocalStorage()) { return; }
|
@@ -61,11 +61,10 @@ var MiniProfiler = (function () {
|
|
61
61
|
}
|
62
62
|
};
|
63
63
|
|
64
|
-
var getClientPerformance = function
|
64
|
+
var getClientPerformance = function() {
|
65
65
|
return window.performance == null ? null : window.performance;
|
66
|
-
}
|
66
|
+
};
|
67
67
|
|
68
|
-
var waitedForEnd = 0;
|
69
68
|
var fetchResults = function (ids) {
|
70
69
|
var clientPerformance, clientProbes, i, j, p, id, idx;
|
71
70
|
|
@@ -82,7 +81,7 @@ var MiniProfiler = (function () {
|
|
82
81
|
}
|
83
82
|
mPt.flush();
|
84
83
|
}
|
85
|
-
|
84
|
+
|
86
85
|
if (id == options.currentId) {
|
87
86
|
|
88
87
|
clientPerformance = getClientPerformance();
|
@@ -92,7 +91,7 @@ var MiniProfiler = (function () {
|
|
92
91
|
var copy = { navigation: {}, timing: {} };
|
93
92
|
|
94
93
|
var timing = $.extend({}, clientPerformance.timing);
|
95
|
-
|
94
|
+
|
96
95
|
for (p in timing) {
|
97
96
|
if (timing.hasOwnProperty(p) && !$.isFunction(timing[p])) {
|
98
97
|
copy.timing[p] = timing[p];
|
@@ -103,9 +102,9 @@ var MiniProfiler = (function () {
|
|
103
102
|
}
|
104
103
|
clientPerformance = copy;
|
105
104
|
|
106
|
-
// hack to add chrome timings
|
105
|
+
// hack to add chrome timings
|
107
106
|
if (window.chrome && window.chrome.loadTimes) {
|
108
|
-
var chromeTimes = window.chrome.loadTimes();
|
107
|
+
var chromeTimes = window.chrome.loadTimes();
|
109
108
|
if (chromeTimes.firstPaintTime) {
|
110
109
|
clientPerformance.timing["First Paint Time"] = Math.round(chromeTimes.firstPaintTime * 1000);
|
111
110
|
}
|
@@ -127,6 +126,7 @@ var MiniProfiler = (function () {
|
|
127
126
|
url: options.path + 'results',
|
128
127
|
data: { id: id, clientPerformance: clientPerformance, clientProbes: clientProbes, popup: 1 },
|
129
128
|
dataType: 'json',
|
129
|
+
global: false,
|
130
130
|
type: 'POST',
|
131
131
|
success: function (json) {
|
132
132
|
fetchedIds.push(id);
|
@@ -245,7 +245,7 @@ var MiniProfiler = (function () {
|
|
245
245
|
popup.children().each(function () { childrenHeight += $(this).height(); });
|
246
246
|
|
247
247
|
popup.css({ 'padding-right': childrenHeight > popup.height() ? 40 : 10 });
|
248
|
-
}
|
248
|
+
};
|
249
249
|
|
250
250
|
var popupHide = function (button, popup) {
|
251
251
|
button.removeClass('profiler-button-active');
|
@@ -291,13 +291,13 @@ var MiniProfiler = (function () {
|
|
291
291
|
originalRgb = getRGB(cell.css('background-color')),
|
292
292
|
getColorDiff = function (fx, i) {
|
293
293
|
// adapted from John Resig's color plugin: http://plugins.jquery.com/project/color
|
294
|
-
return Math.max(Math.min(parseInt((fx.pos * (originalRgb[i] - highlightRgb[i])) + highlightRgb[i]), 255), 0);
|
294
|
+
return Math.max(Math.min(parseInt((fx.pos * (originalRgb[i] - highlightRgb[i])) + highlightRgb[i], 10), 255), 0);
|
295
295
|
};
|
296
296
|
|
297
297
|
// we need to animate some other property to piggy-back on the step function, so I choose you, opacity!
|
298
298
|
cell.css({ 'opacity': 1, 'background-color': highlightHex })
|
299
299
|
.animate({ 'opacity': 1 }, { duration: 2000, step: function (now, fx) {
|
300
|
-
fx.elem.style
|
300
|
+
fx.elem.style.backgroundColor = "rgb(" + [getColorDiff(fx, 0), getColorDiff(fx, 1), getColorDiff(fx, 2)].join(",") + ")";
|
301
301
|
}
|
302
302
|
});
|
303
303
|
});
|
@@ -365,6 +365,9 @@ var MiniProfiler = (function () {
|
|
365
365
|
popupHide(button, popup);
|
366
366
|
}
|
367
367
|
});
|
368
|
+
$(document).bind('keydown', options.toggleShortcut, function(e) {
|
369
|
+
$('.profiler-results').toggle();
|
370
|
+
});
|
368
371
|
};
|
369
372
|
|
370
373
|
var initFullView = function () {
|
@@ -433,6 +436,7 @@ var MiniProfiler = (function () {
|
|
433
436
|
// get master page profiler results
|
434
437
|
fetchResults(options.ids);
|
435
438
|
});
|
439
|
+
if (options.startHidden) container.hide();
|
436
440
|
}
|
437
441
|
else {
|
438
442
|
fetchResults(options.ids);
|
@@ -457,7 +461,7 @@ var MiniProfiler = (function () {
|
|
457
461
|
|
458
462
|
if (jQuery && jQuery(document).ajaxStart)
|
459
463
|
jQuery(document).ajaxStart(function () { ajaxStartTime = new Date(); });
|
460
|
-
|
464
|
+
|
461
465
|
// fetch results after ASP Ajax calls
|
462
466
|
if (typeof (Sys) != 'undefined' && typeof (Sys.WebForms) != 'undefined' && typeof (Sys.WebForms.PageRequestManager) != 'undefined') {
|
463
467
|
// Get the instance of PageRequestManager.
|
@@ -477,7 +481,7 @@ var MiniProfiler = (function () {
|
|
477
481
|
});
|
478
482
|
}
|
479
483
|
|
480
|
-
// more Asp.Net callbacks
|
484
|
+
// more Asp.Net callbacks
|
481
485
|
if (typeof (WebForm_ExecuteCallback) == "function") {
|
482
486
|
WebForm_ExecuteCallback = (function (callbackObject) {
|
483
487
|
// Store original function
|
@@ -491,7 +495,7 @@ var MiniProfiler = (function () {
|
|
491
495
|
var ids = typeof JSON != 'undefined' ? JSON.parse(stringIds) : eval(stringIds);
|
492
496
|
fetchResults(ids);
|
493
497
|
}
|
494
|
-
}
|
498
|
+
};
|
495
499
|
|
496
500
|
})();
|
497
501
|
}
|
@@ -499,7 +503,12 @@ var MiniProfiler = (function () {
|
|
499
503
|
// also fetch results after ExtJS requests, in case it is being used
|
500
504
|
if (typeof (Ext) != 'undefined' && typeof (Ext.Ajax) != 'undefined' && typeof (Ext.Ajax.on) != 'undefined') {
|
501
505
|
// Ext.Ajax is a singleton, so we just have to attach to its 'requestcomplete' event
|
502
|
-
Ext.Ajax.on('requestcomplete', function(e, xhr, settings) {
|
506
|
+
Ext.Ajax.on('requestcomplete', function (e, xhr, settings) {
|
507
|
+
//iframed file uploads don't have headers
|
508
|
+
if (!xhr || !xhr.getResponseHeader) {
|
509
|
+
return;
|
510
|
+
}
|
511
|
+
|
503
512
|
var stringIds = xhr.getResponseHeader('X-MiniProfiler-Ids');
|
504
513
|
if (stringIds) {
|
505
514
|
var ids = typeof JSON != 'undefined' ? JSON.parse(stringIds) : eval(stringIds);
|
@@ -508,6 +517,41 @@ var MiniProfiler = (function () {
|
|
508
517
|
});
|
509
518
|
}
|
510
519
|
|
520
|
+
if (typeof (MooTools) != 'undefined' && typeof (Request) != 'undefined') {
|
521
|
+
Request.prototype.addEvents({
|
522
|
+
onComplete: function() {
|
523
|
+
var stringIds = this.xhr.getResponseHeader('X-MiniProfiler-Ids');
|
524
|
+
if (stringIds) {
|
525
|
+
var ids = typeof JSON != 'undefined' ? JSON.parse(stringIds) : eval(stringIds);
|
526
|
+
fetchResults(ids);
|
527
|
+
}
|
528
|
+
}
|
529
|
+
});
|
530
|
+
}
|
531
|
+
|
532
|
+
// add support for AngularJS, which use the basic XMLHttpRequest object.
|
533
|
+
if (window.angular && typeof (XMLHttpRequest) != 'undefined') {
|
534
|
+
var _send = XMLHttpRequest.prototype.send;
|
535
|
+
|
536
|
+
XMLHttpRequest.prototype.send = function sendReplacement(data) {
|
537
|
+
this._onreadystatechange = this.onreadystatechange;
|
538
|
+
|
539
|
+
this.onreadystatechange = function onReadyStateChangeReplacement() {
|
540
|
+
if (this.readyState == 4) {
|
541
|
+
var stringIds = this.getResponseHeader('X-MiniProfiler-Ids');
|
542
|
+
if (stringIds) {
|
543
|
+
var ids = typeof JSON != 'undefined' ? JSON.parse(stringIds) : eval(stringIds);
|
544
|
+
fetchResults(ids);
|
545
|
+
}
|
546
|
+
}
|
547
|
+
|
548
|
+
return this._onreadystatechange.apply(this, arguments);
|
549
|
+
};
|
550
|
+
|
551
|
+
return _send.apply(this, arguments);
|
552
|
+
};
|
553
|
+
}
|
554
|
+
|
511
555
|
// some elements want to be hidden on certain doc events
|
512
556
|
bindDocumentEvents();
|
513
557
|
};
|
@@ -529,13 +573,17 @@ var MiniProfiler = (function () {
|
|
529
573
|
|
530
574
|
var position = script.getAttribute('data-position');
|
531
575
|
|
532
|
-
|
533
|
-
|
576
|
+
var toggleShortcut = script.getAttribute('data-toggle-shortcut');
|
577
|
+
|
578
|
+
if (script.getAttribute('data-max-traces')) {
|
579
|
+
var maxTraces = parseInt(script.getAttribute('data-max-traces'), 10);
|
580
|
+
}
|
534
581
|
|
535
582
|
if (script.getAttribute('data-trivial') === 'true') var trivial = true;
|
536
583
|
if (script.getAttribute('data-children') == 'true') var children = true;
|
537
584
|
if (script.getAttribute('data-controls') == 'true') var controls = true;
|
538
585
|
if (script.getAttribute('data-authorized') == 'true') var authorized = true;
|
586
|
+
if (script.getAttribute('data-start-hidden') == 'true') var startHidden = true;
|
539
587
|
|
540
588
|
return {
|
541
589
|
ids: ids,
|
@@ -547,17 +595,18 @@ var MiniProfiler = (function () {
|
|
547
595
|
maxTracesToShow: maxTraces,
|
548
596
|
showControls: controls,
|
549
597
|
currentId: currentId,
|
550
|
-
authorized: authorized
|
551
|
-
|
598
|
+
authorized: authorized,
|
599
|
+
toggleShortcut: toggleShortcut,
|
600
|
+
startHidden: startHidden
|
601
|
+
};
|
552
602
|
})();
|
553
603
|
|
554
604
|
var doInit = function () {
|
555
605
|
// when rendering a shared, full page, this div will exist
|
556
606
|
container = $('.profiler-result-full');
|
557
|
-
|
558
607
|
if (container.length) {
|
559
608
|
if (window.location.href.indexOf("&trivial=1") > 0) {
|
560
|
-
options.showTrivial = true
|
609
|
+
options.showTrivial = true;
|
561
610
|
}
|
562
611
|
initFullView();
|
563
612
|
}
|
@@ -585,7 +634,7 @@ var MiniProfiler = (function () {
|
|
585
634
|
var finish = false;
|
586
635
|
var deferInit = function() {
|
587
636
|
if (finish) return;
|
588
|
-
if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd
|
637
|
+
if (window.performance && window.performance.timing && window.performance.timing.loadEventEnd === 0 && wait < 10000) {
|
589
638
|
setTimeout(deferInit, 100);
|
590
639
|
wait += 100;
|
591
640
|
} else {
|
@@ -607,16 +656,20 @@ var MiniProfiler = (function () {
|
|
607
656
|
} else {
|
608
657
|
doInit();
|
609
658
|
}
|
610
|
-
}
|
611
|
-
else {
|
659
|
+
} else {
|
612
660
|
doInit();
|
613
661
|
}
|
614
|
-
}
|
662
|
+
};
|
615
663
|
|
664
|
+
var major, minor;
|
616
665
|
if (typeof(jQuery) == 'function') {
|
617
666
|
var jQueryVersion = jQuery.fn.jquery.split('.');
|
667
|
+
major = parseInt(jQueryVersion[0], 10);
|
668
|
+
minor = parseInt(jQueryVersion[1], 10);
|
618
669
|
}
|
619
|
-
|
670
|
+
|
671
|
+
|
672
|
+
if (major === 2 || (major === 1 && minor >= 7)) {
|
620
673
|
MiniProfiler.jQuery = $ = jQuery;
|
621
674
|
$(deferInit);
|
622
675
|
} else {
|
@@ -668,7 +721,7 @@ var MiniProfiler = (function () {
|
|
668
721
|
getClientTimings: function (clientTimings) {
|
669
722
|
var list = [];
|
670
723
|
var t;
|
671
|
-
|
724
|
+
|
672
725
|
if (!clientTimings.Timings) return [];
|
673
726
|
|
674
727
|
for (var i = 0; i < clientTimings.Timings.length; i++) {
|
@@ -711,7 +764,7 @@ var MiniProfiler = (function () {
|
|
711
764
|
// start adding at the root and recurse down
|
712
765
|
addToResults(root);
|
713
766
|
|
714
|
-
var removeDuration = function
|
767
|
+
var removeDuration = function(list, duration) {
|
715
768
|
|
716
769
|
var newList = [];
|
717
770
|
for (var i = 0; i < list.length; i++) {
|
@@ -735,7 +788,7 @@ var MiniProfiler = (function () {
|
|
735
788
|
}
|
736
789
|
|
737
790
|
return newList;
|
738
|
-
}
|
791
|
+
};
|
739
792
|
|
740
793
|
var processTimes = function (elem, parent) {
|
741
794
|
var duration = { start: elem.StartMilliseconds, finish: (elem.StartMilliseconds + elem.DurationMilliseconds) };
|
@@ -757,7 +810,7 @@ var MiniProfiler = (function () {
|
|
757
810
|
// sort results by time
|
758
811
|
result.sort(function (a, b) { return a.StartMilliseconds - b.StartMilliseconds; });
|
759
812
|
|
760
|
-
var determineOverlap = function
|
813
|
+
var determineOverlap = function(gap, node) {
|
761
814
|
var overlap = 0;
|
762
815
|
for (var i = 0; i < node.richTiming.length; i++) {
|
763
816
|
var current = node.richTiming[i];
|
@@ -771,7 +824,7 @@ var MiniProfiler = (function () {
|
|
771
824
|
overlap += Math.min(gap.finish, current.finish) - Math.max(gap.start, current.start);
|
772
825
|
}
|
773
826
|
return overlap;
|
774
|
-
}
|
827
|
+
};
|
775
828
|
|
776
829
|
var determineGap = function (gap, node, match) {
|
777
830
|
var overlap = determineOverlap(gap, node);
|
@@ -848,50 +901,59 @@ var MiniProfiler = (function () {
|
|
848
901
|
|
849
902
|
MiniProfiler.init();
|
850
903
|
|
851
|
-
|
852
|
-
//
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
"
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
;
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
;
|
904
|
+
// jquery.hotkeys.js
|
905
|
+
// https://github.com/jeresig/jquery.hotkeys/blob/master/jquery.hotkeys.js
|
906
|
+
|
907
|
+
(function(d){function h(g){if("string"===typeof g.data){var h=g.handler,j=g.data.toLowerCase().split(" ");g.handler=function(b){if(!(this!==b.target&&(/textarea|select/i.test(b.target.nodeName)||"text"===b.target.type))){var c="keypress"!==b.type&&d.hotkeys.specialKeys[b.which],e=String.fromCharCode(b.which).toLowerCase(),a="",f={};b.altKey&&"alt"!==c&&(a+="alt+");b.ctrlKey&&"ctrl"!==c&&(a+="ctrl+");b.metaKey&&(!b.ctrlKey&&"meta"!==c)&&(a+="meta+");b.shiftKey&&"shift"!==c&&(a+="shift+");c?f[a+c]=
|
908
|
+
!0:(f[a+e]=!0,f[a+d.hotkeys.shiftNums[e]]=!0,"shift+"===a&&(f[d.hotkeys.shiftNums[e]]=!0));c=0;for(e=j.length;c<e;c++)if(f[j[c]])return h.apply(this,arguments)}}}}d.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",
|
909
|
+
109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};d.each(["keydown","keyup","keypress"],function(){d.event.special[this]={add:h}})})(jQuery);
|
910
|
+
|
911
|
+
if (typeof prettyPrint === "undefined") {
|
912
|
+
|
913
|
+
// prettify.js
|
914
|
+
// http://code.google.com/p/google-code-prettify/
|
915
|
+
|
916
|
+
window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y};
|
917
|
+
(function(){function y(b){return b.replace(L,"&").replace(M,"<").replace(N,">")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&").replace(M,"<").replace(N,">").replace(X,"""),'"')}}f.push(">");
|
918
|
+
for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1),
|
919
|
+
8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g);
|
920
|
+
continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-");
|
921
|
+
a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"===
|
922
|
+
g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,
|
923
|
+
""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b,
|
924
|
+
f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)];
|
925
|
+
if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
|
926
|
+
null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
|
927
|
+
null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,
|
928
|
+
null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1 ");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g,
|
929
|
+
d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?" \r\n":h===7?" <br>\r":" \r":" <br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h;
|
930
|
+
for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]}
|
931
|
+
function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&&
|
932
|
+
d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja,
|
933
|
+
"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=",
|
934
|
+
"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/</g,fa=/>/g,ga=/'/g,ha=/"/g,ja=/&/g,ia=/ /g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/,
|
935
|
+
la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ",
|
936
|
+
hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup",
|
937
|
+
"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],
|
938
|
+
["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ",
|
939
|
+
hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ",
|
940
|
+
hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",
|
941
|
+
cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);
|
942
|
+
u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true,
|
943
|
+
multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]),
|
944
|
+
["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>=
|
945
|
+
0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g,
|
946
|
+
" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"),
|
947
|
+
document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A,
|
948
|
+
PR_TAG:"tag",PR_TYPE:S}})()
|
949
|
+
|
950
|
+
;
|
951
|
+
|
952
|
+
// lang-sql.js
|
953
|
+
// http://code.google.com/p/google-code-prettify/
|
954
|
+
|
955
|
+
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,
|
956
|
+
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"])
|
957
|
+
|
958
|
+
;
|
959
|
+
}
|
data/Ruby/lib/html/includes.less
CHANGED
@@ -49,7 +49,7 @@
|
|
49
49
|
// styles shared between popup view and full view
|
50
50
|
.profiler-result
|
51
51
|
{
|
52
|
-
|
52
|
+
|
53
53
|
.profiler-toggle-duration-with-children
|
54
54
|
{
|
55
55
|
float: right;
|
@@ -143,6 +143,9 @@
|
|
143
143
|
float:left;
|
144
144
|
margin-left:0px;
|
145
145
|
}
|
146
|
+
&.profiler-custom-link {
|
147
|
+
float:left;
|
148
|
+
}
|
146
149
|
}
|
147
150
|
}
|
148
151
|
}
|
@@ -189,15 +192,15 @@
|
|
189
192
|
text-align:right;
|
190
193
|
margin-bottom:5px;
|
191
194
|
}
|
192
|
-
|
195
|
+
|
193
196
|
.profiler-gap-info, .profiler-gap-info td { background-color: #ccc;}
|
194
197
|
.profiler-gap-info {
|
195
198
|
.profiler-unit {color: #777;}
|
196
199
|
.profiler-info {text-align: right}
|
197
200
|
&.profiler-trivial-gaps {display: none}
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
+
}
|
202
|
+
|
203
|
+
.profiler-trivial-gap-container { text-align: center;}
|
201
204
|
|
202
205
|
// prettify colors
|
203
206
|
.str{color:maroon}
|
@@ -287,24 +290,24 @@
|
|
287
290
|
}
|
288
291
|
}
|
289
292
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
293
|
+
.profiler-controls {
|
294
|
+
display: block;
|
295
|
+
font-size:12px;
|
296
|
+
font-family: @codeFonts;
|
297
|
+
cursor:default;
|
298
|
+
text-align: center;
|
299
|
+
|
300
|
+
span {
|
301
|
+
border-right: 1px solid @mutedColor;
|
302
|
+
padding-right: 5px;
|
303
|
+
margin-right: 5px;
|
304
|
+
cursor:pointer;
|
305
|
+
}
|
306
|
+
|
307
|
+
span:last-child {
|
308
|
+
border-right: none;
|
309
|
+
}
|
310
|
+
}
|
308
311
|
|
309
312
|
.profiler-popup {
|
310
313
|
display:none;
|
@@ -367,19 +370,19 @@
|
|
367
370
|
}
|
368
371
|
}
|
369
372
|
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
+
&.profiler-min .profiler-result {
|
374
|
+
display: none;
|
375
|
+
}
|
373
376
|
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
+
&.profiler-min .profiler-controls span {
|
378
|
+
display: none;
|
379
|
+
}
|
377
380
|
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
381
|
+
&.profiler-min .profiler-controls .profiler-min-max {
|
382
|
+
border-right: none;
|
383
|
+
padding: 0px;
|
384
|
+
margin: 0px;
|
385
|
+
}
|
383
386
|
}
|
384
387
|
|
385
388
|
// popup results' queries will be displayed in front of this
|
@@ -465,4 +468,4 @@
|
|
465
468
|
}
|
466
469
|
}
|
467
470
|
}
|
468
|
-
}
|
471
|
+
}
|