Skip to content

Commit

Permalink
Apply ktlint formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
elcolto committed May 3, 2024
1 parent 68c39cb commit 8c56010
Show file tree
Hide file tree
Showing 29 changed files with 242 additions and 205 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,25 @@ open class GeoJsonBenchmark {
}

repeat(5000) {
feature(geometry = lineString {
repeat(10) {
+Position(random.nextDouble(360.0) - 180, random.nextDouble(360.0) - 180)
feature(
geometry = lineString {
repeat(10) {
+Position(random.nextDouble(360.0) - 180, random.nextDouble(360.0) - 180)
}
}
})
)
}

repeat(5000) {
feature(geometry = polygon {
ring {
repeat(10) {
+Position(random.nextDouble(360.0) - 180, random.nextDouble(360.0) - 180)
feature(
geometry = polygon {
ring {
repeat(10) {
+Position(random.nextDouble(360.0) - 180, random.nextDouble(360.0) - 180)
}
}
}
})
)
}
}
}
Expand Down Expand Up @@ -86,7 +90,6 @@ open class GeoJsonBenchmark {
Json.encodeToString(jsonObject)
}


@Benchmark
fun deserialization() {
FeatureCollection.fromJson(geojson)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ class Feature(
MapSerializer(
String.serializer(),
JsonElement.serializer()
), properties
),
properties
)
}}"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,3 @@ sealed class Geometry protected constructor() : GeoJson {
}
}
}



Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,11 @@ class MultiLineString @JvmOverloads constructor(
return result
}

override fun json(): String =
"""{"type":"MultiLineString",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin {
it.jsonJoin(transform = Position::json)
}
}}"""
override fun json(): String = """{"type":"MultiLineString",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin {
it.jsonJoin(transform = Position::json)
}
}}"""

