diff --git a/build.gradle.kts b/build.gradle.kts index dd8e131..c50fab1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,13 +1,13 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar - plugins { id("maven-publish") id("java") id("com.github.johnrengelman.shadow") version "7.1.2" } +val commonVersion: String by properties + group = "chaos.unity.nenggao" -version = "1.4.0" +version = commonVersion repositories { mavenCentral() diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..4e295db --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +commonVersion=1.4.1 \ No newline at end of file diff --git a/kotlinImpl/build.gradle.kts b/kotlinImpl/build.gradle.kts index eea44a8..821848e 100644 --- a/kotlinImpl/build.gradle.kts +++ b/kotlinImpl/build.gradle.kts @@ -2,8 +2,10 @@ plugins { kotlin("jvm") version "1.7.20" } +val commonVersion: String by project(":").properties + group = "chaos.unity.nenggao" -version = "1.4.0" +version = commonVersion repositories { mavenCentral() diff --git a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtLabel.kt b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtLabel.kt new file mode 100644 index 0000000..b8ae4ea --- /dev/null +++ b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtLabel.kt @@ -0,0 +1,7 @@ +package chaos.unity.nengao + +import chaos.unity.nenggao.AbstractLabel +import chaos.unity.nenggao.AbstractSpan + +@Suppress("unused") +data class KtLabel(val span: AbstractSpan, val message: String) : AbstractLabel(span, message) diff --git a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtPosition.kt b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtPosition.kt new file mode 100644 index 0000000..94d1859 --- /dev/null +++ b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtPosition.kt @@ -0,0 +1,6 @@ +package chaos.unity.nengao + +import chaos.unity.nenggao.AbstractPosition + +@Suppress("unused") +data class KtPosition(val line: Int, val pos: Int) : AbstractPosition(line, pos) diff --git a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Span.kt b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtSpan.kt similarity index 82% rename from kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Span.kt rename to kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtSpan.kt index b8e56d0..8fd7090 100644 --- a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Span.kt +++ b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/KtSpan.kt @@ -1,10 +1,11 @@ -package chaos.unity.nengao.kotlin +package chaos.unity.nengao import chaos.unity.nenggao.AbstractPosition import chaos.unity.nenggao.AbstractSpan import chaos.unity.nenggao.Span -data class Span(val startPosition: AbstractPosition, val endPosition: AbstractPosition) : +@Suppress("unused") +data class KtSpan(val startPosition: AbstractPosition, val endPosition: AbstractPosition) : AbstractSpan(startPosition, endPosition) { override fun expand(endSpan: AbstractSpan?): AbstractSpan = endSpan?.let { diff --git a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Label.kt b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Label.kt deleted file mode 100644 index 3d9a537..0000000 --- a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Label.kt +++ /dev/null @@ -1,6 +0,0 @@ -package chaos.unity.nengao.kotlin - -import chaos.unity.nenggao.AbstractLabel -import chaos.unity.nenggao.AbstractSpan - -data class Label(val span: AbstractSpan, val message: String) : AbstractLabel(span, message) diff --git a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Position.kt b/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Position.kt deleted file mode 100644 index 84b91c5..0000000 --- a/kotlinImpl/src/main/kotlin/chaos/unity/nengao/kotlin/Position.kt +++ /dev/null @@ -1,5 +0,0 @@ -package chaos.unity.nengao.kotlin - -import chaos.unity.nenggao.AbstractPosition - -data class Position(val line: Int, val pos: Int) : AbstractPosition(line, pos) diff --git a/scalaImpl/build.gradle.kts b/scalaImpl/build.gradle.kts new file mode 100644 index 0000000..e4f27e1 --- /dev/null +++ b/scalaImpl/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + scala +} + +val commonVersion: String by properties + +group = "chaos.unity.nenggao" +version = commonVersion + +repositories { + mavenCentral() +} + +dependencies { + implementation(project(":")) +} diff --git a/scalaImpl/src/main/scala/chaos/unity/nenggao/ScLabel.scala b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScLabel.scala new file mode 100644 index 0000000..2ea4fc3 --- /dev/null +++ b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScLabel.scala @@ -0,0 +1,6 @@ +package chaos.unity.nenggao + +import scala.annotation.unused + +@unused +case class ScLabel(span: AbstractSpan, message: String) extends AbstractLabel(span, message) diff --git a/scalaImpl/src/main/scala/chaos/unity/nenggao/ScPosition.scala b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScPosition.scala new file mode 100644 index 0000000..284c598 --- /dev/null +++ b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScPosition.scala @@ -0,0 +1,6 @@ +package chaos.unity.nenggao + +import scala.annotation.unused + +@unused +case class ScPosition(line: Int, pos: Int) extends AbstractPosition(line, pos) diff --git a/scalaImpl/src/main/scala/chaos/unity/nenggao/ScSpan.scala b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScSpan.scala new file mode 100644 index 0000000..9bf929e --- /dev/null +++ b/scalaImpl/src/main/scala/chaos/unity/nenggao/ScSpan.scala @@ -0,0 +1,20 @@ +package chaos.unity.nenggao + +case class ScSpan(startPosition: AbstractPosition, endPosition: AbstractPosition) extends AbstractSpan(startPosition, endPosition) { + override def expand(endSpan: AbstractSpan): AbstractSpan = { + val copied = copy() + + if (endSpan == null) copied + else if (endSpan.endPosition.line < startPosition.line) copied + else if (endSpan.endPosition.line == startPosition.line && endSpan.endPosition.pos < startPosition.pos) copied + else { + val startPosition = startPosition + val endPosition = endSpan.endPosition + + ScSpan(startPosition, endPosition) + } + } + + override def copy(): AbstractSpan = + ScSpan(startPosition, endPosition) +} diff --git a/settings.gradle.kts b/settings.gradle.kts index a43a07d..1b78f46 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,2 +1,4 @@ rootProject.name = "Nenggao" + include("kotlinImpl") +include("scalaImpl") diff --git a/src/test/resources/long_line.yk b/src/test/resources/long_line.yk index ca94af1..e69de29 100644 --- a/src/test/resources/long_line.yk +++ b/src/test/resources/long_line.yk @@ -1,10 +0,0 @@ -start -post-start - - - - - - -pre-end -end \ No newline at end of file