Lorenz 0.5.0
Lorenz 0.5.0 has enjoyed a long development process (beginning the 1st of September!),
and packs a bundle of cool changes. The most notable being the change of package, from
me.jamiemansfield.lorenz
to org.cadixdev.lorenz
.
Modularisation
The long put-off modularisation has finally arrived - with the Enigma, JAM, and Kin mapping formats being given their own modules.
- Enigma:
org.cadixdev:lorenz-io-enigma:0.5.0
- JAM:
org.cadixdev:lorenz-io-jam:0.5.0
- Kin:
org.cadixdev:lorenz-io-kin:0.5.0
Mapping formats can be introduced through service providers, and MappingFormats
will
populate a registry with all the formats found. You can get a mapping format, like the
following:
final MappingFormat enigma = MappingFormats.byId("enigma");
final MappingFormat jam = MappingFormats.byId("jam");
final MappingFormat kin = MappingFormats.byId("kin");
Merging and reversing
Mapping sets can now be reversed (A->B
-> B->A
), and mapping sets merged
(A->B
+ B->C
= A->C
). This can be achieved like the following.
// let a be a MappingSet
// let b be a MappingSet
final MappingSet reversed = a.reverse();
final MappingSet merged = a.merge(b);
Extension Data
Lorenz now supports adding extension data to the mapping model (no existing formats serialise this information).
static final ExtensionKey<String> EXTRA_NAME = new ExtensionKey<>(String.class, "extra_name");
final MappingSet mappings = new MappingSet();
mappings.set(EXTRA_NAME, "Beep Boop");
mappings.get(EXTRA_NAME).get(); // Beep Boop