Branch: refs/heads/master Author: dfishburn dfishburn@c5d04d22-be80-434c-894e-aa346cc9e8e8 Committer: Colomban Wendling ban@herbesfolles.org Date: Mon, 24 Nov 2014 00:39:36 UTC Commit: 52d2d735272b2d9298aedbf202ed1853b840ada9 https://github.com/geany/geany/commit/52d2d735272b2d9298aedbf202ed1853b840ad...
Log Message: ----------- Udated jscript to be able to parse SAPUI5 controller and view files.
Added test case tests/ctags/ui5.controller.js
git-svn-id: https://svn.code.sf.net/p/ctags/code/trunk@808 c5d04d22-be80-434c-894e-aa346cc9e8e8
Modified Paths: -------------- tagmanager/ctags/js.c tests/ctags/Makefile.am tests/ctags/ui5.controller.js tests/ctags/ui5.controller.js.tags
Modified: tagmanager/ctags/js.c 55 lines changed, 55 insertions(+), 0 deletions(-) =================================================================== @@ -69,6 +69,7 @@ typedef enum eKeywordId { KEYWORD_try, KEYWORD_catch, KEYWORD_finally, + KEYWORD_sap, KEYWORD_return } keywordId;
@@ -158,6 +159,7 @@ static const keywordDesc JsKeywordTable [] = { { "try", KEYWORD_try }, { "catch", KEYWORD_catch }, { "finally", KEYWORD_finally }, + { "sap", KEYWORD_sap }, { "return", KEYWORD_return } };
@@ -169,6 +171,7 @@ static const keywordDesc JsKeywordTable [] = { static void parseFunction (tokenInfo *const token); static boolean parseBlock (tokenInfo *const token, tokenInfo *const parent); static boolean parseLine (tokenInfo *const token, boolean is_inside_class); +static void parseUI5 (tokenInfo *const token);
static boolean isIdentChar (const int c) { @@ -1629,6 +1632,56 @@ static boolean parseStatement (tokenInfo *const token, boolean is_inside_class) return is_terminated; }
+static void parseUI5 (tokenInfo *const token) +{ + tokenInfo *const name = newToken (); + boolean is_inside_class = FALSE; + /* + * SAPUI5 is built on top of jQuery. + * It follows a standard format: + * sap.ui.controller("id.of.controller", { + * method_name : function... { + * }, + * + * method_name : function ... { + * } + * } + * + * Handle the parsing of the initial controller (and the + * same for "view") and then allow the methods to be + * parsed as usual. + */ + + readToken (token); + + if (isType (token, TOKEN_PERIOD)) + { + readToken (token); + while (! isType (token, TOKEN_OPEN_PAREN) ) + { + readToken (token); + } + readToken (token); + + if (isType (token, TOKEN_STRING)) + { + copyToken(name, token); + readToken (token); + } + + if (isType (token, TOKEN_COMMA)) + readToken (token); + + do + { + parseMethods (token, name); + } while (! isType (token, TOKEN_CLOSE_CURLY) ); + } +cleanUp: + deleteToken (name); + +} + static boolean parseLine (tokenInfo *const token, boolean is_inside_class) { boolean is_terminated = TRUE; @@ -1691,6 +1744,8 @@ static void parseJsFile (tokenInfo *const token)
if (isType (token, TOKEN_KEYWORD) && token->keyword == KEYWORD_function) parseFunction (token); + else if (isType (token, TOKEN_KEYWORD) && token->keyword == KEYWORD_sap) + parseUI5 (token); else parseLine (token, FALSE); } while (TRUE);
Modified: tests/ctags/Makefile.am 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -258,6 +258,7 @@ test_sources = \ test_input2.rs \ traffic_signal.v \ traits.php \ + ui5.controller.js \ union.f \ value.f \ whitespaces.php \
Modified: tests/ctags/ui5.controller.js 23 lines changed, 23 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,23 @@ +sap.ui.controller("app.my_form", { + + onInit : function () { + this.selectListView = null; + sap.ui.getCore().byId("id_createButton").setEnabled(true); + }, + + refreshForm : function (AUFNR) { + if (AUFNR && AUFNR !== '') { + this.objId = this.oView.sId; + } + return; + }, + + refreshSettlements : function (AUFNR) { + }, + + setRefreshed : function (value) { + this.refreshed = value; + }, +}); + +
Modified: tests/ctags/ui5.controller.js.tags 5 lines changed, 5 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,5 @@ +# format=tagmanager +onInit�128�app.my_form�0 +refreshForm�128�sap.app.my_form�0 +refreshSettlements�128�sap.app.my_form�0 +setRefreshed�128�sap.app.my_form�0
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).