scala-native-libyaml


License

License

Categories

Categories

Scala Languages Native Development Tools
GroupId

GroupId

com.tiqwab
ArtifactId

ArtifactId

scala-native-libyaml_native0.3_2.11
Last Version

Last Version

0.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

scala-native-libyaml
scala-native-libyaml
Project URL

Project URL

https://github.com/tiqwab/scala-native-libyaml
Project Organization

Project Organization

com.tiqwab
Source Code Management

Source Code Management

https://github.com/tiqwab/scala-native-libyaml

Download scala-native-libyaml_native0.3_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/com.tiqwab/scala-native-libyaml_native0.3_2.11/ -->
<dependency>
    <groupId>com.tiqwab</groupId>
    <artifactId>scala-native-libyaml_native0.3_2.11</artifactId>
    <version>0.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.tiqwab/scala-native-libyaml_native0.3_2.11/
implementation 'com.tiqwab:scala-native-libyaml_native0.3_2.11:0.0.2'
// https://jarcasting.com/artifacts/com.tiqwab/scala-native-libyaml_native0.3_2.11/
implementation ("com.tiqwab:scala-native-libyaml_native0.3_2.11:0.0.2")
'com.tiqwab:scala-native-libyaml_native0.3_2.11:jar:0.0.2'
<dependency org="com.tiqwab" name="scala-native-libyaml_native0.3_2.11" rev="0.0.2">
  <artifact name="scala-native-libyaml_native0.3_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.tiqwab', module='scala-native-libyaml_native0.3_2.11', version='0.0.2')
)
libraryDependencies += "com.tiqwab" % "scala-native-libyaml_native0.3_2.11" % "0.0.2"
[com.tiqwab/scala-native-libyaml_native0.3_2.11 "0.0.2"]

Dependencies

compile (5)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.12
org.scala-native : nativelib_native0.3_2.11 jar 0.3.8
org.scala-native : javalib_native0.3_2.11 jar 0.3.8
org.scala-native : auxlib_native0.3_2.11 jar 0.3.8
org.scala-native : scalalib_native0.3_2.11 jar 0.3.8

test (2)

Group / Artifact Type Version
org.scala-native : test-interface_native0.3_2.11 jar 0.3.8
io.monix : minitest_native0.3_2.11 jar 2.3.2

Project Modules

There are no modules declared in this project.

scala-native-libyaml

scala-native bindings for libyaml.

Dependency

For build.sbt:

libraryDependencies ++= Seq(
  "com.tiqwab" %%% "scala-native-libyaml" % "0.0.2"
)

Example

A simple example to parse yaml document.

package example

import libyaml.LibYaml
import libyaml.clib._
import libyaml.clib.implicits._

import scala.scalanative.native._

object Main {

  def main(args: Array[String]): Unit = {
    Zone { implicit z =>
      // prepare input yaml
      val inputStr =
        """
          |%YAML 1.1
          |%TAG !yaml! tag:yaml.org,2002:
          |---
          |name: Alice
          |favorites:
          |  - apple
          |  - banana
        """.stripMargin

      val input = toCString(inputStr).cast[Ptr[CUnsignedChar]]
      val size = inputStr.length

      // initialize parser
      val parser = LibYaml.Parser()
      if (yaml_parser_initialize(parser) == 0) {
        stdio.fputs(toCString("failed to initialize parser"), stdio.stderr)
        stdlib.exit(1)
      }

      // set input
      yaml_parser_set_input_string(parser, input, size)

      // parse document
      val document = LibYaml.Document()
      if (yaml_parser_load(parser, document) == 0) {
        stdio.fputs(toCString("failed to parse document\n"), stdio.stderr)
        stdlib.exit(1)
      }

      stdio.printf(toCString("yaml version of document is: %d.%d\n"),
                   document.version_directive.major,
                   document.version_directive.minor)

      // cleanup
      yaml_document_delete(document)
      yaml_parser_delete(parser)
    }
  }

}

See tests for other examples.

License

MIT License.

The function interfaces of scala-native-libyaml are derived from yaml.h in libyaml, which is licensed under MIT License.

Versions

Version
0.0.2
0.0.1