On Wednesday 14 of April 2010 14:46:50 Dusan Zatkovsky wrote:
> Bingo! Musim uznat, ze som sa tomu venoval tak 15 minut a mam to s
> javaparser skoro hotove!
>
> Diky diky.

Keby to niekoho zaujimalo, moze sa inspirovat:

        File src = new File("src/main/java/test/App.java");

        CompilationUnit u = JavaParser.parse(src);
        new MethodVisitor().visit(u, null);

        // toto sa bude prekladat
        tr("tr string 1");
        this.tr("tr string 2");
        QApplication.translate("context1", "text1");
        QApplication.translate("context2", "text2", 3);

        // toto sa nebude prekladat
        // QApplication.translate("context3", "text3", 3);

        // toto sa tiez nebude prekladat
        /* test
        QApplication.translate("context4", "text4", 3);
         * 
         */

    private static class MethodVisitor extends VoidVisitorAdapter {

        private String className;

        public void visit(ClassOrInterfaceDeclaration n, Object arg) {

            this.className = n.getName();
            super.visit(n, arg);

        }

        public void visit(MethodCallExpr n, Object arg) {

            String name = n.getName();
            Expression scope = n.getScope();
            List args = n.getArgs();

            if (name.equals("tr")) {
                if (args.size() == 1) {
                    Translator.translate( className, args.get(0).toString());
                }
            } else if (name.equals("translate") && scope != null && 
scope.toString().equals("QApplication")) {
                if (args.size() == 2) {
                    Translator.translate(args.get(0).toString(), 
args.get(1).toString());
                } else if (args.size() == 3) {
                    System.out.println(args.get(2));
                    Translator.translate(args.get(0).toString(), 
args.get(1).toString(), new Integer(args.get(2).toString()).intValue());
                }
            }

            super.visit(n, arg);
        }
    }



... ake jednoduche !


-- 
Dusan


... tykajte mi

Odpovedet emailem