Skip to content

Commit

Permalink
refactored abstract parser
Browse files Browse the repository at this point in the history
  • Loading branch information
agolovenko committed Aug 25, 2022
1 parent b068e21 commit 2daf218
Show file tree
Hide file tree
Showing 9 changed files with 14 additions and 12 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Some notable features:
## Some sample code to get a taste

```sbt
libraryDependencies += "io.github.agolovenko" %% "avro-tools-json" % "0.6.0"
libraryDependencies += "io.github.agolovenko" %% "avro-tools-json" % "0.6.1"
```

```scala
Expand Down
2 changes: 1 addition & 1 deletion core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Base classes and utilities for Avro conversion projects.
### build.sbt:

```sbt
libraryDependencies += "io.github.agolovenko" %% "avro-tools-core" % "0.6.0"
libraryDependencies += "io.github.agolovenko" %% "avro-tools-core" % "0.6.1"

```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ import scala.collection.compat._
import scala.jdk.CollectionConverters._
import scala.util.control.NonFatal

class AbstractParser(stringParsers: PartialFunction[ParserContext, Any], validations: PartialFunction[ValidationContext, Unit]) {
abstract class AbstractParser[Input](stringParsers: PartialFunction[ParserContext, Any], validations: PartialFunction[ValidationContext, Unit]) {
private val liftedParsers = stringParsers.lift
private val liftedValidations = validations.lift

def apply(data: Input): GenericData.Record

protected def parseString(str: String, schema: Schema)(implicit path: Path): Any =
if (schema.getType == STRING || schema.getType == ENUM) str
else {
Expand Down
2 changes: 1 addition & 1 deletion csv/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ and `2.13`
### build.sbt:

```sbt
libraryDependencies += "io.github.agolovenko" %% "avro-tools-csv" % "0.6.0"
libraryDependencies += "io.github.agolovenko" %% "avro-tools-csv" % "0.6.1"
```

### code:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ class CsvParser(
stringParsers: PartialFunction[ParserContext, Any] = PartialFunction.empty,
validations: PartialFunction[ValidationContext, Unit] = PartialFunction.empty,
renameRules: RenameRules = RenameRules.empty
) extends AbstractParser(stringParsers, validations) {
def apply(data: CsvRow): GenericData.Record = {
) extends AbstractParser[CsvRow](stringParsers, validations) {
override def apply(data: CsvRow): GenericData.Record = {
implicit val path: Path = Path.empty
if (schema.getType == RECORD)
readRecord(data, schema, defaultValue = None)
Expand Down
2 changes: 1 addition & 1 deletion json/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ and `2.13`
### build.sbt:

```sbt
libraryDependencies += "io.github.agolovenko" %% "avro-tools-json" % "0.6.0"
libraryDependencies += "io.github.agolovenko" %% "avro-tools-json" % "0.6.1"
```

### code:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ class JsonParser(
stringParsers: PartialFunction[ParserContext, Any] = PartialFunction.empty,
validations: PartialFunction[ValidationContext, Unit] = PartialFunction.empty,
renameRules: RenameRules = RenameRules.empty
) extends AbstractParser(stringParsers, validations) {
def apply(data: JsValue): GenericData.Record = {
) extends AbstractParser[JsValue](stringParsers, validations) {
override def apply(data: JsValue): GenericData.Record = {
implicit val path: Path = Path.empty
if (schema.getType == RECORD)
readAny(JsDefined(data), schema, defaultValue = None).asInstanceOf[GenericData.Record]
Expand Down
2 changes: 1 addition & 1 deletion xml/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Set of tools for XML to Avro conversions written in Scala using scala-xml. Avail
### build.sbt:

```sbt
libraryDependencies += "io.github.agolovenko" %% "avro-tools-xml" % "0.6.0"
libraryDependencies += "io.github.agolovenko" %% "avro-tools-xml" % "0.6.1"
```

### code:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ class XmlParser(
stringParsers: PartialFunction[ParserContext, Any] = PartialFunction.empty,
validations: PartialFunction[ValidationContext, Unit] = PartialFunction.empty,
renameRules: RenameRules = RenameRules.empty
) extends AbstractParser(stringParsers, validations) {
def apply(data: Elem): GenericData.Record = {
) extends AbstractParser[Elem](stringParsers, validations) {
override def apply(data: Elem): GenericData.Record = {
implicit val path: Path = Path.empty
if (schema.getType == RECORD)
if (schema.getName == data.label) readAny(data, attributes = None, schema, defaultValue = None).asInstanceOf[GenericData.Record]
Expand Down

0 comments on commit 2daf218

Please sign in to comment.