コード例 #1
0
ファイル: ClipsShell.java プロジェクト: ryanzhang/drools
  public void functionHandler(FunctionDescr functionDescr) {
    // for now all functions are in MAIN
    // setModuleName( functionDescr );
    functionDescr.setNamespace("MAIN");
    Appendable builder = new StringBuilderAppendable();

    // strip lead/trailing quotes
    String name = functionDescr.getName().trim();
    if (name.charAt(0) == '"') {
      name = name.substring(1);
    }

    if (name.charAt(name.length() - 1) == '"') {
      name = name.substring(0, name.length() - 1);
    }
    builder.append("function " + name + "(");

    for (int i = 0, length = functionDescr.getParameterNames().size(); i < length; i++) {
      builder.append(functionDescr.getParameterNames().get(i));
      if (i < length - 1) {
        builder.append(", ");
      }
    }

    builder.append(") {\n");
    // TODO: fix this
    //        List list = (List) functionDescr.getBody();
    //        for ( Iterator it = list.iterator(); it.hasNext(); ) {
    //            FunctionHandlers.dump( (LispForm) it.next(),
    //                                   builder,
    //                                   true );
    //        }
    builder.append("}");

    System.out.println("mvel expr:" + builder.toString());

    functionDescr.setText(builder.toString());
    functionDescr.setDialect("clips");

    PackageDescr pkgDescr = createPackageDescr(functionDescr.getNamespace());
    pkgDescr.addFunction(functionDescr);

    this.packageBuilder.addPackage(pkgDescr);
  }