ed-flanagan / riot_lor Goto Github PK
View Code? Open in Web Editor NEWElixir library to encode/decode Legend of Runterra deck codes
License: MIT License
Elixir library to encode/decode Legend of Runterra deck codes
License: MIT License
The app name is :riot_lor
; however, our "root" module is Riot
.
According to https://hexdocs.pm/elixir/main/code-anti-patterns.html#namespace-trespassing this may be considered "namespace trespassing"
This anti-pattern manifests when a package author or a library defines modules outside of its "namespace". A library should use its name as a "prefix" for all of its modules. For example, a package named :my_lib should define all of its modules within the MyLib namespace, such as MyLib.User, MyLib.SubModule, MyLib.Application, and MyLib itself.
This suggests that the "namespace" should be something like RiotLoR
. There isn't an official Riot
namespace, but I do not wish to claim it. I'd rather keep that namespace open and have my own, distinct, namespace. This is based on this example:
Even if Plug does not currently define a Plug.Auth module, it may add such a module in the future, which would ultimately conflict with plug_auth's definition.
Further, this library is specific to Runeterra, i.e. the LoR
. However, if I choose to extend my development to something beyond Runeterra, RiotLoR
isn't a great prefix. So, based on this example:
If you are the maintainer for both plug and plug_auth, then you may allow plug_auth to define modules with the Plug namespace, such as Plug.Auth. However, you are responsible for avoiding or managing any conflicts that may arise in the future
It may be prudent to come up with a common, more generic, prefix.
E.g. say I have to libraries: one for Runeterra deckcodes and one for the Riot API. I may desire to have a common prefix, say MyRiotLib
. I can then have a common prefix across libraries, i.e. MyRiotLib.Runeterra
and MyRiotLib.API
.
MyRiotLib
is not an app reference itself, but can be a common prefix, like Plug
. The respective app names may be something like :myriotlib_runeterra
and :myriotlib_api
This is a major change and will require a major version update. Further, there may be implications of changing the app name for Hex
In
riot_lor/lib/riot/util/varint/leb128.ex
Lines 108 to 110 in 2909ba3
-0
is equivalent to 0
.
OTP 27 will 0.0
will no longer be exactly equivalent to -0.0
.12
The update is for floating point 0's, so this is likely moot. But just wanted to have an issue for when Elixir v1.17 is released and we can test OTP 27
I've had a branch on my laptop for months, I need to finish and push
I started this project just for fun -- practice some Elixir and explore Riot's deck code implementation. Since it was for fun, I rolled my own varint implementation, not looking for pre-existing libraries. However, the implementation is not project specific and feels out of place within this project (to me). Maybe it makes sense to split out into its own package?
The implementation, as is, is fairly generic, albeit lacking in some possible features/functions. Further, I don't want to litter the ecosystem with Yet Another library. Some other implementations I'm aware of:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.