From a191d73aa231f731e9224009c8ed37ecb1cfd127 Mon Sep 17 00:00:00 2001 From: Frank Thomas Date: Sat, 11 Jan 2025 07:28:31 +0100 Subject: [PATCH] Improve parser --- .../core/buildtool/gradle/gradleParser.scala | 37 ++++++++----------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/modules/core/src/main/scala/org/scalasteward/core/buildtool/gradle/gradleParser.scala b/modules/core/src/main/scala/org/scalasteward/core/buildtool/gradle/gradleParser.scala index 18d27ece90..7a1be95437 100644 --- a/modules/core/src/main/scala/org/scalasteward/core/buildtool/gradle/gradleParser.scala +++ b/modules/core/src/main/scala/org/scalasteward/core/buildtool/gradle/gradleParser.scala @@ -34,30 +34,26 @@ object gradleParser { (dependencies, plugins) } - private def collectEntries[A: Ordering](table: TomlTable, f: TomlTable => Option[A]): List[A] = - table - .entrySet() - .asScala - .map(_.getValue) - .flatMap { - case t: TomlTable => f(t) - case _ => None - } - .toList - .sorted + private def collectEntries[A: Ordering](table: TomlTable, f: TomlTable => Option[A]): List[A] = { + val aSet = table.entrySet().asScala.map(_.getValue).flatMap { + case t: TomlTable => f(t) + case _ => None + } + aSet.toList.sorted + } private def parseDependency(lib: TomlTable, versions: TomlTable): Option[Dependency] = parseVersion(lib, versions).flatMap { version => - parseSimpleLib(lib, version).orElse(parseModuleLib(lib, version)) + parseModuleObj(lib, version).orElse(parseModuleString(lib, version)) } - private def parseSimpleLib(lib: TomlTable, version: Version): Option[Dependency] = + private def parseModuleObj(lib: TomlTable, version: Version): Option[Dependency] = for { groupId <- getStringSafe(lib, "group").map(GroupId(_)) artifactId <- getStringSafe(lib, "name").map(ArtifactId(_)) } yield Dependency(groupId, artifactId, version) - private def parseModuleLib(lib: TomlTable, version: Version): Option[Dependency] = + private def parseModuleString(lib: TomlTable, version: Version): Option[Dependency] = for { module <- getStringSafe(lib, "module") (groupId, artifactId) <- module.split(':') match { @@ -74,14 +70,11 @@ object gradleParser { version <- parseVersion(plugin, versions) } yield Dependency(groupId, artifactId, version) - private def parseVersion(table: TomlTable, versions: TomlTable): Option[Version] = - parseVersionString(table).orElse(parseVersionRef(table, versions)).map(Version.apply) - - private def parseVersionString(table: TomlTable): Option[String] = - getStringSafe(table, "version") - - private def parseVersionRef(table: TomlTable, versions: TomlTable): Option[String] = - getStringSafe(table, "version.ref").flatMap(ref => getStringSafe(versions, ref)) + private def parseVersion(table: TomlTable, versions: TomlTable): Option[Version] = { + def versionString = getStringSafe(table, "version") + def versionRef = getStringSafe(table, "version.ref").flatMap(getStringSafe(versions, _)) + versionString.orElse(versionRef).map(Version.apply) + } private def getStringSafe(table: TomlTable, key: String): Option[String] = Option.when(table.contains(key) && table.isString(key))(table.getString(key))