App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/socialcalc-3.js view on Meta::CPAN
minute = matches[2]-0;
if (hour < 24 && minute < 60) {
value = hour/24 + minute/(24*60);
type = "nt";
}
}
else if (matches=value.match(/^(\d{1,2}):(\d{1,2}):(\d{1,2})\s*$/)) { // HH:MM:SS
hour = matches[1]-0;
minute = matches[2]-0;
second = matches[3]-0;
if (hour < 24 && minute < 60 && second < 60) {
value = hour/24 + minute/(24*60) + second/(24*60*60);
type = "nt";
}
}
else if (matches=value.match(/^\s*([-+]?\d+) (\d+)\/(\d+)\s*$/)) { // 1 1/2
intgr = matches[1]-0;
num = matches[2]-0;
denom = matches[3]-0;
if (denom && denom > 0) {
value = intgr + (intgr < 0 ? -num/denom : num/denom);
type = "n";
}
}
else if (constr=SocialCalc.InputConstants[value.toUpperCase()]) { // special constants, like "false" and #N/A
num = constr.indexOf(",");
value = constr.substring(0,num)-0;
type = constr.substring(num+1);
}
else if (tvalue.length > 7 && tvalue.substring(0,7).toLowerCase()=="http://") { // URL
value = tvalue;
type = "tl";
}
return {value: value, type: type};
}
SocialCalc.InputConstants = { // strings that turn into constants for SocialCalc.DetermineValueType
"TRUE": "1,nl", "FALSE": "0,nl", "#N/A": "0,e#N/A", "#NULL!": "0,e#NULL!", "#NUM!": "0,e#NUM!",
"#DIV/0!": "0,e#DIV/0!", "#VALUE!": "0,e#VALUE!", "#REF!": "0,e#REF!", "#NAME?": "0,e#NAME?"};
//
// result = default_expand_markup(displayvalue, sheetobj, linkstyle)
//
// Processes wiki-text -- this is a placeholder.
// Reference to here in SocialCalc.expand_markup should be replaced by application-specific routine.
//
SocialCalc.default_expand_markup = function(displayvalue, sheetobj, linkstyle) {
var result = displayvalue;
result = SocialCalc.special_chars(result); // do special chars
result = result.replace(/ /g, " "); // keep multiple spaces
result = result.replace(/\n/g, "<br>"); // keep line breaks
return result; // do very little by default
result = result.replace(/('*)'''(.*?)'''/g, "$1<b>$2<\/b>"); // Wiki-style bold/italics
result = result.replace(/''(.*?)''/g, "<i>$1<\/i>");
return result;
}
//
// result = SocialCalc.expand_text_link(displayvalue, sheetobj, linkstyle, valueformat)
//
// Parses link text (URL, descriptions, pagenames, workspace names) and returns HTML
//
SocialCalc.expand_text_link = function(displayvalue, sheetobj, linkstyle, valueformat) {
var desc, tb, str;
var scc = SocialCalc.Constants;
var url = "";
var parts = SocialCalc.ParseCellLinkText(displayvalue+"");
if (parts.desc) {
desc = SocialCalc.special_chars(parts.desc);
}
else {
desc = parts.pagename ? scc.defaultPageLinkFormatString : scc.defaultLinkFormatString;
}
if (displayvalue.length > 7 && displayvalue.substring(0,7).toLowerCase()=="http://"
&& displayvalue.charAt(displayvalue.length-1)!=">") {
desc = desc.substring(7); // remove http:// unless explicit
}
tb = (parts.newwin || !linkstyle) ? ' target="_blank"' : "";
if (parts.pagename) {
if (SocialCalc.Callbacks.MakePageLink) {
url = SocialCalc.Callbacks.MakePageLink(parts.pagename, parts.workspacename, linkstyle, valueformat);
}
// else if (parts.workspace) {
// url = "/" + encodeURI(parts.workspace) + "/" + encodeURI(parts.pagename);
// }
// else {
// url = parts.pagename;
// }
}
else {
url = encodeURI(parts.url);
}
str = '<a href="' + url + '"' + tb + '>' + desc + '</a>';
return str;
}
//
// result = SocialCalc.ParseCellLinkText(str)
//
( run in 0.663 second using v1.01-cache-2.11-cpan-e93a5daba3e )