jhipster / prettier-java

Prettier Java Plugin
http://www.jhipster.tech/prettier-java/
Apache License 2.0
1.08k stars 103 forks source link

Regression: more builder chaining being off #650

Closed xenoterracide closed 3 months ago

xenoterracide commented 7 months ago

Prettier-Java 2.6.0

Input:

2.5.0

      .map(v ->
        v
          .getPreRelease()
          .stream()
          .filter(p -> p.matches("^\\d+-+g\\p{XDigit}{7}$"))
          .findFirst()
          .map(p -> v.withClearedPreRelease().withPreRelease(SNAPSHOT).withBuild(p))
          .orElse(v)

Output: 2.6.0

      .map(
        v ->
          v
            .getPreRelease()
            .stream()
            .filter(p -> p.matches("^\\d+-+g\\p{XDigit}{7}$"))
            .findFirst()
            .map(p -> v.withClearedPreRelease().withPreRelease(SNAPSHOT).withBuild(p))
            .orElse(v)

Expected behavior: Prettier TS

    .map(v ->
      v
        .getPreRelease()
        .stream()
        .filter((p) => p.matches("^\\d+-+g\\p{XDigit}{7}$"))
        .findFirst()
        .map((p) => v.withClearedPreRelease().withPreRelease(SNAPSHOT).withBuild(p))
        .orElse(v),
    )

oddly, I think that this would be better, but doesn't really match typescript, I find it weird to have v by itself on a line

    .map(v ->
      v.getPreRelease()
        .stream()
        .filter((p) => p.matches("^\\d+-+g\\p{XDigit}{7}$"))
        .findFirst()
        .map((p) => v.withClearedPreRelease().withPreRelease(SNAPSHOT).withBuild(p))
        .orElse(v),
    )

Here's the complete method (as per 2.6.0), I line break at 120

 public Semver getMaven() {
    return describe()
      .map(v -> null == v ? PRE_VERSION : v)
      .map(Semver::coerce)
      .map(v -> Objects.equals(v.getVersion(), PRE_VERSION) ? v.withPreRelease(SNAPSHOT) : v)
      .map(
        v ->
          v
            .getPreRelease()
            .stream()
            .filter(p -> p.matches("^\\d+-+g\\p{XDigit}{7}$"))
            .findFirst()
            .map(p -> v.withClearedPreRelease().withPreRelease(SNAPSHOT).withBuild(p))
            .orElse(v)
      )
      .map(v -> new MavenSemver(v.getVersion()))
      .get();
  }