kopia lustrzana https://github.com/c9/core
98 wiersze
3.6 KiB
JavaScript
98 wiersze
3.6 KiB
JavaScript
define(function(require, exports, module) {
|
|
|
|
var guidToShortString = exports.guidToShortString = function(guid) {
|
|
var result = guid && guid.replace(/^[^:]+:(([^\/]+)\/)*?([^\/]*?)(\[\d+[^\]]*\])?(\/prototype)?$|.*/, "$3");
|
|
return result && result !== "Object" ? result : "";
|
|
};
|
|
|
|
var guidToLongString = exports.guidToLongString = function(guid, name) {
|
|
if (guid.substr(0, 6) === "local:")
|
|
return guidToShortString(guid);
|
|
var result = guid && guid.replace(/^[^:]+:(([^\/]+\/)*)*?([^\/]*?)$|.*/, "$1$3");
|
|
if (!result || result === "Object")
|
|
return "";
|
|
result = result.replace(/\//g, ".").replace(/\[\d+[^\]]*\]/g, "");
|
|
if (name !== "prototype")
|
|
result = result.replace(/\.prototype$/, "");
|
|
return result;
|
|
};
|
|
|
|
function addStylesheetRule(cssText) {
|
|
var s = document.styleSheets[document.styleSheets.length - 1];
|
|
s.insertRule(cssText, s.cssRules.length);
|
|
}
|
|
|
|
var iconClass = {};
|
|
function defineIcon(icon) {
|
|
var path = (this.staticUrl || "/static") + "/plugins/c9.ide.language/images/";
|
|
|
|
iconClass[icon] = "lang-icon-" + icon;
|
|
|
|
var cssText = "." + iconClass[icon] + "{"
|
|
+ "background-image:url('" + path + icon + ".png')"
|
|
+ "}";
|
|
//console.log(cssText)
|
|
addStylesheetRule(cssText);
|
|
return iconClass[icon];
|
|
}
|
|
|
|
|
|
function tokenizeRow() {
|
|
return [];
|
|
}
|
|
function renderLine(lineEl, row, foldLine) {
|
|
var match = this.popup.data[row];
|
|
|
|
var icon = this.dom.createElement("span");
|
|
icon.className = "completer-img " + (match.icon
|
|
? iconClass[match.icon] || this.popup.$defineIcon(match.icon)
|
|
: "");
|
|
lineEl.appendChild(icon);
|
|
|
|
if (match.type) {
|
|
var shortType = guidToShortString(match.type);
|
|
if (shortType)
|
|
match.meta = shortType;
|
|
}
|
|
|
|
var name = match.name;
|
|
var prefix = match.identifierRegex
|
|
? this.popup.calcPrefix(match.identifierRegex)
|
|
: name.substr(0, this.popup.prefix.length);
|
|
|
|
var trim = match.meta ? " maintrim" : "";
|
|
if (!this.ignoreGenericMatches || !match.isGeneric) {
|
|
var simpleName = match.replaceText.replace("^^", "").replace(/\(\)$/, "");
|
|
if (name.indexOf(simpleName) === 0) {
|
|
this.dom.buildDom([["span", { class: "main" + trim },
|
|
["u", prefix], simpleName.substring(prefix.length)],
|
|
["span", { class: "deferred" }, name.substring(Math.max(simpleName.length, prefix.length))]
|
|
], lineEl);
|
|
}
|
|
else {
|
|
this.dom.buildDom(["span", { class: "main" + trim },
|
|
["u", prefix], name.substring(prefix.length)
|
|
], lineEl);
|
|
}
|
|
}
|
|
else {
|
|
this.dom.buildDom(["span", { class: "main" + trim },
|
|
["span", { class: "deferred" }, ["u", prefix], name.substring(prefix.length)]
|
|
], lineEl);
|
|
}
|
|
|
|
if (match.meta) {
|
|
this.dom.buildDom(["span", { class: "meta"}, match.meta], lineEl);
|
|
}
|
|
}
|
|
|
|
exports.initPopup = function(popup, staticUrl) {
|
|
popup.session.bgTokenizer.popup = popup;
|
|
popup.session.bgTokenizer.$tokenizeRow = tokenizeRow;
|
|
popup.renderer.$textLayer.popup = popup;
|
|
popup.$defineIcon = defineIcon;
|
|
popup.renderer.$textLayer.$renderLine = renderLine;
|
|
popup.staticUrl = staticUrl;
|
|
};
|
|
});
|