companion object {
@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,17 @@ class MultiPolygon @JvmOverloads constructor(
return result
}

override fun json(): String =
"""{"type":"MultiPolygon",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin { polygon ->
polygon.jsonJoin {
it.jsonJoin(transform = Position::json)
}
override fun json(): String = """{"type":"MultiPolygon",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin { polygon ->
polygon.jsonJoin {
it.jsonJoin(transform = Position::json)
}
}}"""
}
}}"""

companion object {
@JvmStatic
public fun fromJson(json: String): MultiPolygon =
fromJson(Json.decodeFromString(JsonObject.serializer(), json))
public fun fromJson(json: String): MultiPolygon = fromJson(Json.decodeFromString(JsonObject.serializer(), json))

@JvmStatic
public fun fromJsonOrNull(json: String): MultiPolygon? = try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,9 @@ class Polygon @JvmOverloads constructor(
return result
}

override fun json(): String =
"""{"type":"Polygon",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin { it.jsonJoin(transform = Position::json) }
}}"""
override fun json(): String = """{"type":"Polygon",${bbox.jsonProp()}"coordinates":${
coordinates.jsonJoin { it.jsonJoin(transform = Position::json) }
}}"""

companion object {
@JvmStatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package io.github.dellisd.spatialk.geojson
import io.github.dellisd.spatialk.geojson.serialization.PositionSerializer
import io.github.dellisd.spatialk.geojson.serialization.jsonJoin
import kotlinx.serialization.Serializable
import kotlin.jvm.JvmInline
import kotlin.jvm.JvmSynthetic

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ class FeatureCollectionDsl(
features.add(this)
}

fun create(): FeatureCollection =
FeatureCollection(features, bbox)
fun create(): FeatureCollection = FeatureCollection(features, bbox)

fun feature(
geometry: Geometry? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import io.github.dellisd.spatialk.geojson.BoundingBox
import io.github.dellisd.spatialk.geojson.Geometry
import io.github.dellisd.spatialk.geojson.GeometryCollection
import io.github.dellisd.spatialk.geojson.LineString
import io.github.dellisd.spatialk.geojson.Position
import io.github.dellisd.spatialk.geojson.MultiLineString
import io.github.dellisd.spatialk.geojson.MultiPoint
import io.github.dellisd.spatialk.geojson.MultiPolygon
import io.github.dellisd.spatialk.geojson.Point
import io.github.dellisd.spatialk.geojson.Polygon
import io.github.dellisd.spatialk.geojson.Position
import kotlin.jvm.JvmName

@GeoJsonDsl
Expand All @@ -21,8 +21,7 @@ abstract class GeometryDsl<T : Geometry> protected constructor(var bbox: Boundin

@GeoJsonDsl
class PointDsl(private var coordinates: Position) : GeometryDsl<Point>() {
override fun create(): Point =
Point(coordinates, bbox)
override fun create(): Point = Point(coordinates, bbox)
}

@GeoJsonDsl
Expand All @@ -31,19 +30,17 @@ inline fun point(
latitude: Double,
altitude: Double? = null,
block: PointDsl.() -> Unit = {}
): Point =
PointDsl(
Position(
longitude,
latitude,
altitude
)
).apply(block).create()
): Point = PointDsl(
Position(
longitude,
latitude,
altitude
)
).apply(block).create()

@GeoJsonDsl
class MultiPointDsl(private val points: MutableList<Position> = mutableListOf()) : GeometryDsl<MultiPoint>() {
override fun create(): MultiPoint =
MultiPoint(points, bbox)
override fun create(): MultiPoint = MultiPoint(points, bbox)

operator fun Position.unaryPlus() {
points.add(this)
Expand All @@ -64,8 +61,7 @@ inline fun multiPoint(block: MultiPointDsl.() -> Unit): MultiPoint = MultiPointD

@GeoJsonDsl
class LineStringDsl(internal val points: MutableList<Position> = mutableListOf()) : GeometryDsl<LineString>() {
override fun create(): LineString =
LineString(points, bbox)
override fun create(): LineString = LineString(points, bbox)

operator fun Position.unaryPlus() {
points.add(this)
Expand All @@ -87,8 +83,7 @@ inline fun lineString(block: LineStringDsl.() -> Unit) = LineStringDsl()
@GeoJsonDsl
class MultiLineStringDsl(private val coordinates: MutableList<List<Position>> = mutableListOf()) :
GeometryDsl<MultiLineString>() {
override fun create(): MultiLineString =
MultiLineString(coordinates)
override fun create(): MultiLineString = MultiLineString(coordinates)

inline fun lineString(block: LineStringDsl.() -> Unit) {
+LineStringDsl().apply(block).create()
Expand All @@ -105,8 +100,7 @@ inline fun multiLineString(block: MultiLineStringDsl.() -> Unit) = MultiLineStri

@GeoJsonDsl
class PolygonDsl(internal val coordinates: MutableList<List<Position>> = mutableListOf()) : GeometryDsl<Polygon>() {
override fun create(): Polygon =
Polygon(coordinates, bbox)
override fun create(): Polygon = Polygon(coordinates, bbox)

inner class RingDsl(internal val points: MutableList<Position> = mutableListOf()) {
operator fun Position.unaryPlus() {
Expand Down Expand Up @@ -146,8 +140,7 @@ inline fun polygon(block: PolygonDsl.() -> Unit) = PolygonDsl()
@GeoJsonDsl
class MultiPolygonDsl(private val coordinates: MutableList<List<List<Position>>> = mutableListOf()) :
GeometryDsl<MultiPolygon>() {
override fun create(): MultiPolygon =
MultiPolygon(coordinates, bbox)
override fun create(): MultiPolygon = MultiPolygon(coordinates, bbox)

inline fun polygon(block: PolygonDsl.() -> Unit) {
+PolygonDsl().apply(block).create()
Expand All @@ -156,7 +149,6 @@ class MultiPolygonDsl(private val coordinates: MutableList<List<List<Position>>>
operator fun Polygon.unaryPlus() {
this@MultiPolygonDsl.coordinates.add(this.coordinates)
}

}

@GeoJsonDsl
Expand All @@ -166,8 +158,7 @@ inline fun multiPolygon(block: MultiPolygonDsl.() -> Unit) = MultiPolygonDsl()
@GeoJsonDsl
class GeometryCollectionDsl(private val geometries: MutableList<Geometry> = mutableListOf()) :
GeometryDsl<GeometryCollection>() {
override fun create(): GeometryCollection =
GeometryCollection(geometries)
override fun create(): GeometryCollection = GeometryCollection(geometries)

operator fun Geometry.unaryPlus() {
geometries.add(this)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ object BoundingBoxSerializer : KSerializer<BoundingBox> {
return when (array.size) {
ARRAY_SIZE_2D -> {
BoundingBox(
array[0].jsonPrimitive.double, array[1].jsonPrimitive.double,
array[2].jsonPrimitive.double, array[3].jsonPrimitive.double
array[0].jsonPrimitive.double,
array[1].jsonPrimitive.double,
array[2].jsonPrimitive.double,
array[3].jsonPrimitive.double
)
}
ARRAY_SIZE_3D -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,11 @@ object GeometrySerializer : KSerializer<Geometry> {
"coordinates",
buildJsonArray {
coordinates.forEach { line ->
add(buildJsonArray {
line.forEach { position -> add(position.toJsonArray()) }
})
add(
buildJsonArray {
line.forEach { position -> add(position.toJsonArray()) }
}
)
}
}
)
Expand All @@ -87,9 +89,11 @@ object GeometrySerializer : KSerializer<Geometry> {
"coordinates",
buildJsonArray {
coordinates.forEach { ring ->
add(buildJsonArray {
ring.forEach { position -> add(position.toJsonArray()) }
})
add(
buildJsonArray {
ring.forEach { position -> add(position.toJsonArray()) }
}
)
}
}
)
Expand All @@ -100,13 +104,17 @@ object GeometrySerializer : KSerializer<Geometry> {
"coordinates",
buildJsonArray {
coordinates.forEach { polygon ->
add(buildJsonArray {
polygon.forEach { ring ->
add(buildJsonArray {
ring.forEach { position -> add(position.toJsonArray()) }
})
add(
buildJsonArray {
polygon.forEach { ring ->
add(
buildJsonArray {
ring.forEach { position -> add(position.toJsonArray()) }
}
)
}
}
})
)
}
}
)
Expand All @@ -127,7 +135,6 @@ object GeometrySerializer : KSerializer<Geometry> {
bbox?.let { put("bbox", it.toJsonArray()) }
}


private fun Position.toJsonArray(): JsonArray = buildJsonArray {
add(JsonPrimitive(longitude))
add(JsonPrimitive(latitude))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package io.github.dellisd.spatialk.geojson.serialization

import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerializationException
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.JsonDecoder
import kotlinx.serialization.json.JsonEncoder

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ import io.github.dellisd.spatialk.geojson.BoundingBox
import io.github.dellisd.spatialk.geojson.Feature
import io.github.dellisd.spatialk.geojson.Position
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.buildJsonArray
import kotlinx.serialization.json.double
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonPrimitive

internal fun DoubleArray.jsonJoin(transform: ((Double) -> CharSequence)? = null) =
Expand All @@ -22,5 +20,4 @@ internal fun Feature.idProp(): String = if (this.id == null) "" else """"id":"${
internal fun JsonArray.toPosition(): Position =
Position(this[0].jsonPrimitive.double, this[1].jsonPrimitive.double, this.getOrNull(2)?.jsonPrimitive?.double)

internal fun JsonArray.toBbox(): BoundingBox =
BoundingBox(this.map { it.jsonPrimitive.double }.toDoubleArray())
internal fun JsonArray.toBbox(): BoundingBox = BoundingBox(this.map { it.jsonPrimitive.double }.toDoubleArray())
Original file line number Diff line number Diff line change
Expand Up @@ -74,15 +74,17 @@ class SerializationTests {
BoundingBox(
Position(-10.5, -10.5),
Position(10.5, 10.5)
), bbox
),
bbox
)

val bbox3D = Json.decodeFromString(BoundingBox.serializer(), "[-10.5,-10.5,-100.8,10.5,10.5,5.5]")
assertEquals(
BoundingBox(
Position(-10.5, -10.5, -100.8),
Position(10.5, 10.5, 5.5)
), bbox3D
),
bbox3D
)

assertFailsWith<SerializationException> {
Expand Down Expand Up @@ -158,7 +160,9 @@ class SerializationTests {
@Suppress("MaxLineLength")
fun testDeserializeMultiLineString() {
val multiLineString =
MultiLineString.fromJson("""{"type":"MultiLineString","coordinates":[[[12.3,45.6],[78.9,12.3]],[[87.6,54.3],[21.9,56.4]]]}""")
MultiLineString.fromJson(
"""{"type":"MultiLineString","coordinates":[[[12.3,45.6],[78.9,12.3]],[[87.6,54.3],[21.9,56.4]]]}"""
)
assertEquals(
MultiLineString(
listOf(Position(12.3, 45.6), Position(78.9, 12.3)),
Expand Down Expand Up @@ -336,7 +340,6 @@ class SerializationTests {
.trimMargin()
.replace("\n", "")


assertEquals(json, collection.json(), "GeometryCollection")
assertEquals(json, Json.encodeToString(collection), "GeometryCollection")
}
Expand Down
Loading

0 comments on commit 8c56010

Please sign in to comment.