Files
luos/gulliver/js/codemirror/addon/hint/php-hint.js
2020-06-08 17:25:43 -04:00

272 lines
12 KiB
JavaScript

(function () {
var Pos = CodeMirror.Pos;
function forEach(arr, f) {
for (var i = 0, e = arr.length; i < e; ++i) f(arr[i]);
}
function arrayContains(arr, item) {
if (!Array.prototype.indexOf) {
var i = arr.length;
while (i--) {
if (arr[i] === item) {
return true;
}
}
return false;
}
return arr.indexOf(item) != -1;
}
function scriptHint(editor, keywords, getToken, options) {
// Find the token at the cursor
var cur = editor.getCursor(), token = getToken(editor, cur), tprop = token;
var sToken = token.string.trim();
if ( sToken == "(") {
token = tprop = getToken(editor, Pos(cur.line, tprop.start));
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end + 1)};
}
if ( sToken == "=") {
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start + 1),
to: Pos(cur.line, token.end)};
}
return {list: getCompletions(token.string, keywords, options),
from: Pos(cur.line, token.start),
to: Pos(cur.line, token.end)};
}
CodeMirror.phpHint = function(editor, options) {
return scriptHint(editor, phpPMFunctions, function (e, cur) {return e.getTokenAt(cur);}, options);
};
var SPACE = " ";
var arrayFunctions = [];
var formatDate = "formatDate";
var formatDateFunction = [formatDate+"($date,$format,$language);",formatDate+"($date,$format);"];
arrayFunctions[formatDate] = formatDateFunction;
var getCurrentDate = "getCurrentDate";
var getCurrentDateFunction = [getCurrentDate+"()"];
arrayFunctions[getCurrentDate] = getCurrentDateFunction;
var getCurrentTime = "getCurrentTime";
var getCurrentTimeFunction = [getCurrentTime+"()"];
arrayFunctions[getCurrentTime] = getCurrentTimeFunction;
var literalDate = "literalDate";
var literalDateFunction = [literalDate+"($date,$Language)",literalDate+"($date)"];
arrayFunctions[literalDate] = literalDateFunction;
var capitalize = "capitalize";
var capitalizeFunction = [capitalize+"($textToConvert)"];
arrayFunctions[capitalize] = capitalizeFunction;
var lowerCase = "lowerCase";
var lowerCaseFunction = [lowerCase+"($textToConvert)"];
arrayFunctions[lowerCase] = lowerCaseFunction;
var upperCase = "upperCase";
var upperCaseFunction = [upperCase+"($textToConvert)"];
arrayFunctions[upperCase] = upperCaseFunction;
var userInfo = "userInfo";
var userInfoFunction = [userInfo+"($USER_ID)"];
arrayFunctions[userInfo] = userInfoFunction;
var executeQuery = "executeQuery";
var executeQueryFunction = [executeQuery+"($sqlStatement,$DBConnectionUID)",executeQuery+"($sqlStatement)"];
arrayFunctions[executeQuery] = executeQueryFunction;
var orderGrid = "orderGrid";
var orderGridFunction = ("orderGrid($gridName,$field,$criteria) orderGrid($gridName,$field)").split(SPACE);
arrayFunctions[orderGrid] = orderGridFunction;
var evaluateFunction = "evaluateFunction";
var evaluateFunctionFunction = [evaluateFunction+"($gridName,$Expression)"];
arrayFunctions[evaluateFunction] = evaluateFunctionFunction;
var PMFTotalCalculation = "PMFTotalCalculation";
var PMFTotalCalculationFunction = [PMFTotalCalculation + "($gridName, $field, 'function')"];
arrayFunctions[PMFTotalCalculation] = PMFTotalCalculationFunction;
var PMFTaskCase = "PMFTaskCase";
var PMFTaskCaseFunction = [PMFTaskCase+"($caseId)"];
arrayFunctions[PMFTaskCase] = PMFTaskCaseFunction;
var PMFTaskList = "PMFTaskList";
var PMFTaskListFunction = [PMFTaskList+"($userId)"];
arrayFunctions[PMFTaskList] = PMFTaskListFunction;
var PMFUserList = "PMFUserList";
var PMFUserListFunction = [PMFUserList+"()"];
arrayFunctions[PMFUserList] = PMFUserListFunction;
var PMFGroupList = "PMFGroupList";
var PMFGroupListFunction = [PMFGroupList+"()"];
arrayFunctions[PMFGroupList] = PMFGroupListFunction;
var PMFRoleList = "PMFRoleList";
var PMFRoleListFunction = [PMFRoleList+"()"];
arrayFunctions[PMFRoleList] = PMFRoleListFunction;
var PMFCaseList = "PMFCaseList";
var PMFCaseListFunction = [PMFCaseList+"($userId)",PMFCaseList+"()"];
arrayFunctions[PMFCaseList] = PMFCaseListFunction;
var PMFProcessList = "PMFProcessList";
var PMFProcessListFunction = [PMFProcessList+"()"];
arrayFunctions[PMFProcessList] = PMFProcessListFunction;
var PMFSendVariables = "PMFSendVariables";
var PMFSendVariablesFunction = [PMFSendVariables+"($caseId,$variables)"];
arrayFunctions[PMFSendVariables] = PMFSendVariablesFunction;
var PMFDerivateCase = "PMFDerivateCase";
var PMFDerivateCaseFunction = [PMFDerivateCase+"($caseId,$delegation,$executeTriggersBeforeAssigment)",PMFDerivateCase+"($caseId,$delegation)"];
arrayFunctions[PMFDerivateCase] = PMFDerivateCaseFunction;
var PMFNewCaseImpersonate = "PMFNewCaseImpersonate";
var PMFNewCaseImpersonateFunction = [PMFNewCaseImpersonate+"($processId,$userId,$variables)"];
arrayFunctions[PMFNewCaseImpersonate] = PMFNewCaseImpersonateFunction;
var PMFNewCase = "PMFNewCase";
var PMFNewCaseFunction = [PMFNewCase+"($processId,$userId,$taskId,$variables)"];
arrayFunctions[PMFNewCase] = PMFNewCaseFunction;
var PMFPauseCase = "PMFPauseCase";
var PMFPauseCaseFunction = [PMFPauseCase+"($caseUid,$delIndex,$userUid,$unpauseDate)",PMFPauseCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFPauseCase] = PMFPauseCaseFunction;
var PMFAssignUserToGroup = "PMFAssignUserToGroup";
var PMFAssignUserToGroupFunction = [PMFAssignUserToGroup+"($userId,$groupId)"];
arrayFunctions[PMFAssignUserToGroup] = PMFAssignUserToGroupFunction;
var PMFCreateUser = "PMFCreateUser";
var PMFCreateUserFunction = [PMFCreateUser+"($userId,$password,$firstname,$lastname,$email,$role)"];
arrayFunctions[PMFCreateUser] = PMFCreateUserFunction;
var PMFUpdateUser = "PMFUpdateUser";
var PMFUpdateUserFunction = [PMFUpdateUser+"($userUid,$userName,$firstName,$lastName,$email,$dueDate,$status,$role,$password)"];
arrayFunctions[PMFUpdateUser] = PMFUpdateUserFunction;
var PMFInformationUser = "PMFInformationUser";
var PMFInformationUserFunction = [PMFInformationUser+"($userUid)"];
arrayFunctions[PMFInformationUser] = PMFInformationUserFunction;
var generateCode = "generateCode";
var generateCodeFunction = [generateCode+"($size,$type)"];
arrayFunctions[generateCode] = generateCodeFunction;
var setCaseTrackerCode = "setCaseTrackerCode";
var setCaseTrackerCodeFunction = [setCaseTrackerCode+"($caseId,$code,$pin)"];
arrayFunctions[setCaseTrackerCode] = setCaseTrackerCodeFunction;
var jumping = "jumping";
var jumpingFunction = [jumping+"($caseId,$delegation)"];
arrayFunctions[jumping] = jumpingFunction;
var PMFRedirectToStep = "PMFRedirectToStep";
var PMFRedirectToStepFunction = [PMFRedirectToStep+"($caseId,$delegation,$stepType,$stepId)"];
arrayFunctions[PMFRedirectToStep] = PMFRedirectToStepFunction;
var pauseCase = "pauseCase";
var pauseCaseFunction = [pauseCase+"($caseId,$delegation,$userId,$unpauseDate)",pauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[pauseCase] = pauseCaseFunction;
var PMFUnpauseCase = "PMFUnpauseCase";
var PMFUnpauseCaseFunction = [PMFUnpauseCase+"($caseId,$delegation,$userId,$unpauseDate)",PMFUnpauseCase+"($caseId,$delegation,$userId)"];
arrayFunctions[PMFUnpauseCase] = PMFUnpauseCaseFunction;
var PMFSendMessage = "PMFSendMessage";
var PMFSendMessageFunction = [PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields,$attachments)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template,$fields)",PMFSendMessage+"($caseId,$from,$to,$cc,$bcc,$subject,$template)"];
arrayFunctions[PMFSendMessage] = PMFSendMessageFunction;
var PMFgetLabelOption = "PMFgetLabelOption";
var PMFgetLabelOptionFunction = [PMFgetLabelOption+"($processId,$dynaformId,$fieldName,$optionId)"];
arrayFunctions[PMFgetLabelOption] = PMFgetLabelOptionFunction;
var PMFGenerateOutputDocument = "PMFGenerateOutputDocument";
var PMFGenerateOutputDocumentFunction = [PMFGenerateOutputDocument+"($outputID)"];
arrayFunctions[PMFGenerateOutputDocument] = PMFGenerateOutputDocumentFunction;
var PMFGetUserEmailAddress = "PMFGetUserEmailAddress";
var PMFGetUserEmailAddressFunction = [PMFGetUserEmailAddress+"($id,$APP_UID,$prefix)",PMFGetUserEmailAddress+"($id,$APP_UID)",PMFGetUserEmailAddress+"($id)"];
arrayFunctions[PMFGetUserEmailAddress] = PMFGetUserEmailAddressFunction;
var PMFGetNextAssignedUser = "PMFGetNextAssignedUser";
var PMFGetNextAssignedUserFunction = (PMFGetNextAssignedUser+"($application,$task)").split(SPACE);
arrayFunctions[PMFGetNextAssignedUser] = PMFGetNextAssignedUserFunction;
var PMFDeleteCase = "PMFDeleteCase";
var PMFDeleteCaseFunction = ("PMFDeleteCase($caseId)").split(SPACE);
arrayFunctions[PMFDeleteCase] = PMFDeleteCaseFunction;
var PMFCancelCase = "PMFCancelCase";
var PMFCancelCaseFunction = [PMFCancelCase+"($caseUid,$delIndex,$userUid)"];
arrayFunctions[PMFCancelCase] = PMFCancelCaseFunction;
var PMFAddInputDocument = "PMFAddInputDocument";
var PMFAddInputDocumentFunction = [PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option,$file)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid,$option)",PMFAddInputDocument+"($inputDocumentUid,$appDocUid,$docVersion,$appDocType,$appDocComment,$inputDocumentAction,$caseUid,$delIndex,$taskUid,$userUid)"];
arrayFunctions[PMFAddInputDocument] = PMFAddInputDocumentFunction;
var PMFAddCaseNote = "PMFAddCaseNote";
var PMFAddCaseNoteFunction = [PMFAddCaseNote+"($caseUid,$processUid,$taskUid,$userUid,$note,$sendMail)"];
arrayFunctions[PMFAddCaseNote] = PMFAddCaseNoteFunction;
var PMFGetCaseNotes = "PMFGetCaseNotes";
var PMFGetCaseNotesFunction = [PMFGetCaseNotes+"($applicationID,$type,$userUid);",PMFGetCaseNotes+"($applicationID,$type)",PMFGetCaseNotes+"($applicationID)"];
arrayFunctions[PMFGetCaseNotes] = PMFGetCaseNotesFunction;
var phpPMFunctions = [formatDate,getCurrentDate,getCurrentTime,literalDate,capitalize,lowerCase,upperCase,userInfo,executeQuery,orderGrid,
evaluateFunction, PMFTotalCalculation, PMFTaskCase,PMFTaskList,PMFUserList,PMFGroupList,PMFRoleList,PMFCaseList,PMFProcessList,PMFSendVariables,PMFDerivateCase,
PMFNewCaseImpersonate,PMFNewCase,PMFPauseCase,PMFUnpauseCase,PMFAssignUserToGroup,PMFCreateUser,PMFUpdateUser,PMFInformationUser,
generateCode,setCaseTrackerCode,jumping,PMFRedirectToStep,pauseCase,PMFSendMessage,PMFgetLabelOption,PMFGenerateOutputDocument,
PMFGetUserEmailAddress,PMFGetNextAssignedUser,PMFDeleteCase,PMFCancelCase,PMFAddInputDocument,PMFAddCaseNote,PMFGetCaseNotes];
var phpKeywords = ("break case catch continue default do else false for function " +
"if new return switch throw true try var while").split(SPACE);
function getCompletions(functionName, keywords, options) {
var found = [];
function maybeAdd(str) {// for keywords ?
if ( str.indexOf(functionName) == 0 && !arrayContains(found, str)) {
found.push(str);
}
}
function yesAdd(str) {
if ( !arrayContains(found, str)) {
found.push(str);
}
}
arrayFunction = arrayFunctions[functionName];
if (arrayFunction != undefined) {
forEach( arrayFunction, yesAdd);
} else {
if (functionName.trim() == "") {
forEach (phpKeywords, yesAdd);
forEach (keywords, yesAdd);
} else if (functionName == "=") {
forEach (phpPMFunctions, yesAdd);
} else {
for (index = 0; index < phpKeywords.length; index++) {
if ( phpKeywords[index].indexOf(functionName) == 0 ) {
found.push(phpKeywords[index]);
}
}
forEach(keywords, maybeAdd);
}
}
return found;
}
})();