Skip to content

dimensia/scala-datetime

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scala Date&Time

Goals: 
 - Perfect Scala integration (Pattern matching, case classes, implicits, builders & factories, 
   collection integration, default and names parameters, etc. ...).
 - Code shall be Scala only to be reasonably platform-independent.

Status:
 - It does compile! But if you need something useable NOW, this is not the place to look.
 - The source code is based on the Date&Time library (JSR-310) and was translated to Scala 
   (mostly automatic, with quite some help from IntelliJ's "Convert Java to Scala" functionality).
 - All code is syntactically valid Scala code.
 - Overloaded methods were replaced by methods with default arguments.
 - java.io.Serializable was replaced by scala.Serializable.
 - java.lang.Comparable was replaced by scala.math.Ordered.
 - Enums have been replaced by objects extending sealed/abstract classes. 
   Bug #4023 blocks further progress. 
 - Class hierarchy and naming has not yet been changed.
 - Most of the static initializers and classes with multiple constructors are fixed, 
   but a few tricky ones remain (especially exceptions).
 - Usages of BigInteger/BigDecimal are replaced by BigInt/BigDecimal.
 - Some algorithms could need further cleanup.
 - Instances of Java's "constructor arguments + field + getter" pattern are already replaced 
   by class Foo(val bar: ...) or similiar.
 - The code has a few places where Java collections instead of Scala collections are used.
 - A few places with "continue" need investigation to be replaced.
 - The Scala packages still have the "javax.time" namespace.
 - The code uses almost no implicits. These will be added in the future (think of "5.seconds" or "7.days"), 
   when things are a bit further down the road.
 - Methods returning something like "Integer (or null)" have been replaced by "Option[Int]".
 - There are some classes which do some "reification" magic. 
   These might be replaced by a simple Manifest.
 - ResourceZoneRulesDataProvider, StandardZoneRules, PeriodUnit and 
   TZDBZoneRulesCompiler need additional attention.
 - JavaDoc-style comments need to converted to ScalaDoc-style comments.

I did the whole thing for fun and curiosity.

Advice, comments, criticism, contributions and help is welcome!

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 100.0%