ide/editor/src/main/java/org/apidesign/bck2brwsr/ide/editor/JSNI2JavaScriptBody.java
1.1 --- a/ide/editor/src/main/java/org/apidesign/bck2brwsr/ide/editor/JSNI2JavaScriptBody.java Wed Feb 13 11:12:55 2013 +0100
1.2 +++ b/ide/editor/src/main/java/org/apidesign/bck2brwsr/ide/editor/JSNI2JavaScriptBody.java Wed Feb 13 12:45:02 2013 +0100
1.3 @@ -55,8 +55,6 @@
1.4 })
1.5 public class JSNI2JavaScriptBody {
1.6
1.7 - private static final Pattern JSNIPattern = Pattern.compile("/\\*-\\{(.*)}-\\*/");
1.8 -
1.9 @TriggerTreeKind(Kind.METHOD)
1.10 @Messages("ERR_JSNI2JavaScriptBody=Can convert JSNI to @JavaScriptBody")
1.11 public static ErrorDescription computeWarning(final HintContext ctx) {
1.12 @@ -88,7 +86,12 @@
1.13 case LINE_COMMENT: break;
1.14 case JAVADOC_COMMENT: break;
1.15 case BLOCK_COMMENT:
1.16 - if (JSNIPattern.matcher(ts.token().text()).matches()) {
1.17 + final CharSequence tok = ts.token().text();
1.18 + final int l = tok.length();
1.19 + if (l > 4
1.20 + && tok.subSequence(0, 4).toString().equals("/*-{") // NOI18N
1.21 + && tok.subSequence(l - 4, l).toString().equals("}-*/") // NOI18N
1.22 + ) {
1.23 return ts.offsetToken();
1.24 }
1.25 break;
1.26 @@ -120,25 +123,24 @@
1.27 //XXX: warn?
1.28 return ;
1.29 }
1.30 -
1.31 - Matcher m = JSNIPattern.matcher(jsniComment.text());
1.32 -
1.33 - if (!m.matches()) return ; //XXX: warn?
1.34 +
1.35 + JsniCommentTokenizer tok = new JsniCommentTokenizer();
1.36 + ManglingSink ms = new ManglingSink();
1.37 + final CharSequence cmnt = jsniComment.text();
1.38 + tok.process(cmnt.subSequence(4, cmnt.length() - 4), ms);
1.39
1.40 TreeMaker make = ctx.getWorkingCopy().getTreeMaker();
1.41 MethodTree mt = (MethodTree) ctx.getPath().getLeaf();
1.42 List<LiteralTree> params = new ArrayList<LiteralTree>();
1.43
1.44 - params.add(make.Literal("this"));
1.45 -
1.46 for (VariableTree p : mt.getParameters()) {
1.47 params.add(make.Literal(p.getName().toString()));
1.48 }
1.49
1.50 AnnotationTree jsBody = make.Annotation(make.QualIdent("org.apidesign.bck2brwsr.core.JavaScriptBody"),
1.51 Arrays.<ExpressionTree>asList(
1.52 - make.Assignment(make.Identifier("body"), make.Literal(m.group(1))),
1.53 - make.Assignment(make.Identifier("args"), make.NewArray(null, Collections.<ExpressionTree>emptyList(), params))
1.54 + make.Assignment(make.Identifier("args"), make.NewArray(null, Collections.<ExpressionTree>emptyList(), params)),
1.55 + make.Assignment(make.Identifier("body"), make.Literal(ms.out.toString()))
1.56 )
1.57 );
1.58