jqwidgets-framework
Version:
jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.
79 lines (68 loc) • 4.13 kB
JavaScript
//Colour constants
var fc_cmt = "#080";
var fc_html = "#11a";
var fc_quot = "#080";
var fc_kwds = "#11a";
//Language keywords
var fc_java_kwds = "public|int|float|double|private|new|void|synchronized|if|for|byte|break|else";
var pres = document.getElementsByTagName("pre");
for (var a = 0; a < pres.length; a++) {
var elem = pres[a];
if (elem.className.toLowerCase() == 'code') formatCode(elem);
}
function formatCode(precode) {
var lang = 'html';
var textlines = precode.split(/\r|\n/);
var linecount = 1;
var newcode = "";
var keywords = "debugger|export|function|return|null|for|set|undefined|var|with|true|false|switch|this|case";
for (var b = 0; b < textlines.length; b++) {
var code = textlines[b];
code = code.replace(/\f|\n/g, "");
if (code.indexOf("if (") == -1 && code.indexOf("for (") == -1)
{
code = code.replace(/&/g, '&');
code = code.replace(/</g, '<');
code = code.replace(/>/g, '>');
}
code = code.replace(/(".+")/g, "<span style=\"clear: both; padding: 0px; margin: 0px; color: " + fc_quot + ";\">$1</span>");
code = code.replace(/('.+')/g, "<span style=\" clear: both; padding: 0px; margin: 0px; color: " + fc_quot + ";\">$1</span>");
code = code.replace(/<(\S.*?)>/g, "<span style=\"clear: both; padding: 0px; margin: 0px; color: " + fc_html + ";\"><$1></span>");
code = code.replace(/<!--/g, "<span style=\"clear: both; padding: 0px; margin: 0px; color: " + fc_cmt + ";\"><!--");
code = code.replace(/-->/g, "--></span>");
code = colourKeywords(keywords, code);
code = colourCodeKeywordsCustom("width:|disabled:|height:|uploadUrl:|datafield:|dataField:|text:|minwidth:|cellsformat:|cellsalign:|cellsformat:|columntype:", code);
code = colourKeywordsCustom("jqxButton|jqxRepeatButton|jqxButtonGroup|jqxRadioButton|jqxGrid|jqxTree|jqxTreeGrid|jqxInput|jqxCalendar|jqxBulletChart|jqxToggleButton|jqxLinkButton|jqxSwitchButton|jqxChart|jqxDataTable|jqxDateTimeInput|jqxCheckBox|jqxScheduler|jqxRadioButton|jqxComplexInput|jqxListBox|jqxDropDownList|jqxCombobox|jqxFileUpload|jqxEditor|jqxExpander|jqxNavBar|jqxNavigationBar|jqxTooltip|jqxToolbar|jqxScrollBar|jqxSlider|jqxRangeSelector|jqxGauge|jqxFormattedInput|jqxComplexInput|jqxNumberInput|jqxDragDrop|jqxWindow|jqxTreemap|jqxValidator|jqxTouch|jqxTextArea|jqxTagCloud|jqxTabs|jqxSplitter|jqxScrollView|jqxListView|jqxRibbon|jqxRating|jqxProgressBar|jqxPanel|jqxLayout|jqxDockingLayout|jqxNotification|jqxMenu|jqxMaskedInput|jqxLoader", code);
if (code.indexOf("//") >= 0) {
code = "<span style=\"clear: both; padding: 0px; margin: 0px; color: #a533d4;\">" + code + "</span>";
}
var formatline = (" " + linecount).slice(-3);
newcode += code + "<div/>";
linecount++;
}
return "<pre style='border:none !important; padding: 0px !important; overflow: auto; margin-top: 5px; margin-bottom: 5px;' class='code'>" + newcode + "</pre>";
}
var colourKeywordsCustom = function (keywords, codeline) {
var words = keywords.split("|");
var newString = codeline;
for (var i = 0; i < words.length; i++) {
if (newString.indexOf(words[i] + "(") >= 0) {
newString = newString.replace(words[i] + "(", "<span style=\"color: #666b74;\">" + words[i] + "</span>(");
}
}
return newString;
}
var colourCodeKeywordsCustom = function (keywords, codeline) {
var words = keywords.split("|");
var newString = codeline;
for (var i = 0; i < words.length; i++) {
if (newString.indexOf(words[i]) >= 0) {
newString = newString.replace(words[i] + "", "<span style=\"color: #666b74;\">" + words[i] + "</span>");
}
}
return newString;
}
function colourKeywords(keywords, codeline) {
var wordre = new RegExp("(" + keywords + ") ", "gi");
return codeline.replace(wordre, "<span style=\"color: " + fc_kwds + ";\">$1 </span>");
}