Pelam's Scala Utility Incubator Library

Pelam's open source utility code incubator and collection.

License

License

Categories

Categories

Scala Languages
GroupId

GroupId

fi.pelam
ArtifactId

ArtifactId

pelam-scala-incubator
Last Version

Last Version

0.1
Release Date

Release Date

Type

Type

jar
Description

Description

Pelam's Scala Utility Incubator Library
Pelam's open source utility code incubator and collection.
Project URL

Project URL

https://github.com/pelamfi/pelam-scala-incubator/blob/master/readme.md
Source Code Management

Source Code Management

https://github.com/pelamfi/pelam-scala-incubator

Download pelam-scala-incubator

How to add to project

<!-- https://jarcasting.com/artifacts/fi.pelam/pelam-scala-incubator/ -->
<dependency>
    <groupId>fi.pelam</groupId>
    <artifactId>pelam-scala-incubator</artifactId>
    <version>0.1</version>
</dependency>
// https://jarcasting.com/artifacts/fi.pelam/pelam-scala-incubator/
implementation 'fi.pelam:pelam-scala-incubator:0.1'
// https://jarcasting.com/artifacts/fi.pelam/pelam-scala-incubator/
implementation ("fi.pelam:pelam-scala-incubator:0.1")
'fi.pelam:pelam-scala-incubator:jar:0.1'
<dependency org="fi.pelam" name="pelam-scala-incubator" rev="0.1">
  <artifact name="pelam-scala-incubator" type="jar" />
</dependency>
@Grapes(
@Grab(group='fi.pelam', module='pelam-scala-incubator', version='0.1')
)
libraryDependencies += "fi.pelam" % "pelam-scala-incubator" % "0.1"
[fi.pelam/pelam-scala-incubator "0.1"]

Dependencies

compile (8)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.7
org.scala-lang : scala-reflect jar 2.11.7
com.beachape : enumeratum_2.11 jar 1.2.1
com.typesafe.akka : akka-actor_2.11 jar 2.3.7
com.google.code.findbugs : jsr305 jar 3.0.0
com.googlecode.java-diff-utils : diffutils jar 1.3.0
com.google.guava : guava jar 18.0
org.clapper : grizzled-slf4j_2.11 jar 1.0.2

test (2)

Group / Artifact Type Version
ch.qos.logback : logback-classic jar 1.1.2
junit : junit jar 4.12

Project Modules

There are no modules declared in this project.

Pelam Scala Incubator

Build Status

Pelam's open source utility code collection.

I will collect all kinds of useful bits of code here without worrying about their dependencies.

If anyone finds anything here useful or interesting, let me know! I promise to clean up the dependencies of that part and publish it separately.

Listing of different utilities

  • OffensiveFSM -- Standard Akka FSM is defensive, but during development you want a loud signals when the unexpected happens.
  • JavaFXActor -- A marriage between JavaFX and Akka; Using the actor model in UI development is suprisingly handy.
  • Throttle -- Wrap your function in a limiter that executes only after a quiet period.
  • JavaFXNodeDb -- Track nodes in a JavaFX hierarchy and get notified when nodes of interest are added
  • JavaFXImplicits -- Implicit conversions for working with various JavaFX callbacks
  • Rectangle2DUtil -- Some utils for working with JavaFX rectangle objects
  • TransformUtil -- Some utils for working with JavaFX transforms and bounds
  • DiffUtil -- Simple wrappers for java-diff-utils library
  • EitherUtil -- Some operations on Scala Either type: partitionEihers and pullUpEithers
  • EnumLocalizationMapFactory -- Quickly get a map from Enumeratum enum into localized strings loaded from a resource bundle.
  • FormatterUtil -- Convert Java non thread safe formaters into a nice thread safe Scala functions.
  • Memoize -- A simple memoizing functor based on an idea from Stakoverflow
  • RingBuffer -- A fast polling based buffer for communicating between threads. Ideas from LMAX Disruptor.
  • plus some other tiny utility functions waiting to grow and improve

License

Pelam's Scala Incubator library is distributed under the Apache 2.0 license which is available in the included file LICENSE.txt and online.

Maven coordinates

The Maven Central Repository entry is here.

The artifact is available as Scala 2.11 and Scala 2.12 versions.

Gradle

compile 'fi.pelam:pelam-scala-incubator_2.12:0.3'

SBT

libraryDependencies += "fi.pelam" %% "pelam-scala-incubator" % "0.3"

Maven

<dependency>
    <groupId>fi.pelam</groupId>
    <artifactId>pelam-scala-incubator_2.12</artifactId>
    <version>0.3</version>
</dependency>

Current Dependencies

The list of dependencies is pretty random due to this being an "incubator" for possible separate libraries in the future. Let me know if you need something.

  • Akka -- Erlang like Actor model implementation for Scala and Java
    • Used in Akka + JavaFX binding binding utilities
    • Also some utilities built on top of Akka
  • JavaFX -- The new modern Java GUI toolkit
    • Used in Akka + JavaFX binding binding utilities
  • Guava -- Guava the Google Common code library (for CacheBuilder)
    • Used in enumeration to localization bundle mapping utility.
  • Enumeratum -- Nice Java like enums for Scala.
    • Used in enumeration to localization bundle mapping utility.
  • Grizzled-SLF4J Grizzled-SLF4J, a Scala-friendly SLF4J Wrappe
  • Difflib

Building

Currently tested to build with Gradle 5.4.1 and SBT 1.2.8 and Open JDK 12.

TODO

  • The tests don't currently work with SBT due to the JavaFX dependency
  • Complete code examples for each of the utilities
  • At least one test for each util

History of this project

Most of this code was originally developed for a custom project called Ahma. I broke these bits of code off from Ahma as I felt that some of them could become generally useful open source Scala libraries. As a note about the Git history, I just copied the bits of code over from the Ahma project. I did not bother to clean up and bring over the Git history from Ahma.

JavaFX and Java 12 notes

Versions

Version
0.1