Skip to content

KacperFKorban/GUInep

Repository files navigation

guinep Scala version support

GUInep

Guinep are small tropical fruits from the Caribbean and Central/Southern America. They are described to taste like a cross between Lime and Lychee.

Automatic UI forms for Scala 3 functions

Example

def upperCaseText(text: String): String =
  text.toUpperCase

@main
def run =
  guinep.web(upperCaseText)

This will start a local web server with auto generated endpoints for running all listed functions. And an auto generated front-end with a form for each function.

Usage (with build tools)

sbt

libraryDependencies ++= Seq(
  "io.github.kacperfkorban" %% "guinep-web" % "version_from_releases"
)

scala-cli

//> using lib "io.github.kacperfkorban::guinep-web:version_from_releases"

Usage (in code)

GUInep only exposes one function guinep.web which takes some number of functions as arguments.

def upperCaseText(text: String): String =
  text.toUpperCase

def rollDice(sides: Int): Int =
  scala.util.Random.nextInt(sides) + 1

@main
def run =
  guinep.web(
    upperCaseText,
    rollDice
  )

Demo

Current limitations

Currently GUInep doesn't support:

  • Functions with multiple parameter lists (and by extension - extension methods) - #33
  • Fancier GADTs with unobvious inheritance, type bounds and variance - #30
  • Union and intersection types - #44
  • Opaque types - #49

Contributing

If you have any ideas on how to improve GUInep, feel free to open an issue.

All bug reports and feature requests are highly appreciated.