Beispiel #1
0
  private CoreObject xGeneralReplace(CoreCall cc, boolean escapeRx) throws InterpreterException {
    String resultString = getCurrentObject(cc).value.toString();

    Iterator<String> i = cc.members.keySet().iterator();
    while (i.hasNext()) {
      String replaceFind = i.next();
      String replaceWith = cc.members.get(replaceFind).toString();
      replaceFind = replaceFind.substring(1);
      if (escapeRx) replaceFind = Pattern.quote(replaceFind);
      resultString = resultString.replaceAll(replaceFind, replaceWith);
    }

    if (cc.argCount > 0) {
      for (int idx = 0; idx < cc.argCount; idx++) {
        CoreObject rObj = cc.argPop();
        if (rObj.getClass() == CoreMap.class) {
          CoreMap map = (CoreMap) rObj;
          Iterator<String> mi = map.items.keySet().iterator();
          while (mi.hasNext()) {
            String replaceFind = mi.next();
            String replaceWith = map.items.get(replaceFind).toString();
            if (escapeRx) replaceFind = Pattern.quote(replaceFind);
            resultString = resultString.replaceAll(replaceFind, replaceWith);
          }
        } else {
          String replaceFind = rObj.toString();
          resultString = resultString.replaceAll(replaceFind, "");
        }
      }
    }

    return new CoreString(resultString);
  }