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.

About

Automatic UI forms for Scala 3 functions

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors