Skip to content

Commit

Permalink
Merge pull request #340 from lolgab/support-scala-native
Browse files Browse the repository at this point in the history
Support Scala Native
  • Loading branch information
rossabaker authored Nov 14, 2021
2 parents 470613c + 7606092 commit 7684202
Show file tree
Hide file tree
Showing 11 changed files with 81 additions and 4 deletions.
4 changes: 4 additions & 0 deletions ast/native/src/main/scala/jawn/ast/JParserPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.typelevel.jawn
package ast

private[jawn] trait JParserPlatform
4 changes: 4 additions & 0 deletions ast/native/src/test/scala/jawn/ast/AstCheckPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.typelevel.jawn
package ast

private[jawn] trait AstCheckPlatform
4 changes: 4 additions & 0 deletions ast/native/src/test/scala/jawn/ast/AstTestPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.typelevel.jawn
package ast

private[jawn] trait AstTestPlatform
19 changes: 15 additions & 4 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,12 @@ lazy val jawnSettingsJS = List(
_.withAsInstanceOfs(org.scalajs.linker.interface.CheckedBehavior.Unchecked)
.withArrayIndexOutOfBounds(org.scalajs.linker.interface.CheckedBehavior.Unchecked)
)
},
}
)
lazy val jawnSettingsNative = Seq(
crossScalaVersions := crossScalaVersions.value.filterNot(ScalaArtifacts.isScala3)
)
lazy val jawnSettingsJSNative = Seq(
mimaPreviousArtifacts := Set()
)

Expand All @@ -92,17 +97,19 @@ lazy val root = project
.settings(crossScalaVersions := List())
.settings(noPublish: _*)

lazy val parser = crossProject(JVMPlatform, JSPlatform)
lazy val parser = crossProject(JVMPlatform, JSPlatform, NativePlatform)
.crossType(CrossType.Full)
.in(file("parser"))
.settings(name := "parser")
.settings(moduleName := "jawn-parser")
.settings(jawnSettings: _*)
.jvmSettings(jawnSettingsJVM: _*)
.jsSettings(jawnSettingsJS: _*)
.nativeSettings(jawnSettingsNative: _*)
.platformsSettings(JSPlatform, NativePlatform)(jawnSettingsJSNative)
.disablePlugins(JmhPlugin)

lazy val util = crossProject(JVMPlatform, JSPlatform)
lazy val util = crossProject(JVMPlatform, JSPlatform, NativePlatform)
.crossType(CrossType.Full)
.in(file("util"))
.dependsOn(parser % "compile->compile;test->test")
Expand All @@ -111,9 +118,11 @@ lazy val util = crossProject(JVMPlatform, JSPlatform)
.settings(jawnSettings: _*)
.jvmSettings(jawnSettingsJVM: _*)
.jsSettings(jawnSettingsJS: _*)
.nativeSettings(jawnSettingsNative: _*)
.platformsSettings(JSPlatform, NativePlatform)(jawnSettingsJSNative)
.disablePlugins(JmhPlugin)

lazy val ast = crossProject(JVMPlatform, JSPlatform)
lazy val ast = crossProject(JVMPlatform, JSPlatform, NativePlatform)
.crossType(CrossType.Full)
.in(file("ast"))
.dependsOn(parser % "compile->compile;test->test")
Expand All @@ -123,6 +132,8 @@ lazy val ast = crossProject(JVMPlatform, JSPlatform)
.settings(jawnSettings: _*)
.jvmSettings(jawnSettingsJVM: _*)
.jsSettings(jawnSettingsJS: _*)
.nativeSettings(jawnSettingsNative: _*)
.platformsSettings(JSPlatform, NativePlatform)(jawnSettingsJSNative)
.disablePlugins(JmhPlugin)

lazy val benchmark = project
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package org.typelevel.jawn

private[jawn] trait ParserCompanionPlatform
26 changes: 26 additions & 0 deletions parser/native/src/main/scala/jawn/SupportParser.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.typelevel.jawn

import java.nio.ByteBuffer
import scala.util.Try

trait SupportParser[J] {
implicit def facade: Facade[J]

def parseUnsafe(s: String): J =
new StringParser(s).parse()

def parseFromString(s: String): Try[J] =
Try(new StringParser[J](s).parse())

def parseFromCharSequence(cs: CharSequence): Try[J] =
Try(new CharSequenceParser[J](cs).parse())

def parseFromByteBuffer(buf: ByteBuffer): Try[J] =
Try(new ByteBufferParser[J](buf).parse())

def parseFromByteArray(src: Array[Byte]): Try[J] =
Try(new ByteArrayParser[J](src).parse())

def async(mode: AsyncParser.Mode): AsyncParser[J] =
AsyncParser[J](mode)
}
3 changes: 3 additions & 0 deletions parser/native/src/main/scala/jawn/SyntaxPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package org.typelevel.jawn

private[jawn] trait SyntaxPlatform
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.typelevel.jawn
package parser

private[jawn] trait JNumIndexCheckPlatform
12 changes: 12 additions & 0 deletions parser/native/src/test/scala/jawn/SyntaxCheckPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.typelevel.jawn
package parser

import org.scalacheck.Prop

private[jawn] trait SyntaxCheckPlatform { self: SyntaxCheck =>

def isValidSyntaxPlatform(s: String): Boolean = true

def testErrorLocPlatform(json: String, line: Int, col: Int): Prop = Prop(true)

}
2 changes: 2 additions & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@ addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.10")
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.1.0")
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.7.0")
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.1.0")
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.0")
4 changes: 4 additions & 0 deletions util/native/src/test/scala/jawn/util/SliceCheckPlatform.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package org.typelevel.jawn
package util

private[jawn] trait SliceCheckPlatform

0 comments on commit 7684202

Please sign in to comment.