From 3516109ad69b4c5cc7c730b81bb287c5cabc039a Mon Sep 17 00:00:00 2001 From: Georgii Gavrichev Date: Wed, 26 Sep 2018 10:04:32 +0200 Subject: [PATCH] Added README.md --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..5163205b --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +# DataFixerUpper +A set of utilities designed for incremental building, merging and optimization of data transformations. Created for converting the game data for Minecraft: Java Edition between different versions of the game. + +## Gradle +First include our repository: +```groovy +maven { + url "https://libraries.minecraft.net" +} +``` + +And then use this library (change `(the latest version)` to the latest version!): +```groovy +compile 'com.mojang:datafixerupper:(the latest version)' +``` + +## Maven +First include our repository: +```xml + + minecraft-libraries + Minecraft Libraries + https://libraries.minecraft.net + +``` + +And then use this library (change `(the latest version)` to the latest version!): +```xml + + com.mojang + datafixerupper + (the latest version) + +``` + +# Usage +Core data types are Schema and DataFix: Schema is a set of type definitions specifying what data types the system is interested in and how they relate to each other, DataFix is is a rewrite rule between types (see [references](#references) below). DataFixerBuilder takes a list of schemas and fixes converting between those schemas, and creates an optimized converter between the types describes in those schemas. DSL is a class with building blocks used to create schemas and fixes. + +# Contributing +Contributions are suspended until we have a process in place to handle them. + +Most contributions will require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, +and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +# References +## Optimizing functions + Cunha, A., & Pinto, J. S. (2005). Point-free program transformation + Lämmel, R., Visser, E., & Visser, J. (2002). The essence of strategic programming + +## How to handle recursive types + Cunha, A., & Pacheco, H. (2011). Algebraic specialization of generic functions for recursive types + Yakushev, A. R., Holdermans, S., Löh, A., & Jeuring, J. (2009, August). Generic programming with fixed points for mutually recursive datatypes + Magalhães, J. P., & Löh, A. (2012). A formal comparison of approaches to datatype-generic programming + +## Optics + Pickering, M., Gibbons, J., & Wu, N. (2017). Profunctor Optics: Modular Data Accessors + Pacheco, H., & Cunha, A. (2010, June). Generic point-free lenses + +## Tying it together + Cunha, A., Oliveira, J. N., & Visser, J. (2006, August). Type-safe two-level data transformation + Cunha, A., & Visser, J. (2011). Transformation of structure-shy programs with application to XPath queries and strategic functions + Pacheco, H., & Cunha, A. (2011, January). Calculating with lenses: optimising bidirectional transformations