public boolean tryAdvance()

in baremaps-core/src/main/java/org/apache/baremaps/iploc/NicSpliterator.java [54:95]


  public boolean tryAdvance(Consumer<? super NicObject> consumer) {
    var keyBuilder = new StringBuilder();
    var valBuilder = new StringBuilder();
    var attributes = new ArrayList<NicAttribute>();

    boolean tryAdvance;
    while ((tryAdvance = lineSpliterator.tryAdvance(this::acceptLine)) && !"".equals(line)) {
      // handle multiline values
      if (line.startsWith(" ")) {
        valBuilder.append("\n");
        valBuilder.append(line.trim());
      }

      // handle multiline values
      else if (line.startsWith("+")) {
        valBuilder.append("\n");
        valBuilder.append(line.substring(1).trim());
      }

      // handle attribute line
      else if (!line.startsWith("#") && !line.startsWith("%")) {
        int index = line.indexOf(":");
        if (index >= 0) {
          addAttribute(attributes, keyBuilder, valBuilder);
          keyBuilder = new StringBuilder();
          valBuilder = new StringBuilder();
          keyBuilder.append(line.substring(0, index).trim());
          valBuilder.append(line.substring(index + 1).trim());
        }
      }
    }

    // handle last attribute
    addAttribute(attributes, keyBuilder, valBuilder);

    // build object
    if (!attributes.isEmpty()) {
      consumer.accept(new NicObject(attributes));
    }

    return tryAdvance;
  }