Пример #1
0
  /** Updates outputs based on current pattern's group settings. */
  private void updateOutputs() {
    for (int i = 1; i <= pattern.numberOfGroups(); i++) {
      // try to find output field
      int outputFieldIdx = i + 1;
      final String outName = (pattern.groupName(i) != null ? pattern.groupName(i) : "g" + i);
      OutputField outField = null;
      if (outputFieldIdx < getOutputFields().size()) {
        outField = getOutputFields().get(outputFieldIdx);
      } else {
        outField = new OutputField(outName, "output for group " + i, false, IPATranscript.class);
        putField(outField);
      }
      outField.setKey(outName);
    }

    // remove extras
    for (int i = pattern.numberOfGroups() + 2; i < getOutputFields().size(); i++) {
      removeField(getOutputFields().get(i));
    }

    //		// add a new output field for each group
    //		// in our pattern
    //		for(int gIdx = 1; gIdx <= pattern.numberOfGroups(); gIdx++) {
    //			String outputName =
    //					(pattern.groupName(gIdx) != null ? pattern.groupName(gIdx) : "g" + gIdx);
    //			OutputField groupOut =
    //					new OutputField(outputName, "Content of group " + gIdx + ". Valid only if matches is
    // true",
    //							false, IPATranscript.class);
    //			super.putField(groupOut);
    //		}
  }
Пример #2
0
  @Override
  public void operate(OpContext arg0) throws ProcessingException {
    // get input
    IPATranscript transcript = IPATranscript.class.cast(arg0.get(ipaInput));

    // create a new matcher
    PhonexMatcher matcher = pattern.matcher(transcript);
    if (matcher.matches()) {
      // set matches output
      arg0.put(matchesOut, Boolean.TRUE);

      arg0.put(g0Out, new IPATranscript(matcher.group(0)));

      for (int gIdx = 1; gIdx <= pattern.numberOfGroups(); gIdx++) {
        String outputName =
            (pattern.groupName(gIdx) != null ? pattern.groupName(gIdx) : "g" + gIdx);
        arg0.put(outputName, new IPATranscript(matcher.group(gIdx)));
      }
    }
  }