Coder Social home page Coder Social logo

rhein's Introduction

Rhein

FRP Data Propagation Library

Rhein is a data-propagation library based on Functional Reactive Programming abstractions such as Events and Behaviours that helps you to develop interactive applications using a conceptual-declarative approach that brings numerous benefits to the quality of the appli- cations and also solves several problems the mainstream methods of development of this type of software produce.

Thesis / Report

Read the report here

Examples / Demo

https://torgeadelin.github.io/rhein/

Requirements

The following are required:

  • Scala 2.12.8
  • sbt 1.3.2

Rhein uses these dependencies which are already specified in the build.sbt file:

  • scala-js 0.6.31
  • scalajs-dom 0.9.7
  • scalatags 0.7.0

Instructions

Note! The package is not deployed to any dependency management server. You will have to add the rhein folder inside your project to use Rhein.

  1. After you've successfully installed sbt on your machine, go to the root directory of the project and run sbt. This process takes a bit longer for the first run, because it downloads all dependencies.

  2. After you have sucessfully launeched the build tool, you now have to choose what you wnat to do. You can either compile the current examples using fastOptJS which generates a javascript file in target/scala-2.12/rhein-fastopt.js. You can add this file in a HTML file, but we already provided a file that has this file linked in src/main/resources/index-opt.html. To run, open this file in a browser. PS! Make sure when you clone the repository, you keep the default name rhein for root directory. If you change the directory name, please note that the exported .js file will be exported with the following filename format rootDirName-fastopt.js. Don't forget to change this in the index-opt.html file if you want to run the code and changed the directory name.

  3. If you decide to create new code, you must import the package using import rhein._. This imports all FRP abstractions available in Rhein. To import the UI Binding library use import rhein.ui._. PS! If you want to use the Bindings from the UI Biding Library, you neeed to import this file in your class using import Bindings._ (make sure you have the ui package imported first).

  4. If you want to render elements in the browser, you must import scalatags and scalajs. The main entry of the program is the Main.scala class. You can change this to any class you want, but make sure you specify which is the main entry in the compiled javascript using @JSExportTopLevel("Main").

  5. To run tests, type testOnly in your sbt.

For more information about scalatags, check this. And For information about ScalaJS check this.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details

Author

Catalin Torge

rhein's People

Contributors

torgeadelin avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.