From 3e7d8e0ccabb685273960e183c5d80ded8e037ff Mon Sep 17 00:00:00 2001 From: toshihiro Date: Tue, 14 Aug 2007 02:11:58 +0000 Subject: [PATCH] Modified: separate code for 'define'. was shown unnecessary closing parenthesis. --- .../phpdt/internal/corext/phpdoc/PHPDocUtil.java | 62 +++++++++++++++++--- 1 files changed, 53 insertions(+), 9 deletions(-) diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java index 5bf73a7..426a5e9 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/phpdoc/PHPDocUtil.java @@ -93,15 +93,21 @@ public class PHPDocUtil { if (length == -1) { length = 256; } - for (int i = 0; i < length; i++) { - if (functionDeclarationCharArray[i] == ')') { - length = i + 1; - break; - } - if (functionDeclarationCharArray[i] == '{' - || functionDeclarationCharArray[i] == '}') { - length = i; - break; + if (location.isDefine()) { + length = getClosingParenthesis(functionDeclarationCharArray); + if (length < 0) + return ""; + } else { + for (int i = 0; i < length; i++) { + if (functionDeclarationCharArray[i] == ')') { + length = i + 1; + break; + } + if (functionDeclarationCharArray[i] == '{' + || functionDeclarationCharArray[i] == '}') { + length = i; + break; + } } } usage = new String(functionDeclarationCharArray, 0, length); @@ -134,4 +140,42 @@ public class PHPDocUtil { return null; } + private static int getClosingParenthesis(char[] buffer) { + int p = 0; + boolean dq = false; + boolean sq = false; + + for (int i = 0; i < buffer.length; i++) { + if (buffer[i] == '\\') { + i++; + continue; + } + if (dq) { + dq = (buffer[i] != '"'); + continue; + } + if (sq) { + sq = (buffer[i] != '\''); + continue; + } + switch (buffer[i]) { + case '(': + p++; + break; + case ')': + p--; + if (p < 0) + return i; + break; + case '"': + dq = true; + break; + case '\'': + sq = true; + break; + } + } + return -1; + } + } -- 1.7.1