Exemplo n.º 1
0
  /**
   * Create a pattern for text parsing
   *
   * @param pattern pattern definition
   * @return pattern pattern
   */
  private ProcPattern createPattern(Pattern pattern) {
    if (pattern.getElements() == null || pattern.getElements().isEmpty()) {
      throw new IllegalStateException("Pattern elements list can't be empty.");
    }

    List<ProcPatternElement> elements = new ArrayList<ProcPatternElement>();
    for (PatternElement element : pattern.getElements()) {
      if (element instanceof Variable) {
        Variable variable = (Variable) element;
        if (variable.getAction() != Action.check) {
          elements.add(
              new ProcVariable(
                  variable.getName(),
                  variable.getRegex(),
                  variable.isGhost(),
                  variable.getAction()));
        } else {
          elements.add(new Check(variable.getName(), variable.isGhost()));
        }
      } else if (element instanceof Text) {
        elements.add(create((Text) element));
      } else if (element instanceof Constant) {
        elements.add(createPatternConstant((Constant) element));
      } else if (element instanceof Junk) {
        elements.add(JUNK);
      } else if (element instanceof Eol) {
        elements.add(new ProcEol(((Eol) element).isGhost()));
      } else if (element instanceof Bol) {
        elements.add(PROC_BOL);
      } else if (element instanceof BlankLine) {
        elements.add(new ProcBlankLine(((BlankLine) element).isGhost()));
      } else if (element instanceof Url) {
        Url url = (Url) element;
        elements.add(new ProcUrl(url.getName(), url.isGhost(), url.isLocal(), url.isSchemaless()));
      }
    }
    return new ProcPattern(elements);
  }