Skip to content

Commit fb25564

Browse files
committed
Adopt literally
1 parent 51fbf43 commit fb25564

12 files changed

Lines changed: 84 additions & 10 deletions

File tree

backend/build.sbt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@ ThisBuild / semanticdbEnabled := true
1010
val utils = (project in file("utils"))
1111
.settings(Settings.common)
1212
.settings(
13-
libraryDependencies ++= Dependencies.cats ++ Dependencies.zio ++ Dependencies.scalatest ++ Dependencies.metrics
13+
libraryDependencies ++= Dependencies.cats ++ Dependencies.zio ++ Dependencies.scalatest ++ Dependencies.metrics ++ Dependencies.literally
1414
)
1515

1616
val circeUtils = (project in file("circe-utils"))
17+
.dependsOn(utils)
1718
.settings(Settings.common)
1819
.settings(
1920
libraryDependencies ++= Dependencies.json ++ Dependencies.zio ++ Dependencies.scalatest
2021
)
2122

2223
val dataAccess = (project in file("dataAccess"))
24+
.dependsOn(utils)
2325
.settings(Settings.common)
2426
.settings(
2527
libraryDependencies ++= Dependencies.alleycats ++ Dependencies.cats ++ Dependencies.zio ++ Dependencies.mouse ++ Dependencies.oolong ++ Seq(

backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/optics/JsonOptic.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package ru.tinkoff.tcb.utils.circe.optics
33
import io.circe.ACursor
44
import io.circe.Json
55

6+
import ru.tinkoff.tcb.utils.regex.literals.*
7+
68
final case class JsonOptic private[optics] (private val jsonPath: Seq[PathPart]) {
79
def \(field: String): JsonOptic = new JsonOptic(jsonPath :+ Field(field))
810
def \(index: Int): JsonOptic = new JsonOptic(jsonPath :+ Index(index))
@@ -111,7 +113,7 @@ final case class JsonOptic private[optics] (private val jsonPath: Seq[PathPart])
111113
}
112114

113115
object JsonOptic {
114-
private val IndexPattern = """\[(\d+)\]""".r
116+
private val IndexPattern = rx"""\[(\d+)\]"""
115117

116118
def forPath(path: String*): JsonOptic = new JsonOptic(path.map(Field(_)))
117119
def forIndex(index: Int): JsonOptic = new JsonOptic(Seq(Index(index)))

backend/circe-utils/src/main/scala/ru/tinkoff/tcb/utils/circe/package.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import cats.instances.vector.*
77
import io.circe.*
88

99
import ru.tinkoff.tcb.utils.circe.optics.JsonOptic
10+
import ru.tinkoff.tcb.utils.regex.literals.*
1011

1112
package object circe {
1213
object JsonString {
@@ -71,7 +72,7 @@ package object circe {
7172
)
7273

7374
def camelizeKeys: Json =
74-
transformKeys(in => "_([a-z\\d])".r.replaceAllIn(in, _.group(1).toUpperCase)).result
75+
transformKeys(in => rx"_([a-z\d])".replaceAllIn(in, _.group(1).toUpperCase)).result
7576

7677
/**
7778
* Merges two Json objects

backend/dataAccess/src/main/scala/ru/tinkoff/tcb/bson/optics/BsonOptic.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import scala.util.Try
55
import oolong.bson.*
66
import org.mongodb.scala.bson.*
77

8+
import ru.tinkoff.tcb.utils.regex.literals.*
9+
810
final case class BsonOptic private[optics] (private val BsonPath: Seq[Either[Int, String]]) {
911
def \(field: String): BsonOptic = new BsonOptic(BsonPath :+ Right(field))
1012
def \(index: Int): BsonOptic = new BsonOptic(BsonPath :+ Left(index))
@@ -84,7 +86,7 @@ final case class BsonOptic private[optics] (private val BsonPath: Seq[Either[Int
8486
}
8587

8688
object BsonOptic {
87-
private val Index = """\[(\d+)\]""".r
89+
private val Index = rx"""\[(\d+)\]"""
8890

8991
def forPath(path: String*): BsonOptic = new BsonOptic(path.map(Right(_)))
9092
def forIndex(index: Int): BsonOptic = new BsonOptic(Seq(Left(index)))

backend/dataAccess/src/test/scala/ru/tinkoff/tcb/bson/RoundRobinSpec.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package ru.tinkoff.tcb.bson
33
import scala.util.matching.Regex
44

55
import oolong.bson.*
6+
7+
import ru.tinkoff.tcb.utils.regex.literals.*
68
import oolong.bson.given
79
import org.scalactic.Equality
810
import org.scalatest.TryValues
@@ -18,7 +20,7 @@ class RoundRobinSpec extends AnyFunSuite with Matchers with TryValues {
1820
}
1921

2022
test("Regex serialization") {
21-
val group = "<(?<name>[a-zA-Z0-9]+)>".r
23+
val group = rx"<(?<name>[a-zA-Z0-9]+)>"
2224

2325
val sut = BsonDecoder[Regex].fromBson(group.bson)
2426

backend/mockingbird/src/main/scala/ru/tinkoff/tcb/mockingbird/model/GrpcStub.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import ru.tinkoff.tcb.protocol.json.*
2323
import ru.tinkoff.tcb.protocol.schema.*
2424
import ru.tinkoff.tcb.utils.circe.optics.JsonOptic
2525
import ru.tinkoff.tcb.utils.id.SID
26+
import ru.tinkoff.tcb.utils.regex.literals.*
2627
import ru.tinkoff.tcb.validation.Rule
2728

2829
final case class GrpcStub(
@@ -45,7 +46,7 @@ final case class GrpcStub(
4546
Schema
4647

4748
object GrpcStub {
48-
private val indexRegex = "\\[([\\d]+)\\]".r
49+
private val indexRegex = rx"""\[(\d+)\]"""
4950

5051
inline given QueryMeta[GrpcStub] = queryMeta(_.id -> "_id")
5152

backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/regex/package.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package ru.tinkoff.tcb.utils
22

33
import scala.util.matching.Regex
44

5+
import ru.tinkoff.tcb.utils.regex.literals.*
6+
57
package object regex {
6-
private val Group = "<(?<name>[a-zA-Z0-9]+)>".r
8+
private val Group = rx"<(?<name>[a-zA-Z0-9]+)>"
79

810
implicit class RegexExt(private val rx: Regex) {
911
def groups: Seq[String] = Group.findAllMatchIn(rx.pattern.pattern()).map(_.group("name")).to(Seq)

backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/json/package.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ import ru.tinkoff.tcb.utils.circe.*
1313
import ru.tinkoff.tcb.utils.circe.optics.JsonOptic
1414
import ru.tinkoff.tcb.utils.json.json2StringFolder
1515
import ru.tinkoff.tcb.utils.regex.OneOrMore
16+
import ru.tinkoff.tcb.utils.regex.literals.*
1617
import ru.tinkoff.tcb.utils.resource.Resource
1718
import ru.tinkoff.tcb.utils.sandboxing.GraalJsSandbox
1819
import ru.tinkoff.tcb.utils.sandboxing.conversion.circe2js
1920
import ru.tinkoff.tcb.utils.transformation.xml.nodeTemplater
2021

2122
package object json {
22-
private val JORx = """\$([\:~])?\{([\p{L}\d\.\[\]\-_]+)\}""".r
23+
private val JORx = rx"""\$$([\:~])?\{([\p{L}\d\.\[\]\-_]+)\}"""
2324

2425
private object JORxs extends OneOrMore(JORx)
2526

backend/mockingbird/src/main/scala/ru/tinkoff/tcb/utils/transformation/package.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package ru.tinkoff.tcb.utils
22

33
import scala.util.matching.Regex
44

5+
import ru.tinkoff.tcb.utils.regex.literals.*
6+
57
package object transformation {
6-
val SubstRx: Regex = """\$\{(.+?)\}""".r
7-
val CodeRx: Regex = """%\{(.+?)\}""".r
8+
val SubstRx: Regex = rx"""\$$\{(.+?)\}"""
9+
val CodeRx: Regex = rx"""%\{(.+?)\}"""
810
}

backend/project/Dependencies.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ object Dependencies {
9191
"io.github.mweirauch" % "micrometer-jvm-extras" % "0.2.2"
9292
)
9393

94+
lazy val literally = Seq(
95+
"org.typelevel" %% "literally" % "1.2.0"
96+
)
97+
9498
lazy val glass = Seq(
9599
"glass-core",
96100
"glass-macro",

0 commit comments

Comments
 (0)